西门子S7-200SMART PLC的Modbus TCP通信功能及应用
Modbus TCP通信概述
Modbus TCP是通过工业以太网TCP/IP网络传输的 Modbus 通信。S7-200 SMART采用客户端-服务器方法,Modbus客户端设备通过该方法发起与Modbus服务器设备的TCP/IP连接。
建立连接后,客户端向服务器发出请求,服务器将响应客户端的请求。客户端可请求从服务器设备读取部分存储器,或将一定数量的数据写入服务器设备的存储器。如果请求有效,则服务器将响应该请求;如果请求无效,则会回复错误消息。S7-200 SMART支持做Modbus TCP的客户端或者服务器,可以实现PLC之间通信,也可以实现与支持此通信协议的第三方设备通信。
通信伙伴数量比较多的时候,可以使用交换机,扩展以太网接口。STEP7-Micro/WIN SMART从V2.4版本开始,软件中直接集成Modbus TCP库指令,无需单独安装或者购买。安装软件后,Modbus TCP指令位于软件项目树中 “指令” 文件夹的 “库” 文件夹中,通过库指令,可以帮助客户快速便捷的实现设备间的Modbus TCP通信。
Modbus TCP通信标准指令库
标准指令库-客户端通信MBUS_CLIENT指令
EN:使能参数,一般使用SM0.0保证每个扫描周期都能开启。
Req:请求通信参数,置位时表示向服务器发送Modbus通信请求。
Connect:建立连接参数,置位时表示尝试与分配IP地址和端口号的服务器建立连接;复位时表示断开连接忽略任何通信请求。
IPAddr1-4:Modbus TCP服务器的IP地址的从高到低四个字节。
IP_Port:客户端尝试连接、且随后使用 Modbus TCP 进行通信的服务器的端口号,默认值502。
RW:读写参数,0=读,1=写。
Addr:要进行读写的Modbus起始地址。
Count:要读写对应连续地址的个数。
DataPtr:数据存储器地址指针,指向本地用于读/写操作的数据地址区域的首地址。
Done:当客户端与服务器建立连接、断开连接,响应连接或发生错误这其中任一情况发生时该位为1;当客户端正忙于建立连接或等待来自服务器的 Modbus 响应时,该位为0。
Error:指令执行的结果,仅一个周期内有效(错误代码详见系统手册指令说明)。
读写功能码和参数地址
S7-200 SMART做Modbus TCP通信,可以支持的功能码及功能描述及所占用的地址区,如表所示。客户端会主动的发送请求,服务器响应。在通信指令填写参数中没有直接填写功能码,而是通过多个参数填写共同确定功能码。
标准指令库-服务器通信MBUS_SERVER指令
EN:使能参数,一般使用SM0.0保证每个扫描周期都能开启。
Connect:建立连接参数,置位时表示尝试接受来自客户端的请求;复位时表示服务器可以断开已经建立的连接。
IP_Port:客户端尝试连接、且随后使用Modbus TCP进行通信的服务器的端口号,默认值502。
MaxIQ:用于Modbus地址0xxxx到1xxxx的I和Q点数设置为0至 256。值0表示禁用对输入和输出的所有读取和写入。建议设置为256。
MaxAI:用于Modbus地址3xxxx的字输入 (AI) 数设置为0至56。值0表示禁用对模拟量输入的读取。要允许访问所有CPU模拟量输入,MaxAI 的建议值如下:对于CPU CR40和CR60,为0;对于所有其它CPU型号,为56。
MaxHold:用于Modbus地址4xxxx或4yyyyy 的V存储器中的字保持寄存器数。
HoldStart:指向V存储器中保持寄存器起始位置的指针。
Done:当服务器已连接至客户端、与客户端断开连接,响应连接或返回错误这其中任一情况发生时,该位为1;没有请求用于此程序周期时,该位为0。
Error:指令执行的结果,仅一个周期内有效(错误代码详见系统手册指令说明)。
应用实例
通过Modbus TCP标准指令库,实现CPU之间的数据交换,其中客户端IP地址为192.168.2.1,服务器IP地址为192.168.2.2,端口号为默认值502,将服务器VB1000-VB1004中的数据读取至客户端VB100-VB104中,将客户端中VB200-VB204的数据写入服务器VB2000-VB2004。
客户端程序:
客户端程序:
服务器程序:
执行结果: