S7-200系列PLC自由口通信知识分享(2)
在上一篇文章中,我们提到了有关于自由口通信的一些基础知识,给大家解释了什么叫通信协议,什么叫信息帧或消息报文,起始符/结束符与起始位/停止位之间的关系。那么今天就跟大家聊聊西门子S7200系列的自由口通信功能及程序的设计
自由口通信模式(Freeport Mode)是S7-200系列PLC的一个很有特色的功能,借助自由口通信,用户可以自己使用(XMT和RCV)对端口进行操作,可以是S7-200系列PLC与任何通信协议已知且具有串口的智能设备和控制器实现通信,如打印机,变频器,智能仪表等。
S7-200CPU上的通信口在电气上是标准的RS-485半双工串行通信(所谓半双工通信即发送和接收不能同时进行,所以在设计程序的时候,发送完后才能接收 ,接收完后才能发送)此串行字符通信的格式可以包括:
(1)一个起始位
(2)7位或是8位字符(数据字节)
(3)一个奇/偶校验位,或者没有校验位
(4)一个停止位
(5)波特率:1200、2400、4800、9600、19200、38400、57600或112500bps的波特率
满足以上条件的通信的格式,都可以使用自由口通信的方式去完成信息的交换。
若需要使用PLC通过自由口的方式发生数据出去,必须完成以下几个内容:
(1)通信格式的设置,用于规定通信双方的通信格式
(2)PLC需要通过XMT指令发送的数据,可以根据通信协议提供的信息帧格式去准备,
(3)信息发送完成的判断,用户只有根据信息是否发送完成后 ,才可以进行信息的接收程序的设计或是决定下一次的发送。
以上一篇文章中提到的仪表的通信协议为例:
(1)设置要PLC的中的通信格式字。
通信格式字的设置对于PLC来讲有特殊的系统存储器来进行存储,在200系列PLC中通过SMB30(port0口)SMB130(Port1口)来进行存储,设置通信格式字是必须配合从站设备来进行设置,如下所示为仪表提供的参数设置
在这里面,若选择9600的波特率,一位停止位、8个数据、无校验的方式,(注意:不能设置为2个停止位,因PLC自由口通信时不支持2个停止位)。则PLC中通信格式字可设置为16#09.通信格式字按照下图所示进行设置:
(2)根据通信协议准备需要通过XMT指令发送出去的数据:
假设需要读取仪表中的过程值,需要根据通信协议的格式,然后准备好相应的数据:
XMT指令格式:
注:T表示的是指令中TBL的地址,如如所示: T表示VB0,所以T+0表示VB0,T+1,表示VB1依次下去。port表示的是PLC的端口号。
可以通过在数据块中定义好你需要发送的数据:
(3)信息发送完成的判断
判断信息是否发送完成可以通过两种方式进行判断,
一种使用发送完成中断的方式去判断
port0和port1有对应发送完成中断事件,可以通过发送完成中断事件来判断信息是否发送完成。PORT0和PORT1两个端口分别分配了两个中断事件用来表示信息发送完成。对于PORT0口来说分配中断事件9,对于PORT1口来说分配中断事件26
也可以通过系统存储位来进行判断.
通过特殊完成标志位来进行判断,可以通过对发送完成标志位SM4.5(port0)或SM4.6(port1)的监控来判断数据是否发送完成。SM4.5=1 表示端口0处于空闲状态,SM4.5 = 0 表示端口0处于传送状态。