摘 要: 为提高数据传输过程中完整性,提出了一种结合嵌入式技术和GPRS/GSM无线通信技术的数据传输方案。设计了基于GPRS和GSM短信服务混合通信的嵌入式数据采集传输终端,用于在恶劣的环境下对数据的实时采集,并通过GPRS/GSM网络上传至监控中心。在高峰时期或传输网络出现异常时,嵌入式终端将采取GSM的SMS方式进行数据传输。
关键词:远程测控终端;GPRS/GSM;嵌入式技术,数据完整性
随着工业的发展,很多设备在恶劣环境中工作,需要定时采集数据,例如电力系统中自动抄表,自来水厂对水质监测,农业中对土壤的监测等。环境恶劣或路途遥远等会导致用人工现场采集数据有很大的困难。远程测控终端[1](RTU)在工业数据采集中应用非常广泛。为此,设计一款基于GPRS/GSM混合通信的RTU,将GPRS与GSM的SMS方式进行优势互补, 来满足用户对远程数据采集所面临的数据传输的完整性和实时性需求。本文研究了一种运用ARM处理器和Linux操作系统嵌入式数据采集装置,添加GPRS/GSM数据传输模块来传输数据。将无线通信技术和嵌入式系统结合,外加 Internet通信,将数据传输到监控中心,监控中心将采集到的数据进行实时分析、存储,并在监测指标出现异常时报警,做到远端无人值守。
1 系统设计
1.1 GPRS/GSM技术
GPRS作为现有GSM网络向第三代移动通信演变的过渡技术(2.5G),其具有下列特点。
(1) GPRS作为无线通信技术,已经非常普遍,基本在全国范围内都能进行GPRS通信,而且它的速度和建设成本以及方便性都非常适合。
(2)传输速率高,GPRS数据传输的速度虽然不是非常高,但一般能够满足正常的数据传输要求,一般都有30 kb/s,已经完全能够满足本设计需求。
(3)按流量计费,如手机,用了多少流量算多少钱,而且当流量需求量过大时,还可以与移动公司合作,进行包月流量5元30 MB,这样对于数据传输量比较大的用户也能够满足他们的需求。
1.2 系统结构设计
本文采用GPRS/GSM为数据传输平台,系统主要分为监控中心、RTU和数传模块三大模块,如图1所示[1]。
(1)远程测控终端RTU。为环境恶劣中的数据采集装置,RTU将采集的数据通过自己内部定义的协议打包,通过GPRS/GSM和Internet传输到监控中心。在RTU不止一个的情况下,需给每个RTU设置不同的ID号。
(2)监控中心。监控中心直接与Internet相连,通常与RTU采用一对一或一对多的应用模式。监控中心获取到从RTU传来的数据后,进行协议解析,还原用户数据,如果传来的数据不在预设的正常区间内,将产生报警信号,同时监控中心对RTU 进行控制。
(3)数据传输模块。数据传输模块由于要进行数据传输,需内嵌TCP/IP 协议,而且要实现与Internet的连接。核心板与GPRS 模块通过串口进行数据交互,使用AT 指令实现对GPRS 模块的控制[1]。
1.3 RTU硬件设计
RTU的硬件结构图如图2所示[2],以三星S3C2440为嵌入式处理器核心,外扩SDRAM/Nand Flash模块用于数据存储,GPRS/GSM模块用于数据传输,JTAG为调试接口,RS-232为串口通信接口。
(1)S3C2440处理器。是三星公司开发的基于ARM920T内核32位RISC微处理器,适用于低成本、低功耗、高性能的设备。
(2)Nand Flash:Nand Flash芯片为Samsung厂商生产的,数据存储容量为64 MB,采用块页式存储管理。
(3)SDRAM。S3C2440的SDRAM内存应该焊接在Bank6~Bank7上,最大支持内存256 MB。
(4)JTAG调试接口。该接口是在研发过程中对芯片内部进行的一些调试、编程等操作。
(5)RS-232串行接口。数据采集装置通过串口将采集的数据传输给核心板,核心板通过串口将数据发送到GPRS/GSM模块。
(6)GPRS/GSM模块。采用内嵌TCP/IP 协议的数据传输GPRS/GSM模块,用于实现终端登录无线网络。
1.4 RTU软件设计
对于RTU的软件设计,从功能上来分,可以分为3个的部分。(1)Linux系统的核心程序的移植,即操作系统移植,它负责系统的工作控制、存储管理、功能设置、通信等;(2)设备驱动程序,负责操作系统与硬件设备之间的交互;(3)应用程序,它负责对数据的操作,如数据的采集、现场处理、存储、打包以及传输。
1.4.1 Linux操作系统的移植[3]
Linux系统的移植分为Bootloader移植、内核移植和文件系统移植。
(1)Bootloader移植[4]:Bootloader是操作系统运行前执行的一段程序。本文系统选用U-Boot 作为硬件板的Bootloader。
(2)内核移植:核心板采用Linux2.6.8 内核。从官网上下载Linux2.6.8.tar.bz2压缩包解压,对其中部分文件进行修改。设置PATH环境变量,Nand Flash分区,内核通过U-boot烧写到Nand Flash中。
(3)文件系统移植:本系统采用的是CRAMFS文件系统,需要添加自己的相应程序,编译生成镜像文件后,将文件烧写进 Flash中。
1.4.2 设备驱动
在Linux操作系统下,用户看到的只是应用程序,而要实现应用程序和底层硬件的通信,就需要操作系统和驱动程序的帮助。这里主要是处理和编写网络设备的驱动。在完成驱动程序开发后,通过open ( ) 、close ( )、read ( )和write ( ) 等操作来实现对硬件的操作。
1.4.3 应用程序设计
应用程序为用户层程序,通过应用层可以对远程现场数据进行操作,包括数据的采集、处理、存储和发送等,如图3所示。在给远程RTU上电后,需通过应用程序对系统进行一系列的初始化并与网络建立通信,设置采样周期,周期采集数据。当检测采集的数据达到1 KB时,首先进行GPRS传输数据。正常情况下,当数据传输结束时,结束传输,进入下一个周期[5]。而当GPRS传输数据失败时,系统则自动切换到SMS短消息传输数据,数据传输结束后,进入下一个传输周期。
2数据完整性传输
2.1 采用多线程机制
RTU的应用程序需要实现的功能主要有:通过拨号来建立GPRS连接,并与服务器连通;在远处恶劣环境下对数据进行采集,对数据分析处理,将处理好的数据传输给监控中心,且在监控中心发出控制命令时作出相应的操作。为了提高程序运行效率,考虑使用多线程编程[6]。给数据采集和数据处理分别新建一个线程,由于这两线程对象是同一数据,需要注意采集和处理线程之间的同步问题。当采集线程数据到1 KB时,数据处理线程开始工作,本文利用信号量实现。由于GPRS拨号需要一定的时间,如果不新建一个线程,必然会导致主线程阻塞,本文为GPRS拨号连接也新建一个线程,如图4所示。
2.2 传输协议的设计[1]
为了能够使得数据通信的完整性和实时性有更大的提高,需要对传输协议有个很好的制订。如发送的数据包过大,不能够使得数据在一个通道中传输,需要对数据进行分割,在不同的通道中进行传输,这必然导致传输延迟,同时也增加了数据完整性传输的风险,因此,RTU数据传输协议的数据格式一定要做得非常精简,才能更好地实现数据的传输。数据传输格式如表1所示。
ID:为RTU的ID号,使得监控中心分辨传来的数据的地址。
Data:为经过模数转换器转换得到的数据。
IO:为当前I/O的输入输出状态。
校验位:保证数据传输过程中的有效性。
RTU 将按照以上协议数据包格式对采集的数据进行打包。利用GPRS传输模块和网络发送数据包至监控中心。监控中心按照协议解析数据包,根据用户的要求进行显示。同时监控中心还会对数据进行分析,发现数据异常,将进行报警,同时监控中心根据用户需求可以对RTU进行相应的下行控制。
2.3 GPRS/GSM数据传输功能试验
在实验室条件下,通过手机给RTU发送短信的方式来测试RTU数据传输功能,当把GPRS传输模块的缓冲区设置得比较小时,而短信的内容又比较多时,将导致RTU上传数据出现错误,不能够完整地传输数据。通过多次试验,发现增加GPRS模块接收缓冲区的长度,就可以解决由于短信量过大而导致数据溢出、数据传输不完整的问题。
另外,通过拨打RTU的SIM 卡号码,使得语音信道占用数据信道,这样来模拟GPRS网络拥堵的情况。在语音信道一直占用数据信道的情况下,RTU尝试3次建立GPRS 网络均不成功,从而转向GSM的SMS方式来传输数据。这里就验证了在GPRS传输出现异常的情况下,GSM的SMS可以传输数据,从而使得数据在传输过程中不容易丢包,且传输的实时性得到提高。通过对RTU进行672次测试,GPRS和GSM的SMS传输次数、丢包率及误码率,测试结果如表2所示。
试验结果表明,采用GPRS/GSM方式能够实现对数据的完整性传输。 当GPRS传输遇到异常情况时,系统会自动切换到GSM的SMS方式进行传输,实验结果表明,采用混合通信的方式,基本上可以达到丢包率为0。
3 监控中心软件设计
监控中心管理软件主要完成用户现场的监视性操作及上位机通信功能及数据实时收发、存储、显示和统计分析等,如图5所示。
系统管理:主要工作是对要实施监控的对象,监控频率,和监控的时间进行配置。
通信管理:负责上位机和下位机之间的通信,主要是接收下位机发送来的数据,和发送命令到下位机去执行。
数据管理:由于采集的数据是一包一包的,需进行解析后存储。
统计分析:对数据进行分析,检查数据是否有异常状况。
实验结果表明,在网络拥堵的情况下,采用GPRS/GSM 混合通信可以保证数据传输的完整性与实时性。采用多线程编程可以提高系统工作的效率;设计一个良好的协议,可以使得数据在传输过程中完整性和实时性得到更好的保障;把GPRS和GSM的SMS技术相结合传输数据,使得传输的丢包率基本为0。因此,该系统可以满足用户对于现场数据采集上传的完整性、实时性需求。
参考文献
[1] 陈琦,丁天怀,李成,等. 基于GPRS/GSM的低功耗无线远程测控终端设计[J].清华大学学报:自然科学版,2009,49(2):223-225.
[2] 韩晓冰,韩冰,孙弋. 基于嵌入式系统的GPRS数据终端设计与实现[J].仪器仪表学报,2006,27(21):675-677.
[3] 吕盛林,林子杰,陈立定. 基于ARM9的无线环境监控系统的实现[J].信息技术,2009(12):17-22.
[4] 韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2012.
[5] 陈天华,唐海涛. 基于ARM 和GPRS的远程土壤墒情监测预报系统[J].农业工程学报,2012,28(3):162-166.
[6] 伊嘉鹏. 无线远程数据采集系统软件设计与实现[D].大连:大连理工大学,2013.