马 晓,刘嘉宁,宋洪金
(西安电子科技大学 电子工程学院,陕西 西安710071)
无线监控已成为工业控制中安全生产、及时收集重要数据必不可少的部分,利用现代化的信息技术手段,建设安全生产监督管理网络系统,才能将安全生产和安全监督管理工作做好,随着通讯技术的发展,移动通信覆盖的不断扩大,基于GSM网络的无线监控系统已广泛应用于工业控制、电力监控、智能楼宇和数据传输等方面,加上GSM网络具有前期投资少、不受地域限制、通信实时性高等优点使得它在无线监控领域扮演更重要的角色[1]。利用的ARM9处理器主频高、速度快、内存容易扩展、可以运行嵌入式Linux系统设计平台等特点,通过软硬件模块的设计,在GSM无线网络上实现了短消息的发送。此系统可以应用在采油电机环境参数监控上,实时监控油管的压力和温度等参数,保证油井的安全正常工作。
图1所示是基于AT91RM9200的短消息监控系统,该平台主要包括微处理器单元,GSM/GPRS无线模块,存储模块,串口通讯模块,网口通讯模块,USB模块和电源模块。
图1 系统总体设计框图
系统构建的嵌入式系统平台,主要用于采集数据的处理、存储、发送和监控。具体工作原理是在基于ARM920T内核的主频为180 MHz的AT91RM9200微处理器上,通过串口将下行数据传输至Flash存储,然后利用串口、USB和100 Mbit·s-1以太网3种接口方式将数据发送至目标,同时通过GSM无线通信的方式进行数据监控。
此系统在采油电机环境参数传输与通信系统存储模块的应用过程中,主要完成对采样和监测处理后的数据进行存储,并通过各种接口传送至上位机显示,以便工作人员对井下电机的环境数据进行观测和处理。无线传输模块可将存储模块接收到的数据以无线通信的方式发给油井监测人员,使监测人员可随时了解油井的采油情况。
系统中短消息收发功能的模块采用华为公司的4频GSM/GPRS模块MG323,工作频段支持4频:GSM850/900/1800/1900 MHz,接收灵敏度<-107 dBm,工作温度-30~+75℃,电源电压3.3~4.8 V,平均待机电流<3.0 mA,协议支持GSM/GPRS Phase2/2+。MG232含有丰富的对外应用接口,包括B2B连接器接口、电源接口、开/关机和RESET时序、控制信号接口、UART接口、SIM卡接口、充电接口、音频接口。
MG323与AT91RM9200的硬件电路如图2所示。ARM通过控制TERM_ON来控制MG323的开关,当TERM_ON管脚拉低≥1 s后,即可开机;开机后,如果再次将TERM_ON管脚拉低≥1 s,即可关机;控制RESET来控制MG323的硬件复位,当模块出现软件死机时,通过拉低RESET管脚≥10 ms后,模块进行硬件复位。
由于MG323模块对外提供一路异步RS-232UART1通信接口,UART1支持标准Modem握手信号控制方式,故MG323GSM模块通过RS232与AT91RM9200的UART1相连接。其控制信号主要为:UART1_RD(模块数据发送端),UART1_TD(模块数据接收端),UART1_RING(模块振铃指示),UART1_DSR(模块数据设备就绪),UART1_RTS(请求发送),UART1_DTS(数据终端就绪),UART1_CTS(模块清除发送),UART1_DCD(模块载波检测)。RTS/CTS为请求发送信号,RTS是发送起输出的准备好信号。接收双方准备好,送回清除发送信号CTS后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准备好即可发送。DCD载波检测又称接收线路信号检测,本意是Modem检测到线路中的载波信号后,通知终端准备接收数据的信号在没有接Modem的情况下,也可以和RES,CTS短接。DTR/DSR数据终端准备好时发DTR信号,在收到数据通信装置准备好DSR信号后方可通信。RING原意是在接收到电话交换机有效的拨号时有效,同时数据终端准备传送。
MG323模块通过信号SIM_CLK(SIM卡时钟),VSIM(SIM卡电源),SIM_DATA(SIM卡数据),SIM_RST(SIM卡复位),GND(SIM卡地)与SIM卡相连接[2]。
图2 MG323与AT91RM9200的硬件连接电路
该系统还包括两片16 MB的SDRAM,两片8 MB的NOR-Flash,3个RS232,主USB,从USB和100 Mbit·s-1以太网等模块。
系统软件的设计主要是基于Linux下C的编程,无线监控程序是依照短消息收发的原理来对于GSM模块的控制。
短消息内容的最大长度为140 Byte。它的编码主要有7位编码,8位编码,UC2编码3种编码方式。7位编码是每Byte只使用低7位,每8 Byte为一组,去掉最高位,重新编码为7 Byte,因此,7位编码实际可以表示到160 Byte。但7位编码只能发送0x00~0x7F范围内的字符,一般在发送英文短信时使用。编码原理是:每8 Byte为一组,分别用A,B,C,D,E,F,G代表8 Byte,An代表每个Byte的位,则8 Byte重新编码成如表1所示的7 Byte。
表1 7位编码示意图
8位编码是所见即所得的编码方式,即无需编码,只要将二进制串直接发送即可。8位编码方式适用于制定各种基于短消息的通讯协议。UC2编码常用于中文或中英文混合内容发送,只能发送70个字符(1个UC2占2 Byte)。由于国内一般的编辑器多以GB编码,因此,若要发送中文,需先将中文转换为UC2编码再发送。在手机上,通常的做法是如果全部为英文及半角字符,则以7位编码发送,如果含有中文,则全部编码为UC2发送。
短消息发送方式主要分为文本模式和PDU模式。文本模式其实是针对7位编码做的一个封装,它只能用于发送ANSI范围的字符,发送方式较简单。而PDU模式中所有短消息数据发送前都必须组织成PDU的格式,在PDU模式下发送短信比较复杂,需要自行组织PDU内容,但发送方式灵活,可以发送各种数据,也可以自行设定各PDU字段的内容。
GSM无线模块采用标准AT指令集通信,AT命令是用于控制TE(Terminal Equipment)(如PC等用户终端)和MT(Mobile Terminal)(如移动台等移动终端)之间的相互规则。AT命令类型主要分为基本命令、S寄存器命令、扩展以及厂商定义命令3类[3]。
表2 常用AT指令
ARM与GSM通信以ttyS1对应的串口为桥梁,与MG323提供的1个UART接口连接,支持短消息、电话本管理、数据业务、嵌入式TCP/UDP等功能[2]。使用ARM发出AT指令集对GSM模块进行相应的操作,能够完成发短消息的功能。具体软件流程如图3所示。
图3 软件设计流程图
对串口初始化的工作主要是波特率、校验位和停止位设置。配置完串口的相关属性,就可以对串口进行打开、读写操作了。在Linux系统中,所有的设备文件都位于“/dev”下,其中串口2对应的设备名为“/dev/ttyS1”,在Linux下对设备和对文件的操作方法是一样的,因此对串口读写可以使用简单的“read”,“write”函数完成[4]。
对GSM模块进行初始化工作主要是发送“AT”给MT(Mobil Terminal)看起是否有回复以确定ARM与GSM的串口工作正常。在确认串口正常工作后,发送"ATE0"命令关闭MT的回显。
设置短信的通知方式、短信的格式(PDU)以及短信的编码(USC2)。如果每个功能的设定都正常,最后按照PDU格式向指定用户发送"GSM模块初始化成功"的短信。
解析数据并发送短信主要是首先按PDU格式填充发送个MT的缓冲区的前46 Byte。然后打开数据存储文件,用lseek函数将文件光标由文件结尾向前移动17 Byte。因为数据帧中的数据是以2 Byte的16进制来表示,所以首先将其合并成一个16位的短整型,然后将合并的数据与检验位相加。将数据处理后,最后发送短信并检查MT回复中是否有+CMGS的指令,若有则代表短信发送成功。
以AT91RM9200处理器[5]搭建嵌入式Linux系统,利用GSM/GPRS无线通信模块实现短消息的发送。同时嵌入式系统加GSM模块的系统组成体积小巧,工作稳定,适合偏远地区或移动数据采集系统,提供了数据采集监控的新手段。随着无线通信系统的不断发展和成熟,它必将深入到生活的各个方面。
[1] 张朝,吴旭光.基于嵌入式及GPRS技术的无线检测终端研究[D].西安:西北工业大学,2007.
[2]华为技术有限公司.HUAWEI MG323 GSM M2M模块:硬件指南[M].深圳:华为技术有限公司,2010.
[3]华为技术有限公司.HUAWEI MG323 GSM M2M模块:软件指南[M].深圳:华为技术有限公司,2010.
[4] 孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.
[5] 沙泉.基于嵌入式Linux的短信收发系统设计[J].微计算机信息,2007(23):90-92.