在工控PC机中可采用VB来实现上位机监控程序,通过MSCOMM控件就可控制串口通信[6],主要参数设置代码如下:
MSComm1.Settings="9600,N,8,1"
//串口通信参数设置
MSComm1.CommPort=1
MSComm1.PortOpen=True
MSComm1.InputLen=0
4 主控PLC软件设计
CPU224XP自由口通信模式的初始化是通过对特殊存储字节SMB30(PORT0)写入通信控制字来设置通信的波特率、奇偶校验、停止位和数据位数[7]。SMB30中的内容如下:
PP:奇偶选择。00为无奇偶校验;01为偶校验;10为奇校验;11为保留。
D:每个字符的数据位。0为每个字符8位;1为每个字符7位。
BBB:自由端口波特率。本设计为010,表示波特率为9 600 b/s。
MM:协议选择。00为点到点接口协议的PPI从站模式;01为自由端口协议;10为PPI主站模式;11为保留。缺省设置为00,即PPI从站模式。
本文中传输速率固定为9 600 b/s,数据格式由1位起始位、8位数据位、无校验位、1位停止位组成。
配置自由口通信模式后,就可以进行数据的收发了。PLC通信程序框图如图5所示。接收数据指令RCV的命令格式为RCV TABLE,Port0,RCV指令可以接收一个或多个字符,一次最多接收255个字符。发送数据指令XMT的命令格式为XMT TABLE,Port0,激活发送缓冲区TABLE中的数据。数据缓冲区的第一个数据指明了要发送的字节数,最多有255个字符的缓冲区。
通信程序的设计需遵循一定的规则,例如,中断通信处理程序要短小精悍,要避免XMT与RCV指令在一个端口同时执行[8]。本设计采用主从方式通信,PC设为主机,PLC设置为从机。只有PLC接收到指令帧后,才可能根据接收数据情况发送反馈帧。为简化程序设计,PC机只发出读指令和写指令两种指令帧。若为读指令,PLC准备好发送数据后执行XMT指令;若为写指令,PLC先把数据写入指定存储区,准备好应答数据后同样执行XMT命令;若接收到错误帧(如校验错误及不能识别的命令),PLC准备相应标志数据执行XMT指令。
主要代码如下:
LD SM0.0
MOVB 9,SMB30//设置端口0为:9 600,N,8,1
LD SM0.0//RCV指令初始化
MOVB 16#EC,SMB87
//允许接收信息,使用SMB88,SMB89。
MOVB 83,SMB88//设置起始字符为"S"
MOVB 115,SMB89//设置结束字符为"s"
MOVB +1000,SMW92//接收信息时间不能超过1 ms
MOVB 30,SMB94//接收的最大字符数,这里设置为30
R SMB87.2,1//复位SMB87.2,使其为0,忽略SMW92
LD SM0.0
ATCH RCVOVER,23
//将0口接收完成中断事件连接到RCVOVER上
LD SM0.0
ATCH XMTOVER,9、
//将0口发送完成中断事件连接到XMTOVER上
LD SM0.0
ENI//允许中断
S7-200自由口通信方式使用户可以自己定义PLC指令通信协议,与任何公开通信协议(如RS-422或RS-232C)接口设备进行通信,使通信范围大大增加,控制系统配制更加灵活。本通信程序用于ITER导体穿缆测力测长监控系统,PLC完成数据采集及现场控制,工控PC机实时显示导体穿缆的速度及行程,同时以梯形图和通信控件显示动作过程,便于监控及故障诊断,得到用户好评。本文设计的通信协议也可用于其他控制系统的监控。
参考文献
[1] SIEMENS公司.SIMATIC S7-200可编程控制器系统手册[M]. http://www2.ad.siemens.com.cn/download/UploaD/AS/manual/1109582. pdf, 2008-08-01.
[2] 吉顺平.西门子PLC与工业网络技术[M].北京:机械工业出版社,2008.
[3] 刘杰,阳林,陈超丽.三菱FX2N系列PLC与PC通讯的简易实现[J].制造业自动化,2006(1):65-67.
[4] 陈明意.基于VC6.0的PC与FX2NPLC通信的实现[J].武汉工业学院学报,2005,24(4):14-16.
[5] 丁莉君,李宏燕.自由口模下S7-200 PLC与上位机的通信[J].机床电器,2009(1):26-28.
[6] 汤光华,吴青.自由口模式下S7-200 PLC与上位机的通信[J].微计算机信息,2008(24):62-64.
[7] 刘红兵.S7-200自由口通讯的实现及应用[J].PLC&FA,2009(2):58-62.
[8] 李绍民,潘登.S7-200 PLC与上位机的通信[J].大连民族学院学报,2009,11(3):209-211.