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设置:
-
设置 Trigger_write 算子参数:
-
类型 → Trigger
-
-
设置 CommonTCPClient_write 算子参数:
-
主机地址 → 192.168.3.227 (根据server设备的IP值确定)
-
端口 → 502
-
单元标识符 → 247 (根据server设备的设置确定)
-
单次模式 → 是
-
地址 → 2 (选择要读写操作的数据位置)
-
命令 → write
-
对象类型 → holding register
-
数据 → 123 (测试时要写入的值)
-
read设置:
-
设置 Trigger_read 算子参数:
-
类型 → Trigger
-
-
设置 CommonTCPClient_read 算子参数:
-
主机地址 → 192.168.3.227 (根据server设备的IP值确定)
-
端口 → 502
-
单元标识符 → 247 (根据server设备的设置确定)
-
单次模式 → 是
-
地址 → 2 (选择要读写操作的数据位置)
-
命令 → read
-
对象类型 → holding register
-
步骤3:连接算子
算子连接如下图所示
步骤4:运行
运行RVS,依次触发 write 和 read 的 Trigger 启动,write部分将保持寄存器的位置 2 写入了数据 “123” ,read 部分读取保持寄存器的位置 2 的内容并通过 output_value 端口输出。