理论教育 S7-200 SMART PLC的自由口通信优化实践

S7-200 SMART PLC的自由口通信优化实践

时间:2023-06-27 理论教育 版权反馈
【摘要】:S7-200 SMART的自由口通信是基于RS-485通信基础的半双工通信,西门子S7-200 SMART系列PLC拥有自由口通信功能,即没有标准的通信协议,用户可以自己规定协议。第三方设备大多支持RS-485串口通信,西门子S7-200 SMART系列PLC可以通过自由口通信模式控制串口通信。不论任何情况,都通过S7-200 SMART系列PLC编写程序实现。由于S7-200 SMART CPU通信端口是RS-485半双工通信口,因此发送和接收不能同时处于激活状态。凡是符合这些格式的串行通信设备,理论上都可以和S7-200 SMART CPU通信。

S7-200 SMART PLC的自由口通信优化实践

S7-200 SMART的自由口通信是基于RS-485通信基础的半双工通信,西门子S7-200 SMART系列PLC拥有自由口通信功能,即没有标准的通信协议,用户可以自己规定协议。第三方设备大多支持RS-485串口通信,西门子S7-200 SMART系列PLC可以通过自由口通信模式控制串口通信。最简单的使用案例就是只用发送指令(XMT)向打印机或者变频器等第三方设备发送信息。不论任何情况,都通过S7-200 SMART系列PLC编写程序实现。

自由口通信的核心就是发送(XMT)和接收(RCV)两条指令,以及相应的特殊寄存器控制。由于S7-200 SMART CPU通信端口是RS-485半双工通信口,因此发送和接收不能同时处于激活状态。RS-485半双工通信串行字符通信的格式可以包括一个起始位、7或8位字符(数据字节)、一个奇/偶校验位(或者没有校验位)、一个停止位。

标准的S7-200 SMART只有一个串口(为RS-485),为Port0口,还可以扩展一个信号板,这个信号板由组态时设定为RS-485或者RS232,为Port1口。

自由口通信波特率可以设置为1200、2400、4800、9600、19200、38400、57600或115200bit/s。凡是符合这些格式的串行通信设备,理论上都可以和S7-200 SMART CPU通信。自由口模式可以灵活应用。STEP7-Micro/WIN SMART的两个指令库(USS和Modbus RTU)就是使用自由口模式编程实现的。

S7-200 SMART CPU使用SMB30(对于Port0)和SMB130(对于Port1)定义通信口的工作模式,控制字节的定义如图6-3所示。

978-7-111-43442-9-Chapter06-4.jpg

图6-3 控制字节的定义

1)通信模式由控制字的最低的两位“mm”决定。

●mm=00:PPI从站模式(默认这个数值)。

●mm=01:自由口模式。

●mm=10:保留(默认PPI从站模式)。

●mm=11:保留(默认PPI从站模式)。

所以,只要将SMB30或SMB130赋值为2#01,即可将通信口设置为自由口模式。

2)控制位的“pp”是奇偶校验选择。

●pp=00:无校验。

●pp=01:偶校验。

●pp=10:无校验。

●pp=11:奇校验。

3)控制位的“d”是每个字符的位数。

●d=0:每个字符8位。

●d=1:每个字符7位。

4)控制位的“bbb”是波特率选择。

●bbb=000:38400bit/s。

●bbb=001:19200bit/s。

●bbb=010:9600bit/s。

●bbb=011:4800bit/s。(www.daowen.com)

●bbb=100:2400bit/s。

●bbb=101:1200bit/s。

●bbb=110:115200bit/s。

●bbb=111:57600bit/s。

1.发送指令

以字节为单位,XMT向指定通信口发送一串数据字符,要发送的字符以数据缓冲区指定,一次发送的字符最多为255个。

发送完成后,会产生一个中断事件,对于Port0口为中断事件9,而对于Port1口为中断事件26。当然也可以不通过中断,而通过监控SM4.5(对于Port0口)或者SM4.6(对于Port1口)的状态来判断发送是否完成,如果状态为1,说明完成。XMT指令缓冲区格式见表6-2。

表6-2 XMT指令缓冲区格式

978-7-111-43442-9-Chapter06-5.jpg

2.接收指令

以字节为单位,RCV通过指定通信口接收一串数据字符,接收的字符保存在指定的数据缓冲区,一次接收的字符最多为255个。

接收完成后,会产生一个中断事件,对于Port0口为中断事件23,而对于Port1口为中断事件24。当然也可以不通过中断,而通过监控SMB86(对于Port0口)或者SMB186对于Port1口)的状态来判断发送是否完成,如果状态为非零,说明完成。SMB86和SMB186含义见表6-3,SMB87和SMB187含义见表6-4。

表6-3 SMB86和SMB186含义

978-7-111-43442-9-Chapter06-6.jpg

(续)

978-7-111-43442-9-Chapter06-7.jpg

表6-4 SMB87和SMB187含义

978-7-111-43442-9-Chapter06-8.jpg

与自由口通信相关的其他重要特殊控制字/字节见表6-5。

表6-5 其他重要特殊控制字/字节

978-7-111-43442-9-Chapter06-9.jpg

RCV指令缓冲区格式见表6-6。

表6-6 RCV指令缓冲区格式

978-7-111-43442-9-Chapter06-10.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈