Modbus系列的数据下发
支持Modbus协议的控制器或PLC,可以使用Modbus协议下发变量值。所有Modbus系列的下发操作方法都是相同的。
已支持的协议列表请查看👉 支持下发的协议列表。
下面以 Modbus系列 - 标准Modbus - 标准Modbus(单) 为例,介绍 Modbus协议下发的操作方法
前提条件
- 连接器通畅,数据可正常采集
支持下发的寄存器类型
并不是所有的寄存器类型都支持下载,在Modbus协议中,离散输入状态、输入寄存器仅支持读操作
- ✅ 线圈状态 可读可写
- ✅ 保持寄存器 可读可写
- ❌ 离散输入状态 只读,不可下发
- ❌ 输入寄存器 只读,不可下发
注意:在下发数据至保持寄存器时。 如果您选择的数据类型为 8位有符号、8位无符号、16位有符号、16位无符号时将使用 06 功能码(写单个寄存器)进行下发;
32位以及以上数据下发时,将使用 16 功能码(写多个寄存器)进行下发;
如果您需要使用 06 功能码且需要写入 32位以及以上数据时,需要自行拆分数据点,即:使用多个数据点进行下发。
但请注意,您在多个数据下发的间隔时间中,您的数据准确性无法保证。
因此,建议您在下发多寄存器时使用 16 功能码进行下发。
将数据点设置为读写类型
在数据点编辑页面,将数据点类型的 读写类型 改为 读写
注意!读写选项只有在 线圈状态 以及 保持寄存器 两种寄存器类型时可选。
其他寄存器类型只有 只读 选项
下面展示一个数据点示例,一个产量数据存储在保持寄存器中。在配置时:
寄存器类型选择 保持寄存器。
读写类型选择 读写
至此,下发数据的准备工作已经完全做好了
设置完成之后别忘记点击保存按钮
下发数据
在将数据点设置为读写类型之后,可以通过 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"
});