热度 11
2010-9-1 08:58
1863 次阅读|
0 个评论
摘 要:设汁了基于ARM的智能电表和空调系统参数的多数据监测系统。系统由硬件和软件两部分组成,硬件采用博创公司的嵌入式微控制器PXA270平台,软件使用了Modbus协议读取智能电表和空调端监测数据,上位机利用Linux Socket『舣]络编程和c#编程实现监测。该系统比传统的数据{ 测系统具有更好的安全性和实时性,同时硬件的体积更小,功耗更低,扩展性更慢。 0 引 言 在实际工业控制应用中,经常需要对现场的智能电表、空调等多种设备进行监测,通过采集相应设备的运行参数随时了解、跟踪设备运行状态,进而进行分析和诊断。结合具体项目,本文设计了一种基于嵌入式系统ARM 的多数据监测系统,系统以嵌入式Linux和博创公司的嵌入式微控制器PXA270为核心平台,通过将RS一485采集的数据转换成符合RS一232标准的数据,保存在嵌入式微处理器的Flash中,经过网络传输将数据传给E位机,完成对电表、空调的监测任务。整个系统建立在嵌入式结构上,具有更好的实时性和稳定性,同时硬件的体积更小,功耗更低,扩展性更强。 1 系统硬件设计 1.1 系统总体设计方案 系统的总体设计思想是通过RS一232/485转换器将RS一485采集的电表参数、空调参数转换成符合RS一232标准的数据,保存在嵌入式微处理器Flash中,经Linux Socket网络编程,采用TCP协议和上位机建立网络连接,将数据文件发送给上位机,上位机运用C#语言编程实现监测数据的实时显示,同时建立数据库保存监测数据,从而完成对电表、空调数据的监测任务。其中Rs一485对电表、空调参数的读取是通过Modbus协议发送相关的指令实现的。 1.2 系统硬件电路 该设计主要硬件电路包括数据采集模块、PXA270处理器、外围接口电路、电源及复位电路 等几个部分。系统总体结构如图1所示。 ARM 处理系统采用博创公司的Xscale PXA270处理器,其主频为520 MHz,加入了Intel SpeedStep动态电源管理技术,在保证CPU性能的情况下可最大限度地降低设备功耗,采用网络接口实现了数据信息的网络化管理。操作系统采用Linux,使用的是Linux 2.6.9内核。 系统的根文件采用针对Flash无缓冲机制的JFFS2文件系统。 为了利用PC上现有的RS一232接口,通常使用RS一232/485转换器。该转换器一般通过逻辑门电路控制RxD、TxD和GND信号,自动对半双工的RS一485串口进行控制。通过该转换器,就可以像开发通用的RS一232串口一样来快速开发基于RS一485串口的通信软件。 2 系统软件设计 软件部分包括系统引导驱动程序otLoad—er、嵌入式操作系统ARM—Linux的移植、文件系统、用户应用程序4个部分,其中核心部分是用户应用程序的编写和调试。用户应用程序包括通过Modbus协议对采集得到的电表参数、空调参数的读取和保存,Linux Socket编程实现文件的发送,以及上位机监测端图形化界面的C}≠语言编程实现。 2.1 采集数据的读取和保存 该部分实现电表和空调数据的读取,并保存在嵌入式微处理器Flash中。数据的读取通过Modbus协议向电表和空调发送相关指令获得,得到的数据通过调用fwrite()函数写入定义在嵌入式微处理器Flash的文件中。主要包括串口属性设置,CRC(Cyclic Redundancy Check)校验码实现方法,采用Modbus协议获得需要的数据,并写入嵌入式微处理器Flash的文件中。 2.1.1 设置串口属性 串口设置主要是设置struct termios结构体成员值。通过对Cwcflag的赋值,可以设置波特率、字符大小、数据位、停止位、奇偶校验位和硬件流控等。 系统对于串口属性的设置如下: (1)打开串El fd= open(“/dev/ttySO”,0一RDWR I O~ NOCTFY I O— NDELAY)。 (2)为安全起见和以后调试程序方便,先保存原先串口的配置:tcgetattr(fd,newtio)。 (3)设置波特率为9 600 baud/s。一般情况下,用户需要将输入输出函数的波特率设置成相同。函数在成功时返回“0”,失败时返回“一1”。 (4)设置字符大小。没有现成可用函数,需要位掩码。一般先去除数据位中的位掩码,再重新按要求设置。 (5)设置奇偶校验位。先激活c—cflag中的校验位使能标志PARENB和判断是否要进行偶校验,同时还要激活c_iflag中的奇偶校验使能。 (6)设置停止位。通过激活c_cflag中的cS.TOPB实现。 (7)设置最少字符和等待时间。在对接收字符和等待时间没有特殊要求的情况下,可以将其设置为“0”。 (8) 激活配置。利用tcsetattr(fd,TC—SANOW,newtio)函数。这里newtio是termios类型的变量,SANOW 表示改变的配置立即生效。 2.1.2 CRC校验码的实现方法 CRC利用生成多项式产生校验位进行编码。CRC运算时,首先将一个16 bit的寄存器预置为全1,然后连续把数据帧中的每个字节中的8 bit与寄存器的当前值进行运算,仅每个字节的8个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。在生成CRC时,每个字节的8 bit与寄存器中的内容进行“异或”运算,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测。如果是1,该寄存器就与一个预设固定值(0A001H)进行一次“异或”运算;如果最低位为0,不作任何处理。上述处理重复进行,直到执行完8次移位操作。当最后一位(第8位)移完后,下一个 8 bit与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作。当数据帧中的所有字节都作了处理,生成的最终值为CRC值。 2.1.3 通过RS一485通信采集数据 系统采用Modbus.RTU ,通信应用格式如表1所示。Modbus协议详细定义了数据序列和校验码,这些都是特定数据交换的必要内容。 点击查看大图 2.1.4 采集数据的存储 该系统对监测数据进行循环采集,并将数据实时保存。通过调用定义的子函数void sent—re.ceive(char txBuf[],char Bum)读取数据,打开建立在Flash中的record文件,通过fwrite函数将读取的数据写入文件中。在保存数据的同时需要将读取数据的时间localtime(timep)一起记录。 3 结 语 该系统实现了智能电表、空调参数多数据量的监测,主要完成了嵌入式操作系统ARM·Linu 的移植,通过Modbus协议获得终端监测数据,并保存在嵌入式微处理器Flash中,实现数据文件的发送以及上位机对数据的处理显示。经试验,系统最终正常运行。 与传统的数据监i贝0系统相比,该系统具有更好的安全性和实时性,同时硬件的体积更小,功耗更低,扩展性更强。对系统稍加修改,可以同时实现I//O设备、UPS等更多数据量的实时监测,因此具有很强的实用意义。 更多内容请登陆: http://www.fly-sun.com.cn