codesys runtime的modbusTCP服务器设置

codesys WINRT的modbusTCP服务器

我们都知道在以太网上可以使用modbusTCP来进行通讯。以太网通讯需要有服务器和客户端。一般的PLC是在控制器上建立一个服务器器。像上位机及高一层的设备可以连接PLC,最常用的是用modbusTCP的功能4读取输入寄存器的内容,用功能3读取保持寄存器的内容。也可以写PLC的内容。但是,在codesys当中的配置和常规的想法不一样,可能造成混淆。

codesys建立服务器

在控制器侧建立服务器按常规想法是建立一个modbus_TCP_master. 但在实际应用中,我们需要在设备树上添加modbus_TCP_slave_device. 这是在建立服务器最容易混淆的部分。正确的做法如下:
在这里插入图片描述
各部分设置如下。

通用设置

  • 总线从站端口:常规设置为502.
  • 保持寄存器:这里可以设置要使用的保持寄存器的多少,占用的地址为%IW
  • 输入寄存器:这里是输入寄存器的地址的多少,占用的地址为%QW。
  • 设置是否有要设置输入和输出离散量的地址。

串口网关

在这里是否使用串口网关。

modbus_TCP_slave_device的映射

这一部分设置于控制器中的地址的映射。

将设置的保持寄存器和输入寄存器于具体的地址关联起来。这里我们设定了10各保持寄存器和10各输入寄存器。映射关系在这里设置。
在这里插入图片描述
下面是modbus_TCP_Slave_Device IEC对象,状态和信息项没有设置的部分。

服务器功能实验

在GVL全局变量库中建立一个变量:

VAR_GLOBAL
	IO_QW0 AT %QW0 : INT;
END_VAR

增加一段数据增加的程序,然后下载运行程序。

在这里插入图片描述
在外部计算机上运行多功能调试助手
在这里插入图片描述
选择端口为502,连接服务器。显示连接服务器成功。在发送区输入modbusTCP读取输入寄存器的内容,我们读取10个输入寄存器的内容。命令16进制码如下:
00 01 00 00 00 06 05 04 03 E8 00 0A
返回帧如下,分别是两次的返回帧:
返回帧1:
00 01 00 00 00 17 05 04 14 21 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
返回帧2:
00 01 00 00 00 17 05 04 14 21 DA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
其中的字节9和字节10是程序中的输入寄存器1的内容是在程序中不断递增的。

总结

使用modbusTCP可以方便的实现外部于codesys控制器的的数据通讯。但在配置时容易产生混淆,我认为codesys是以外部设备的角度来看服务器和从站设备,在这里记录下来供大家参考。

Guess you like

Origin blog.csdn.net/weixin_44481398/article/details/120038035