西门子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。

    客户端程序:

    客户端程序:

    服务器程序:

    执行结果:

    商务达