S7-1214C的Modbus_tcp通讯验证
Modbus_tcp自推出面向市场以来很长一段时间,我没有做过类似的验证,只是一直在官方的文档上看到过案例。近期想抽一个空闲做一个程序验证一番。验证的软件是版本V15,plc是S7-1214C DC/DC/DC ,连接的测试软件是卓岚TCP&UDP调试软件(网上下载的),验证的目的是为了真正应用时,有一些了解的前提下相对从容一点。
验证:客户端
官方的例子程序中,在S7-1200系列PLC中的“属性”---“常规”---“硬件标设符”,由于portal版本的更替,V15版本可以在“属性”---“系统常数”中找到,图示:

客户端程序:
在OB1(合适的子程序块)中将“通讯”下的“其它”---“Modbus tcp”---“MB_CLIENT”指令块拖拽到编辑区,图示:

拖拽到编辑区时,会自动生成一个背景数据块(DB1),看官方手册,每一个MB_CLIENT需要有自己独立的背景数据块。按说明要求填写各管脚参数,图示:

创建一个数据块,新建一个变量stat1,数据类型“TCON_IP_v4”:

根据调试软件定义远程站IP地址:192.168.0.100,端口号:500
填写MB_CLIENT指令各管脚参数,图示:

调用系统时钟,REQ用系统时钟脉冲触发。
连接好网线,将编译没有错误的程序下载到PLC。本方IP地址:192.168.0.1:

下载。
打开Modbus_tcp软件,设置为服务器,本地端口设置:500必须与设置一致。

在MB_CLIENT的“MB_DATA_PTR”管脚赋值10进制数256,看Modbus_tcp软件接收区数据,图示:

MB_DATA_PTR管脚数据“256”,成功被Modbus_tcp软件接收到第2个字节的第0位为1.
根据此方法,在MB_DATA_PTR管脚数据写入“513”,接收区数据图示:

至于接收区数据显示的“算法”,因为我没有该软件的详细说明书,也只能是一种推断了。
为调试修改参数方便,我又将MB_DATA_PTR修改为变量地址MD20(数据VARIANT)图示:

当我将MB_DATA_PTR用变量MD20测试时,数据发送没有问题,只是在STATUS状态值为28673、28674之间跳变,而非7000或7002#状态值。
有机会进行实际项目的验证和测试,看该通讯的实际应用情况。