CommonModbusClient 通用Modbus客户端

CommonModbusClient 算子用于启动一个 Modbus 客户端(client/master),向服务端(server/slave)发送数据读写请求。该算子采用 TCP/IP 协议。

算子参数

  • 主机地址/host:申请访问的 Modbus TCP server 服务器的 ip 地址。

  • 端口/port:申请访问的 Modbus TCP server 服务器的服务端口。协议默认值:502。

  • 单元标识符/unit_identifier:服务器地址(Server address)。如果未使用,默认255。

  • 单次模式/once_mode:该算子每次被触发,都会先同TCP服务端建立链接再进行读写操作,操作完成后直接断开链接。如果关闭该选项,每次触发算子运行,不会建立新的链接,而是在上一次链接的基础上继续进行读写操作。

  • 地址/address:数据寻址地址,选择要操作的数据位

  • 命令/command:选择操作方式,分为读取 read 和写入 write 两种操作

  • 对象类型/mb_object_type:选择要操作的数据模型。 在读取read模式下,支持:线圈、离散输入、输入寄存器、保持寄存器 四种数据对象。 在写入write模式下,支持:线圈、保持寄存器 两种数据对象。

主表 操作 大小 特征
线圈/Coil 读写 1 位 读/写开/关值
离散输入/Discrete input 只读 1 位 读取开/关值
输入寄存器/Input register 只读 16 位 (0–65,535) 读取测量值和状态
保持寄存器/Holding register 读写 16 位 (0–65,535) 读/写配置值
  • 数据/data:输入数据值,仅在write下可用 在开/关(i/o)对象模型时为bool类型,在寄存器对象模型时为16位数值(采用十进制表示0-65,535)

数据信号输入输出

输入:

  • input_value

    • 数据类型:String

    • 输入内容:write 操作时传入的数据,如果没有输入,则使用data参数的值。 当对象结构为 coil 时,输入 String 为 “0” 或 “false” 表示 “关” ,否则为 “开”; 当对象结构为 Holding register 时,输入 string 为 “0” ~ “65535” 的数值。

输出:

  • output_value:

    • 数据类型:String

    • 输出内容:read 操作时传出的数据。 当对象结构为 Coil 或 Discrete input 时,输出内容为 “0” 或 “1” 表示 “关” 或 “开” ; 当对象结构为 Input register 或 Holding register 时,输出内容为 “0”~”65535” 的数值。

在 write 模式下为输入,read 模式下为输出。 在开/关(i/o)对象模型时为bool类型,在寄存器对象模型时为16位数值(采用十进制表示)

功能演示

本节将使用两个 CommonModbusClient 算子,分别对同一个目标服务地址进行写和读的操作。

步骤1:算子准备

添加 两对 Trigger、CommonModbusClient 算子至算子图,分别增改命名后缀 _write 和 _read

步骤2:设置算子参数

write设置:

  1. 设置 Trigger_write 算子参数:

    • 类型 → Trigger

  2. 设置 CommonTCPClient_write 算子参数:

    • 主机地址 → 192.168.3.227 (根据server设备的IP值确定)

    • 端口 → 502

    • 单元标识符 → 247 (根据server设备的设置确定)

    • 单次模式 → 是

    • 地址 → 2 (选择要读写操作的数据位置)

    • 命令 → write

    • 对象类型 → holding register

    • 数据 → 123 (测试时要写入的值)

read设置:

  1. 设置 Trigger_read 算子参数:

    • 类型 → Trigger

  2. 设置 CommonTCPClient_read 算子参数:

    • 主机地址 → 192.168.3.227 (根据server设备的IP值确定)

    • 端口 → 502

    • 单元标识符 → 247 (根据server设备的设置确定)

    • 单次模式 → 是

    • 地址 → 2 (选择要读写操作的数据位置)

    • 命令 → read

    • 对象类型 → holding register

步骤3:连接算子

算子连接如下图所示 CommonModbusClientNode-1

步骤4:运行

运行RVS,依次触发 write 和 read 的 Trigger 启动,write部分将保持寄存器的位置 2 写入了数据 “123” ,read 部分读取保持寄存器的位置 2 的内容并通过 output_value 端口输出。

CommonModbusClientNode-2