通过以太网进行 Modbus 主从通信


硬件

  • Raspberry Pi B xy 作为 Modbus 主机
  • CODESYS Control Win V3 作为 Modbus 从站

Modbus 主站的要求

  • 创建一个“标准项目”并选择“CODESYS Control for Raspberry Pi SL”作为设备。
  • 通过网络搜索连接目标系统。

图1

  • 在设备树中插入一个以太网适配器、一个Modbus_TCP_Master和一个Modbus_TCP_Slave 。

图2

  • 修改 PLC_PRG 如下:

图3

Modbus 从站的要求

  • 创建一个标准项目并选择 CODESYS Control Win V3 作为设备。
  • 通过网络搜索连接目标系统(参见 Modbus 主站)。
  • 在设备树中插入以太网适配器和 Modbus_TCP_Slave_Device。

图4

以太网适配器上的设置(主站和从站)

  • 确定要使用的接口。

如果未确定目标系统,则会显示一条错误消息,“未配置网关”

图5

Modbus_TCP_Slave 上的设置(主站)

General 选项卡

  • 输入从站设备的 IP 地址(在本例中为 CODESYS Control Win V3)
  • 为 Modbus 配置发布一个唯一 ID

图6

Channel 选项卡

  • 创建一个输入寄存器(由 Modbus 从站设备发送的计数器)——每 100 毫秒循环更新一次。

图7

  • 创建一个输出寄存器以编写您自己的计数器。

图8

图9

输入输出映射

  • 分配输入和输出变量。

选项“Enabled 1”的设置是必要的,因为变量“xExec”未在任何任务中使用,因此写入将不起作用。

图10

Modbus_TCP_Slave_Device(从站)上的设置

General 选项卡

  • 激活通信监控。

图11

设备 ID 不得用于 Modbus TCP! 这仅用于 TCP/RTU 网关。

元 ID 仅用于转发(网关)到 Modbus 串行总线。 对于 TCP/IP,MODBUS 服务器通过 IP 地址寻址。在这种情况下,不使用 MODBUS 单元 ID(必须使用值 0xFF)。 对于串行连接,Modbus 设备使用从 1 到 247 的单元 ID 寻址(0 用于广播地址)。

I/O Mapping 选项卡

  • 分配输入和输出变量。

图12

下载并启动项目

主站

  • 将应用程序加载到控制器。

图13

从站

  • 将应用程序加载到控制器

只有在主站中手动触发传输后,该值才会更改

图14