Modbus 动作
先在通信协议页保存实际 UART/RS485、读取任务或控制设备,并核对当前实例、从站与配置。虚拟目标由协议配置注册,不在普通外设页手建类型 51。
| actionType | targetPeriphId | actionValue |
|---|---|---|
| 16 | modbus:N 控制设备 | "通道:状态" 或 "状态",按已保存 relay 协议用 FC05/FC06 |
| 17 | modbus:N 控制设备 | "寄存器地址:值" 或 "值",FC06 |
| 18 | modbus-task:N 读取任务 | JSON 对象字符串,例如 {"poll":[0,1]} |
索引、物模型字段和从站地址不同,不可互换。状态只接受 0/1/false/true/off/on 等支持值,数值须为范围内完整十进制整数;不能写成 {"ch":0,"val":1} 或 {"reg":100,"val":512}。
动作对象示例
{
"actionType": 16,
"targetPeriphId": "modbus:0",
"actionValue": "0:1",
"syncDelayMs": 0,
"execMode": 0
}{
"actionType": 17,
"targetPeriphId": "modbus:1",
"actionValue": "100:512",
"syncDelayMs": 0,
"execMode": 0
}以上会请求真实输出,必须确认设备映射与授权范围。首次输出失败或结果未知不自动重发。
读取两个已存在任务:
{
"actionType": 18,
"targetPeriphId": "modbus-task:0",
"actionValue": "{\"poll\":[0,1]}",
"syncDelayMs": 0,
"execMode": 0
}动作 18 的已实现控制字段形如 {"ctrl":[{"d":0,"a":"on","c":0}]},d 是设备索引、a 是受支持动作、c 是通道;不能改用自造 type/idx/val 字段。生产配置优先分开读取与控制,启动状态补报只处理 poll,忽略 ctrl,不重放输出。
周期与条件
轮询触发 intervalSec 使用秒,响应超时和请求间隔使用毫秒。含采集动作的周期到期会执行整条规则;告警另用实际数据源事件,不能把本轮读取结果当成后续动作的自动门控。读取经过批次预算与总线仲裁,添加延时不能代替仲裁或实际动作反馈。
结构化与 RAW 透传分别处理。完整上报、样本质量、原采样时间、规则记录和实物测量各自核对;reportAfterExec 不保证平台收到。
输出结果
控制绑定实际实例、配置、从站与来源,配置变化后旧任务不能转投新设备。ACK 仅协议确认,physicalOutputVerified=false。批量命令首败保留已确认前缀,不重发整批;attemptKnown=false/attempted=null 表示是否写入尚未知,不能当成未执行再试。
延时控制区分前序 ACK、安排、到期写入和未知结果;有效回执被后续写覆盖、实例退休或重启后不能安排旧反向动作。电机经既有 MotorControlService 与行程准入,TRAVEL_REFERENCE_REQUIRED 需核对参考位置,不取消保护。
详细字段见Modbus RTU,确认与重试见控制结果。

