关于Modbus TCP通讯调试过程的那些事1
Modbus TCP服务器与调试工具的应用
随着市面上的Modbus TCP器件的推广,用户的应用也逐渐普及,为结合公司能源管理的深入开展,近期针对Modbus TCP的应用也越来越多,现总结一些应用心得如下。
下面例子测试作为Modbus TCP服务器的测试、创建过程:
1) 创建测试项目,portal版本V15 cpu S7-1214C 版本V4.2,调用软件:IoTClient Tool – Modbus Tcp
创建测试plc项目,图示1: 
IP地址设置:192.168.0.1
2) 在OB1中把“通讯”指令下的“其它”菜单下Modbus TCP的服务器指令拖拽到编辑区,图示2:

根据MB_SERVER通讯指令创建对应的数据块并填充各管脚。
MB_SERVER通讯指令主要管脚解释:
其中:
输入:
DISCONNECT:= 0激活Modbus TCP通讯, = 1关闭Modbus TCP通讯;
MB_HOLD_REG:用户自定义服务器数据交换区;
CONNECT:Modbus TCP的通讯协议定义,用户协议自创建一个DB块,专门定义Modbus TCP的通讯协议:TCON_IP_V4。
输出:
相对简单,是一些通讯标志位及报警信息。
CONNECT管脚对应的数据块DB2的创建,图示3:

系统自动生成各通讯参数:
Interceld:通讯接口硬件映射地址,cpu属性“系统常数”中可以 查询到协议连接的以太网接口;
ID: 连接标设符,写1;
ConnectionType:通讯模式,Modbus TCP = 16#0B ;
ActiveEstablished:主动、被动连接,服务器 = 0(false);
RemoteAddress:远程站IP地址,ADDR[1]~ADDR[4] = 0。自动设别;
RemotePort:远程站端口号;
LocalPort:本地站端口号;502
将设置好的DB3挂到CONNECT管脚中。
3) 编译、保存将项目下载到plc中,打开IoTClient Tool – Modbus Tcp软件,图示:4:

服务器通讯指令管脚STATUS = 16#7006,空闲,正常没有报警。
4) 根据PLC的IP地址范围,在图示软件中设置plc的IP地址及端口号:502,图示5:

IP窗口设置plc的IP地址,端口设置502,连接通讯成功。
5) 创建监控表,新建DB3.DBW0的几个测试数据,分别给DB3.DBW0 = 1、DB3.DBW2 = 2、DB3.DBW4 = 3赋值后,到图示软件中读取这些变量地址的数据,图示6:

DB3数据块的数据被调试软件读回。
修改数据,再试,图示7:

通讯正常,数据读回。
6) 将123的数据写到DB3.DBW2中,图示8:

调试软件的通讯地址按40001 + 1方式写入,调试软件地址写0,则对应plc侧的通讯地址是DB3.DBW2。
小结:
Modbus TCP通讯是基于以太网硬件连接方式的modbus通讯模式,随着第三方器件的不断涌现,应用也会越来越多。西门子S7-1200的Modbus TCP通讯应用,通过官方手册资料及1847视频讲解,应用相对还是比较容易快速入门的,用户只需要遵循编写通讯的基本原则,基本一次性可以通过,在测试时MB_SERVER指令的STATUS会出现报警,如16#80B7,则是图示客户机没有启动建立连接,16#7002,则表示通讯等待,正在建立连接的信息。
另外,在填充MB_SERVER指令的CONNECT管脚参数,需要用户自行先创建DB数据块,在定义数据类型时,数据类型:TCON_IP_V4是需要用户自己手动写入,而系统没有这个选项。字符没有大、小写区别要求,系统会自动设别并产生协议参数,用户根据具体的需要自行填写TCON_IP_V4必要的参数数据。