APP下载

普及型PLC自由协议通讯框架设计

2012-08-16

科技视界 2012年30期
关键词:子程序字符校验

徐 文

(浙江经济职业技术学院数字信息技术分院 浙江 杭州 310018)

0 引言

PLC(Programmable Logic Controller,可编程控制器)主导的工业通讯主要分为管理级、 过程控制级和现场总线级等级别。 由于接口、链路、协议和应用的多样性,不同级别的PLC 通讯在通常情况下需要采用不同的方法和标准进行编程,且不同品牌PLC 之间的通讯标准、协议不具备通用性,由PLC 设备组建通讯网络就呈现出复杂的特性。 文献1 介绍了基于组态软件的Profibus 通讯设计方法,文献2、3 介绍了PLC 与计算机和变频器之间基于MODIBUS、USS 协议的通讯设计方法,文献4 介绍了PPI 协议的OPC 通讯设计方法,这些设计大多借助高成本的组态软件等第三方工具实现,缺乏应用的灵活性。 文献5、6、7 虽然自定义协议实现了最大程度通讯应用的灵活性, 但可复用率低。 尤其当PLC 设备承担工业网络中不同通讯层级的中转节点时,就需要编制基于不同协议、面向不同应用的PLC 端通讯软件。 这样将提高开发和维护的成本,且成果较难复用。

本文通过对西门子S7-200 小型机RS485 口的自由协议通讯机制的分析,设计了基于自由协议的通讯框架。

1 S7-200PLC 自由协议通讯机理

目前不少PLC 制造商都开发出自由协议通讯模式, 即PLC 提供串行通讯硬件和用于定制通讯协议的相关指令,由用户控制串行通讯接口,采用自定义通讯协议来编制PLC 通讯程序,实现与其它控制设备的数据通讯。

1.1 S7-200 自由协议通信指令及中断机制

西门子S7-200 PLC 用于自由协议通信的指令主要是:数据发送指令XMT 和数据接收指令RCV。 以报文接收完成、字符接收完成、报文发送完成等中断机制来控制数据通信是主要的手段。 以通信接口0为例,其中断向量为:

1)向量8:通信接口0 字符接受完成;

2)向量9:通信接口0 报文发送完成;

3)向量23:通信接口0 报文接收完成;

S7-200 PLC 自由协议通信的参数需要通过PLC 内部特殊标志寄存器SM30、SMl30(分别对应通信接口O、接口1)进行设定与选择,可设定的参数包括:奇偶校验、字符数据的位数、通信速率、通信协议。

1.2 通信过程的控制与检测

S7-200 PLC 通信过程的控制与检测需要通过PLC 的内部特殊标志寄存器进行。用于通信控制与检测的特殊标志寄存器的作用与意义如表1 所示。

由表1 可知,空闲时间检测、报文起始字符、中断条件检测均可作为启动报文接受的条件,这些条件可单独或联合使用。结束字符、报文定时器、最大接受字符数以及接受信息校验出错均可独立成为结束报文接受的条件,其中只有收到结束字符属于正常结束。

2 S7-200PLC 自由协议通讯框架设计

2.1 通讯接口抽象

在上述技术分析的基础上,PLC 通讯由以下通用构件组成:

1)通讯状态初始化

定义各类通讯模式的相关工作参数,定义(绑定)各类通讯及相关事件的中断向量,使能通讯任务及相关中断。 并定义通讯协议参数。

2)通讯状态解除定义(还原)各类通讯模式参数,解除各类通讯及相关事件的中断向量绑定,禁止通讯及任务相关中断。

表1 S7—200 PLC 通信过程的控制与检测

3)报文发送

作报文发送前的数据准备工作(如数制转换、格式转换、数据计算),然后向约定的发送缓冲区施行数据填充,并执行发送指令。 由于RS485 口通讯报文接收由硬件自动完成,故不必也不可能由软件子程序来实现。 端口硬件自动完成报文接收后将产生中断。

4)报文信息校验

根据约定的算法校验数据缓冲区,并将校验结果通过入口参数返回,供调用者作针对性处理。

2.2 中断驱动通讯流程定义

1)报文接收完成中断服务

在完成一个数据报的接受任务后,根据约定算法和约定缓冲区中接受到的数据报,对报文进行完整性校验并作相应处理,处理结束后可启动其它通讯例程或设置通讯参数。

2)报文发送完成中断服务

在完成一个数据报的完成任务后可启动其它通讯例程或设置相关通讯参数。

2.3 自由协议通讯框架设计

S7-200PLC 自由协议通讯框架设计如图1 所示。

图1 S7-200PLC 自由协议通讯框架

该框架图包括以下几个部分的程序:主程序、通讯状态初始化子程序、通讯状态解除子程序、报文发送子程序、报文接收完成中断程序、报文发送完成中断程序、报文信息校验子程序。 其中主程序是核心,在每个扫描周期均被执行,并实施对通讯状态初始化子程序、通讯状态解除子程序、报文发送子程序等接口的功能调用。 当通讯状态初始化子程序正常执行、 数据报接受中断开启并有数据报被通讯口接受,则报文接收完成中断程序自动触发并执行,期间在进行数据检验时调用报文信息校验子程序。 当通讯状态初始化子程序正常执行、数据报发送中断开启并正常执行了报文发送子程序,则报文发送完成中断程序自动触发并执行。

3 通讯框架有效性例证

为验证上述通讯框架设计的有效性, 按照常规PLC 通讯技术要求设计了以下通讯案例。

3.1 功能要求

1)基本功能

通信接口:接口0;

通信变量缓冲器起始地址:VB100;

通信速率:19200bit/s;

字符数据位数:8 位;

奇偶校验:无;

最大发送/接收字符数:100 字符;

报文开始方式:使用起始字符;

报文起始字符:空格(ASII 码00);

报文结束方式:使用结束字符结束报文;

报文结束字符:CR(ASII 码0D);

报文检测:使用报文定时器检测功能,最大传输时间为1s;定时到达后强行终止传送。

2)校验和

“求和”校验码:传输的数据附加有“求和”校验码,总字符数位于用户数据的第1 字节,“求和”校验码位于缓冲区的最后。 当“求和”校验出错时,输出Q1.0 指示灯亮。

3.2 通讯参数

1)中断子程序设计

中断程序INT0:报文接收完成(绑定中断向量23)中断程序。在报文接收后调用“求和”校验功能SBR1。校验结果正确,则启动延时定时中断INT2。

中断程序INT1:回传报文完成(绑定中断向量9)中断程序。 回传报文完成后,重新启动报文接收INT0 的中断使能。

中断程序INT2:定时(绑定中断向量10)中断程序。延时定时5ms后,启动回传报文中断INT1。

2)报文格式设计

VB100:发送或接受的字节数;

VB101:起始字符;

VB102:用户数据总字符数;

VB103 ~VBn:用户数据;

VBn+1:“求和”校验码;

VBn+2:结束字符。

3)标志寄存器的值设置

①数据通信内部特殊标志寄存器的值。

SM30=05H(字符位数8 位, 不使用奇偶校验功能,无协议通信方式,波特率19.2kbit/s);

SM87=ECH(数据接受允许,使用起始、结束字符与报文定时器检测功能,生效报文定时器);

SMB89=0DH(结束字符为CR);

SMW92=1000(报文定时器时间为ls):

SMB94=100(最大发送/接收字符数为100)。

②定时中断内部特殊标志寄存器的值。

SMB34=5(定时中断定时为5ms)。

3.3 例证结果

通过上面的例证参数设计,S7-200 的通信接口0 在接受到数据并经过校验后延时5ms 即发回发送端。 发送端使用PC 机的com0 作为通讯口,在通讯工具软件上执行发送(计算好的校验和需作为最后的发送字符),可实时回显数据。

4 结论

针对PLC 通讯应用的灵活性和最大程度降低开发、 维护成本的要求,在对通用型西门子S7-200 小型PLC 的RS485 口自由协议通讯机制深入分析的基础上,设计了基于自由协议的S7-200 通讯框架。例证表明,在该框架下的通讯程序开发方式具有标准一致、效率高、易于复用性、维护简便等特点,在PLC 通讯领域应用中具有借鉴和应用的价值。

[1]夏链,王程,韩江.Profibus—DP 在柔性制造系统中的应用技术研究[J].机械制造,2009,47(542):59-60.

[2]张士磊,赵新蕖.基于PLC 和组态软件的变频器监控系统设计[J].工矿自动化,2010,(3):101-102.

[3]高锐,姜波.基于USS 协议的WinCC 与S7—200 变频器网络通讯研究[J].工业控制计算机,2009,22(5):3-4.

[4]贾仟伟,周以琳.基于S7-200PLC 的监控网络设计[J].硅谷,2010,(3):21-21.

[5]王昱,赵刚.基于USB 总线的PLC 与PC 自由口通信系统设计[J].中国西部科技,2005,(12):16-17.

[6]孙晓明,敖非.S7-200 PLC 与Danfoss 变频器自由口通信的实现[J].武汉理工大学学报:信息与管理工程版,2009,31(4):521-524.

[7]徐季曼,季钢.计算机和PLC 通讯在自动输送线系统中的应用[J].实验室研究与探索,2006,25(10):1227-1232.

猜你喜欢

子程序字符校验
字符代表几
一种USB接口字符液晶控制器设计
消失的殖民村庄和神秘字符
炉温均匀性校验在铸锻企业的应用
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定
子程序在数控车加工槽中的应用探索
简化编程与子程序嵌套的应用