基于ARM9的嵌入式电力监控系统的设计与实现
扫描二维码
随时随地手机看文章
1 系统组成及原理
1.1 数据采集端
如图1所示,整个系统由现场监控终端、GSM网络、数据交换中心,监控中心、移动接收终端五部分组成。
一般情况下,由本地监测系统采用SM业务发送变电所的工况数据。当变电所出现故障时,变电所本地监测系统主动呼叫远程监测计算机并建立数据连接,发送报警信息;根据实际生产中的需要,生产管理人员可以决定何时建立GSM数据电路连接,进行实时监测。
本系统的发送端如图2所示。其中,控制单元的芯片选用S3C2410嵌入式处理器,该处理器是Samsung公司基于ARM公司的ARM920T处理器核、采用0.18 μm制造工艺的32位微控制器。该处理器基本特性:独立的16 KB指令Cache和16 KB数据Cache、MMU、支持TFT的LCD控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的Timer、I/O口、RTC、8路10位ADC、Touch Screen接口、I2C-BUS 接口、I2S-BUS接口、2个USB主机、1个USB设备、SD主机、MMC接口及2路SPI。S3C2410处理器最高可运行在203 MHz频率下。
GPRS模块采用SIMCOM公司出品的工业级模块SIM300C,该模块支持GPRS与内嵌TCP协议。它是一个完整的手机模块,属于移动设备端,负责与GSM、GPRS 网络进行信令交换。通过串口可以实现对它的控制并进行数据传输,包括短信息和GPRS等。该模块需要一张开通GPRS 业务的SIM卡与其配套使用。
1.2 服务器端
鉴于电力系统的特殊性,其监控中心不允许直接接入Internet,所以需要一个数据交换中心来进行数据处理转发。信息采集点的控制器定时或根据监控中心的指令把数据由GSM/GPRS模块经过GSM网络传送到监控中心,监控中心对数据进行储存处理。
1.3 数据发布端
监控中心一旦接收到新的数据,马上通过短消息形式发送到值班人员手机(MT)上。而值班人员也可通过手机向监控中心发出查询请求,监控中心通过认证其权限大小向其发送数据。如图3所示。
2 操作系统定制
设计中嵌入式操作系统选用Linux。Linux是一套免费使用和自由传播的类Unix操作系统,它充分利用了X86 CPU的任务切换机制,实现了真正多任务、多用户环境,允许多个用户同时执行不同的程序,并且可以给紧急任务以较高的优先级,特别适用于嵌入式系统。应用程序开发工具则采用ADS1.2(ARM Developer Suite)[2]。
2.1构建交叉编译环境
由于嵌入式硬件上无法安装所需要的编译器,所以只能借助于PC机,而PC机和嵌入式硬件基于两种不同的处理器类型,因此需要在PC机上生成能够在ARM上运行的软件,这就要求构建交叉编译环境。本设计选用开源Crosstool来构建交叉编译工具链[2]。
2.2 移植Bootloader
Bootloader类似于PC机上的Bios,是系统启动时运行的第一个程序,主要作用就是在操作系统内核运行之前,初始化硬件设备,屏蔽中断,设置启动参数等,为操作系统创造一个良好的环境,然后加载操作系统。本设计同样使用开源项目U-boot。[!--empirenews.page--]
2.3 内核移植
尽管最新的Linux内核已经增加了对S3C2410 CPU的支持,但是仍然需要根据实际需要对内核做一些修改,并且重新配置、编译生成新的内核映像。
2.4 定制根文件系统
根文件系统是指Linux系统启动时所使用的第一个文件系统,在启动内核时需要挂载根文件系统来支持外部设备,以及装载和运行内核模块与应用程序。通常,定制根文件系统需要以下步骤:创建空的目录树、移植BusyBox、选择必要的动态共享库、初始化脚本等。
3 软件设计
3.1 信息采集点与监控中心的通信
GPRS模块的控制通过AT指令完成,而模块与监控中心的通信则由WinSock完成。当信息采集点传送数据时,GPRS模块会根据预先设定在其内部的IP地址来主动访问监控中心服务器,通过防火墙和监控中心建立TCP/IP链路[3]。同时,监控中心维护接入的每个信息采集点的IP地址和序号,并且根据需要定时向某个信息采集点发出数据请求,信息采集点接收到请求后作出响应,完成通信过程[4]。具体协议栈如表1所示。
3.2 监控中心软件结构
监控中心软件结构共分为3层:操作系统和系统软件层、系统软件支持层和基础应用层。
(1) 操作系统和系统软件层
操作系统为使用者屏蔽了底层硬件的具体细节,程序员可以利用底层硬件提供的函数开发包来为上层软件服务。
(2) 系统支持软件层
系统支持软件层包括数据库系统、电力系统模型、数据采集和传输等,其主要功能是实现数据存储和转发,并为上层软件服务。
(3) 基础应用层
基础应用层的主要功能是将采集到的数据进行处理、对调度人员进行管理并通过GUI界面显示出来[5]。
监控中心如图4所示。
3.3 管理中心与调度员的通信
在数据发布端,无线模块通过RS232与上位机进行通信,采用串口异步通信,波特率为9 600 Kb/s。串口程序使用的是MOXA公司的Pcomm串口通信库,Pcomm提供了简单方便的串口操作函数,常用的函数有:
int WINAPI sio_ioctl(int port, int baud, int mode);
//设置串口参数,包括波特率、数据位、停止位等
int WINAPI sio_read(int port, char *buf, int len);
//从输入缓冲区读指定个数的字符
int WINAPI sio_write(int port, char *buf, int len);
//写指定个数的字符到输出缓冲区
int WINAPI sio_cnt_irq(int port, VOID (CALLBACK *func)(int port), int count);
//中断函数,当接收到指定个数字符时响应事件
本系统基于S3C2410平台和Linux操作系统,通过SIM300C经GPRS网络与远程监控中心进行信息交互,传输距离远、可靠性高、实时性强,并且价格低廉,具有很高的实用价值。
参考文献
[1] 汪明虎,欧文盛. ARM嵌入式Linux应用开发入门(第1版)[M].北京:中国电力出版社,2008.
[2] 全茜,郑雪峰.基于GPRS的电力线路监控系统[J].计算机工程与设计, 2005,26(11):3053-3055.
[3] 文志成.GPRS网络技术[M].北京:电子工业出版社,2005.
[4] ANDREW S T. 计算机网络(第4版)[M].北京:清华大学出版社, 2004.
[5] BLANCHETTE J, SUMMERFIELD M著. C++ GUI Qt4 编程(第2版).闫锋欣,译.北京:电子工业出版社.2008.