监控模块的软件流程如图2.3示,微控制器自动地完成对设备状态的循环检测,如果监控的数字量或模拟量出现问题,则微控制器通过AT命令控制无线 MODEM向监控者发送短消息报警,在紧急情况下也可以启动语音通话,将存储在语音芯片ISD25120中的语音信号播放出来,作为紧急状态下的一种监控报警手段;而用户可以通过手机或Internet等其他不同的短信实体发出发出相应的控制命令,通过GSM网络传送给模块,从而使得微控制器 AT89C52接收并解释相应的命令,并作出相应的动作,比如修改设置、发送查询监控情况。
图2.3 智能模块的监控软件总流程图
在监控时可以根据现场情况的紧急程度分级处理:一般情况可以使用短信收发,为了保证可靠,每条发送短信都需要用户给予相应的一条固定回应;当紧急情况时,可以直接启动拨打电话功能,通过将存储在语音芯片的语音播放出来进行语音通话,以体现现场情况的紧急。
3.串行通信协议的改进
本设计监控主板与无线MODEM和PC机之间的数据通信都采用异步串行协议,由于异步串行通信协议传输数据的速度相对较慢,效率较低,故在数据通信量大的时候常采用同步通信,但是同步通信也存在着限制,通信双方的时钟必须严格一致,否则通信不能同步则会发生错误。本节就是根据面向比特的同步通信协议,对异步串行协议作了一点改进,提出一种高效、面向字节传送的类似HDLC通信协议的异步串行通信协议AHDLC及其算法的实现。
3.1AHDLC异步串行通信协议的格式
如表3.1所示为AHDLC协议的格式,Data是要传送的n个字节数据,Command是命令字节,用它对数据进行解释, Length表示数据长度的字节.若传送数据的帧格式为:Length,Command,data0,data1,…,datan- 1,CheckSum.它们都是字节数据,范围是0~0xFF,直接传送以上的帧格式,如果接收方在接收中有一个错误,则以后的接收将识别不到下一个数据帧的开始,通信将会混乱。所以必须有开始标志StartMark和一个结束标志EndMark。
StartMark和EndMark也是字节数据, 范围是0~0xFF。设StartMark = EndMark="0x7E",若Length,Command,data0,data1,…,datan-1,CheckSum中出现与开始标志 StartMark相同的数据,通信也会不可靠.为此设一个ReplaceMark字节,取值ReplaceMark=0xFD,用 ReplaceMark代替Length,Command,data0,data1,…,datan-1,Check-Sum中出现的,与 StartMark数值相同的字节,代替规则如下:发送时,用ReplaceMark,0x01两个字节代替出现的StartMark数值 (StartMark→ReplaceMark ,0x01);用ReplaceMark,0x00两个字节代替出现的ReplaceMark数值 (RepalceMark→ReplaceMark,0x00),之后进行发送。接收时,如果接收到ReplaceMark,由下一个字节判断,若下一个字节是0x01,则接收的数值用StartMark的数值代替(ReplaceMark,0x01→StartMark);若下一个字节是0x00,则接收的数值用ReplaceMark的数值代替(ReplaceMark,0x00→ReplaceMark)。
用ReplaceMark和附加的字节(0x00或0x01)代替Length,Command,data0,data1,…,datan- 1,CheckSum中可能出现的与StartMark相同的数值与真正的ReplaceMark数值.这样避免了帧内出现与标志符相同的数值,同时又可以经过变换传送与标志符相同的数值.
3.2AHDLC的效率分析
在通信中若采用ASCⅡ码变换,n个字节的数据将变换为2n个ASCⅡ码,若按 StartMark,Length,Command,data0,data1,…,datan-1,CheckSum,EndMark格式传送,则需要传送2n+8个字节的数据,效率=(n+5)(2n+8)=50%.用AHDLC协议,Length,Command,
data0,data1,…,datan-1,CheckSum中,若不出现与StartMark及ReplaceMark相同的数值,则需要传送n+5 个字节的数据.若出现n个与StartMark或ReplaceMark相同的数值,则需要传送2n+5个字节的数据.效率随着StartMark或 ReplaceMark数值出现个数的增加而降低. StartMark和ReplaceMark数值出现的概率都是(n+3)/256,则用AHDLC协议传送的统计平均字节数为:
对于n=10,用ASCⅡ码方式传送需要28个字节,效率=15/28=53.6%;用AHDLC协议方式传送平均需要15.1个字节,效率=15/15.1=99.3%,比用ASCⅡ码方式传送效率提高45.7%.
对于n=100,用ASCⅡ码方式传送需要208个字节,效率=105/208=50.5%;用AHDLC协议方式传送平均需要105.8个字节,效率=105/105.8=99.2%,比用ASCⅡ码方式传送效率提高48.7%.StartMark(或EndMark)和ReplaceMark的数值可以根据实际情况自己定义,使AHDLC帧格式中出现StartMark和ReplaceMark的概率越低,则通信的效率越高。
4.结束语
该智能模块的软硬件经过调试已达到工业应用水平,在一些对监控的实时性要求不是特别苛刻的情况下具有很高的性价比,再加上应用范围广,开发周期短,因而应用前景十分广阔。
评论
查看更多