用GSM MODEM实现Hostlink系统的远程无线监控
2008-07-23
作者:程文锋1,2,杨祥龙1,葛永明2
摘 要: 用GSM MODEM实现Hostlink系统的远程无线监控" title="远程无线监控">远程无线监控的方法,通过Hostlink协议的串行通讯成功地解决了单片机与使用Hostlink协议PLC的数据交换问题,实现了使用手提电话或计算机对Hostlink系统的远程无线监控。
关键词: Hostlink;GSM;远程无线监控
可编程程序控制器PLC以其可靠性高、抗干扰强、开发周期短而广泛应用于工业生产与控制的各个领域中。OMRON是世界主要的PLC生产商之一,大、中、小型PLC产品种类繁多,其产品较早就在国内广泛应用。但目前应用中的大量PLC工业系统都是单机运行,具体设备的工作状态只能在现场获取。在现代化的生产与控制中,通过远程无线方式实现人与系统数据和命令的交换,对于传统的单台PLC控制的工业系统实施远程网络监控显得越来越有必要。目前,层出不穷的远程监控系统迎合了广大现场工作人员的需求,大大解放了劳动力。
随着通信技术的发展,基于移动通信网络的服务功能向工业遥控领域有不断扩大的趋势。为适应这种需要,西门子公司推出了新一代无线通信GSM模块TC35i。基于该模块的短消息功能,可以快速安全可靠地实现用户信息处理等功能,特别适用于控制中心与终端设备距离很远,或不便采用有线通信介质等场合。
目前,使用GSM模块或GSM MODEM开发的各种无线数据监控系统、防盗系统、抄表系统、智能交通系统等不断产生,但使用单片机通过GSM网络监控基于Hostlink协议的PLC系统目前还是空白。
1 Hostlink通信解析
1.1 Hostlink简介
上位机" title="上位机">上位机链接系统即Hostlink系统是对于FA系统一种即优化又经济的通信方式,是OMRON PLC产品采用的一种实用有效的通信方式,它适合一台上位机与一台或多台PLC进行链接。上位机可对PLC传送程序,并监控PLC的数据区及控制PLC的工作情况。
Hostlink系统允许一台上位机通过上位机链接命令向Hostlink系统的PLC发送命令,PLC处理来自上位机的每条指令,并把结果传回上位机。
1.2 Hostlink通信方式
Hostlink系统通信既可以采用RS-232C方式,又可采用RS-422方式。RS-232C方式基于1对1通信,最大距离为15m;RS-422方式基于1对N的通信,即一台上位机与多台PLC进行通信,最多可有32台PLC连接到上位机,最大通信距离可达500m。
表1是Hostlink系统最主要的一个通信参数寄存器设置情况,采用最基本的RS-232C标准通信,系统中的DM6645设置值为4位、16进制数1000。当然,还有波特率等参数的设置寄存器,因为缺省参数即可用,这里不再具体讲述。
1.3 Hostlink协议解析
PLC通过Host Link协议与单片机进行1:1上位链接通信,单片机作为上位机发送读写命令,实现的功能有: 读写PLC的运行状态、读写继电器区(IR/HR/AR/LR)和数据区DM的内容。
上位机链接通信通过在上位机和PLC间交换命令和应答实现。在一次交换中传输的命令或应答数据称为1帧,1帧最多可包含131个数据字符。上位机链接命令的格式可参考C200HE/HG/HX编程手册。
上位机到PLC的命令数据帧格式如图1(以读取DM区为例)。
当传送一个帧时,在终止符的前面安排一个校验码,用来检查传送时是否存在数据错误。校验码(FCS)是一个转换成2个ASCII字符的8位数据。每次接收到1帧,都要把校验码前所有字符的ASCII码按位连续进行异或操作,计算FCS校验码,与帧中所包含的FCS码进行比较,从而检查帧中的数据错误。
校验码(FCS校验)的计算方法见表2。
PLC返回上位机的数据帧格式如图2(以读取DM区返回帧为例)。
结束码是在应答帧中返回的,表3列举常见的几种。
2 硬件设计
2.1 系统框图
系统由上位机和下位机组成,使用GSM网络通过无线收发短信息" title="短信息">短信息的方式实现上位机与下位机间的通信如图3所示。上位机主要是用户手机或连接有GSM MODEM的计算机,下位机则是由Hostlink系统、Hostlink接口单元电路和下位GSM MODEM组成。
2.2 GSM MODEM与Hostlink系统硬件接口电路
GSM MODEM与Hostlink系统接口单元电路图如图4所示。接口电路" title="接口电路">接口电路中的核心器件是Microchip公司的一款PIC单片机16F877。PIC的总线结构为哈佛结构,指令和数据空间完全分开,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC系列单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但16F877指令总线位数为14位。该单片机用来控制向GSM MODEM和Hostlink系统的串口" title="串口">串口发送或接收数据,还将接收到Hostlink系统传上来的现场数据与上下限幅值进行比较,有越限现象时,立即向上位机发送报警信息。
图4 GSM MODEM与Hostlink系统接口单元电路图
CD4016是一款4双向模拟开关,用来实现GSM MODEM和Hostlink系统对接口电路串口的共享。用PIC单片机的2个I/O口——RB5和RB6控制开关的通断,需要与GSM MODEM通信时,将RB5置高,RB6置低;反之将RB5置低,RB6置高便可关闭与GSM MODEM的通信,接通与Hostlink系统的串口连接。
接口电路与Hostlink系统(OMRON PLC)通信时,可以采用两种通信方式。一种是RS232方式,实现接口电路与Hostlink系统的一对一通信;另一种是RS485通信,实现与多台Hostlink系统的1对N通信,线路中的MAX485芯片用来将单片机串口信号转换成RS485信号从A、B两个端子输出。电路中设有一个4bit的指拨开关,用来切换串口的通信方式。
3 软件设计
系统软件流程如图5所示。
3.1 GSM MODEM的SMS发送与接收
SMS(短信息)的发送和接收是单片机通过串口发送AT指令完成的,不同的AT命令可以完成不同的SMS操作功能。
发送短信时,首先设置TC35i模块的工作模式:AT+CMGF=n,n=0为PDU模式,n=l为文本模式。通常设置为PDU模式,在这种模式下可以接收和发送中文信息。但PDU模式下,每条短信信息量只有70个字符,而文本模式可以发送160个ASCII码字符,所以本系统向GSM MODEM发送AT+CMGF=1,工作模式设成文本模式,有利于提高单条短信的信息量,同时还简化了接收短信的解析工作量。
然后要设置短信息的操作方式,如向GSM MODEM发送AT+CNMI =1,2,2命令,这样短信不存,省去清理短信的麻烦,MODEM收到短信直接向串口发送:
+CMT: ″13*********″,,″06/07/13,02:46:53+32″
××××××××××××(短信内容)
这样通过接口电路的串口中断,就可以接收并缓冲GSM MODEM收到的上位机命令。
GSM MODEM可以用AT+CMGS命令向上位机发送返回信息,具体格式为:AT+CMGS=″13*********″。延时几毫秒等待MODEM回复一个准备接收的字符后,即可通过串口向上位机发送信息的具体内容了,最后跟上一个结束符,ASCII码为0x1A。
系统中用到的几个AT命令说明如表4。
3.2 GSM MODEM与Hostlink系统的通讯编程
系统程序在Microchip IDE V7.31环境下开发,采用CCS的C语言编程。下面提供几个有关串口通信的程序段。
(1)初始化程序段
#include<16F877.h>//包含CPU库文件
#fuses HS,NOWDT,NOPROTECT,NOLVP//设置编译参数
#use delay(clock=4000000)//设定晶振频率
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)//设定串口通信参数
set_timer0(224);//设定定时器参数
setup_timer_0(RTCC_DIV_16|RTCC_INTERNAL);
enable_interrupts(INT_timer0);//开启定时器中断
enable_interrupts(global);
enable_interrupts(int_rda);//开启串口中断
char string[75]//置短信息数据缓冲区
(2)串口中断程序段
#int_rda
void serial_isr()//用中断方式从串口接收数据
{
string[i]=getc();i++;//串口接收的数据导入缓冲区
}
(3)向上位机发送数据信息程序段
void SendDataToUser()
{ printf(″at+cmgs=%c″,34);//向GSM MODEM发送短信息发送命令
for(k=0x20;k<=0x2A;k++)//读取上位机用户手机号码
{ printf(″%c″,read_eeprom(k));
}
printf(″%cr″,34);
delay_ms(80);//延时等待GSM MODEM准备好接收短信息
printf(″Current Limit:r″);//发送短信息
for(k=0;k<8;k++)//这里发送的是当前各路参数的上下限幅值
{printf(″AI%u:%u--%u%%r″,k,limit[k+8],limit[k]);}
printf(″%c″,0x1A);//短信结束符
}
(4)向Hostlink系统发送读取命令程序段
void SendCmdToHostlink()
{ ComputeFCS();//计算发送帧校验码,得到FcsH和FcsL
printf(″@00RR0000001');//向Hostlink发送数据帧
printf('%c%c″,FcsH,FcsL);接着发校验码
printf(″?鄢r″);//发命令帧结束符
}
GSM MODEM价格低廉、应用广泛,而且该模块利用简单经济、应用广泛的RS232串口通信,有利于各种单片机和计算机系统集成。系统硬件成本较低,通过与手机模块接口可以方便地设计出用户所需要的数据接收终端。在偏远地区等架设通信线路困难或不经济的地方,使用这种无线通信方式,使得系统实时监控不再受地形条件的限制。
本文所述的基于GSM的远程无线监控系统已经成功应用于小型水轮发电机组和汽轮发电机组中,对Hostlink系统的远程无线监控已完成实验室调试。该方法不仅适用于对单台Hostlink设备的监控,也可以将多台Hostlink设备通过RS485网组织起来,实现多台远程无线监控。通过Hostlink协议的串行通讯成功地解决了单片机与Omron PLC的数据交换问题。实践表明,该方法非常实用、灵活方便,依靠GSM成熟通信网络,数据发送安全可靠,而且成本低廉,具有良好的社会效益和经济效益。
参考文献
[1] 欧姆龙公司.C200HS可编程控制器编程手册[M].北京:电子工业出版社,2002.
[2] 林粤伟,魏权利.基于GSM短通信的无线网络环保监测系统的研制[J].微计算机信息,2005,(1):71-72.[3] 曹尉青,韩冰.利用GSM短消息实现远程监控[J].无线电工程.2002,32(10):21-23.
[4] Microchip Technology Inc.PIC16F87X Data Sheet 2001[DB/OL].http://www.microchip.com.
[5] 杨海清,李敏,杨海虹.基于HostLink通讯协议的制水流程测控网络系统[J].浙江工业大学学报,2006,34(2):190-194.
[6] 徐光宪,刘建辉,陈万志.串行通信在监控系统中的应用研究[J].微计算机信息,2004,20(7):25-27.