跳到主要内容

Modbus系列的数据下发

支持Modbus协议的控制器或PLC,可以使用Modbus协议下发变量值。所有Modbus系列的下发操作方法都是相同的。 已支持的协议列表请查看👉 支持下发的协议列表
下面以 Modbus系列 - 标准Modbus - 标准Modbus(单) 为例,介绍 Modbus协议下发的操作方法

前提条件

  • 连接器通畅,数据可正常采集

支持下发的寄存器类型

并不是所有的寄存器类型都支持下载,在Modbus协议中,离散输入状态、输入寄存器仅支持读操作

  • ✅ 线圈状态 可读可写
  • ✅ 保持寄存器 可读可写
  • ❌ 离散输入状态 只读,不可下发
  • ❌ 输入寄存器 只读,不可下发
注意

注意:在下发数据至保持寄存器时。 如果您选择的数据类型为 8位有符号、8位无符号、16位有符号、16位无符号时将使用 06 功能码(写单个寄存器)进行下发;

32位以及以上数据下发时,将使用 16 功能码(写多个寄存器)进行下发;

如果您需要使用 06 功能码且需要写入 32位以及以上数据时,需要自行拆分数据点,即:使用多个数据点进行下发。
但请注意,您在多个数据下发的间隔时间中,您的数据准确性无法保证。 因此,建议您在下发多寄存器时使用 16 功能码进行下发。

将数据点设置为读写类型

在数据点编辑页面,将数据点类型的 读写类型 改为 读写
注意!读写选项只有在 线圈状态 以及 保持寄存器 两种寄存器类型时可选。
其他寄存器类型只有 只读 选项

下面展示一个数据点示例,一个产量数据存储在保持寄存器中。在配置时:
寄存器类型选择 保持寄存器
读写类型选择 读写
数据点设置为读写类型 至此,下发数据的准备工作已经完全做好了

提示

设置完成之后别忘记点击保存按钮

下发数据

在将数据点设置为读写类型之后,可以通过 2 种方式进行数据下发。

  1. 数据点监控页面手动输入
  2. HTTP API调用

数据点监控页面手动输入

点击数据点监控菜单 在连接器视图或者设备视图中,可以在数据点的卡片上查看数据点的实时采集值。读写类型的数据点卡片会多一个下发按钮 如何找到下发按钮 点击下发按钮,即可打开下发操作界面
在当前页面输入下发值,要进行下发操作,请点击确定按钮 下发操作流程

下发弹窗字段含意解释

  • 数据点。数据点名称和编号,方便您检查要下发的数据点和预期是否一致
  • 采集值。实时刷新最新的采集值。绿色时代表采集正常,红色时代表采集出错
  • 下发值。要下发的新值,数值类型时请填写数字,布尔类型时请填写 true 或者 false
  • 超时(秒)。设置当前操作等待时间,注意,超时之后,系统将为您返回超时提示信息,但是下发操作可以已经下达,无法取消,请注意比较数据。

HTTP API 调用

接口地址

http://{ip}:{port}/api/point/value/write

将上方ip替换为 NodeSCADA 安装计算机的 ip,端口一般为 5427 参数格式为 json

  • Method: POST
  • Content-Type: application/json
  • 三个参数:
    • code String 数据点ID,可在连接器列表查看
    • value String 要下发的值
    • timeout Int 超时时间(秒)

下面是一个 CURL 示例

curl "http://localhost:5173/api/point/value/write" 
-H "Accept: application/json, text/plain, */*"
-H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8"
-H "Connection: keep-alive"
-H "Content-Type: application/json"
-H "Sec-Fetch-Dest: empty"
-H "Sec-Fetch-Mode: cors"
-H "Sec-Fetch-Site: same-origin"
--data-raw "{\"code\":\"DE-015_yield\",\"value\":\"10\",\"timeout\":2}"

下面是一个 fetch 示例

fetch("http://localhost:5173/api/point/value/write", {
"headers": {
"content-type": "application/json"
},
"body": {"code":"DE-015_yield","value":"10","timeout":2 },
"method": "POST"
});