单片机路灯控制系统组群控制件 第9页

单片机路灯控制系统组群控制件 第9页
3.43   短信数据的处理-ExecData函数
进入时钟中断调用SHELL函数时,如果接收到了返回的参数+CMTI,表明上位机模块向下位机模块发送了短信数据,可能是命令帧,也可能是确认帧或者非确认帧。在这种情况下,SHELL函数需要对短信内容进行分析,并根据短信的内容进行不同的处理,负责完成以上功能的就是ExecData函数,它是被SHELL函数调用的,用来分析并处理短信数据。
ExecData函数首先判断接收到的短信数据是否为有效帧,这里的有效帧仅仅指帧的格式是正确的,并不表明帧的内容也是正确的。判断的依据是判断帧头是否为规定的字符“WQ”。在有效帧的前提下,ExecData函数将根据帧的性质进行不同的处理。按照帧的性质来划分,有效帧分为信息帧和应答帧,这在3.2节有详细的介绍。因为接收的是上位机发送的短信数据,所以这里的有效帧只包括命令帧和应答帧。
第一种情况,如果接收到的有效帧的帧号为00H,则表明该帧为命令帧。ExecData函数的处理方式是,首先判断I2C总线是否被占用,如果没有被占用就抢占,如果I2C总线忙则丢弃该帧。抢占总线后需要判断命令帧的校验子是否正确,如果正确表明该帧数据无误,接着将数据写入E2PROM的指定区域,该指定区域位于E2PROM前两个数据块的119~134字节处,如表6所示,并修改相应的标志位f_ack,准备向上位机模块发送确认帧;如果校验子不正确,则表明该命令帧错误,ExecData函数将丢弃该命令帧,并置位f_nack,期待对方重发。
第二种情况,如果接收到的有效帧的帧号不是00H,则表明该帧一定是应答帧。ExecData函数首先判断帧号是否正确,从而确定该帧是否是本方期待的应答帧。如果帧号不正确,ExecData函数会丢弃该帧,表明此帧并非本方所发送数据帧相应的应答帧。帧号正确的应答帧,既可能是确认帧,也可能是非确认帧。如果收到的是确认帧,表明对方已经正确接收到了本方发送的数据帧,ExecData函数将会改变相应的标志位,并清除E2PROM中的块标记。接下来遍历E2PROM,看是否还有数据块需要发送。如果有,标志位f_sending被置位为1,反之,将会清除E2PROM中的发送标记,即将首字节清成00H,如表6所示;如果收到的是非确认帧,表明对方接收到了本方发送的数据帧,但是数据帧是无效的。这种情况ExecData函数处理起来比较简单,仅仅将标志位f_sending置为1即可,表明该数据帧需要重发。
通过以上的分析,我们不难发现,整个程序错综复杂,函数之间相互牵扯。标志位在程序的实现过程中扮演着非常重要的角色,正是依靠这些标志位,程序才能很好地实现各个功能之间的切换,而标志位的值是通过GSM模块返回的参数修改的。因此程序的实现过程应该是:阅读参数->修改标志位->发送指令。
主函数、时钟中断和串口中断程序、SHELL函数、ExecData函数是贯穿整个程序的主线和核心部分,对它们的分析可以理解程序的主体思想,这也正是笔者着重介绍的原因所在。然而这些函数和中断程序的实现,还需要依靠其它函数的配合,比如基于I2C总线的E2PROM操作函数、字符串操作函数、以及串口发送函数等,由于篇幅所限,在此不再介绍。GSM网络本身是不完全可靠的,可能会发生帧发送错误、帧丢失的现象,但是由于重发、延时重发机制的存在,程序可以最大程度避免上述情况的发生。在实际应用过程中,模块运行正常,性能稳定,实时性好。
 4.3电力载波通信模块
电力载波通信模块框图如图3所示。设计中采用AT89S52作为微控制器,电力线载波调制解调器采用专用芯片ST7536。AT89S52和ST7536之间采用通用串行通信接口,用I2C总线和串行EEPROM通信,EEPROM采用铁电的24C02,此芯片具有无限次可擦写功能。通过电力载波实现整个网络的通信,通过两总线实现模块与其它设备的通信。这样,通模块就可以通过软件及通信协议实现对多个实际设备通信与控制。所有的数据帧均采用CRC校验。AT89S52和ST7536均采用外部硬件上电复位,同时使用AT89S52的内部看门狗功能,对AT89S52和ST7536进行必要的复位,以防止系统死机造成网络通信中断。多路选择开关采用CD4052,通过其进行电力载波和两总线的选择,以实现电力载波通信和两总线通信的分时控制。
 >图3  通用通信模块框图 >图4  电力线接口图
通信模块电力线接口电路设计
国外很早对电力线载波通讯技术进行了研究,多家公司推出了自己的电力线载波modem芯片,并制定了电力线载波适用频率范围的标准。目前有针对北美地区电网(480Y/277V,208Y/120Vac)的标准频率范围100KHz-450KHz和针对欧洲地区电网(400Y/230Vac)的标准频率范围9KHz-150KHz。各家公司在标准频率范围下,针对本地区电网特点,采用各种特定专有技术,设计出各己的电力线载波modem芯片。由于国外电力线载波modem芯片是针对本地区电网特性、电网结构,且一般是针对家庭内部自动化而设计,在国内使用都难尽人意。目前,有一、两款电力线载波modem芯片在一定应用领域可勉强使用。本系统采用ST7536作为电力载波通信的调制解调器。
ST7536是STMicroelectronics公司专为电力线载波通讯而设计的modem芯片。它除有一般modem芯片的信号调制解调功能外,还针对电力线应用加入了许多特别的信号处理手段。目前,在国内电力线载波通信领域应用广泛,只是各公司应用水平不同。ST7536调制解调技术是较落后的FSK方式,它最高波特率只能达到1200 bps。另外它无CSMA(网络载波侦听)功能,这些限制了它的应用。目前,根据国内电网的实际情况,在电力线载波通信领域,ST7536是较适合的modem芯片。
从ST7536输出的信号幅度小、驱动能力弱而且还有各种谐波,因此必须经过放大和滤波,然后才能通过耦合电路将信号调制到电力线上。耦合电路将高压和低压隔离,以防止高压击穿通信电路。同样,从电力线来的载波信号又要由ST7536接收,

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有