dommessage
This commit is contained in:
13
docs/数据流转.md
13
docs/数据流转.md
@@ -166,16 +166,17 @@ SerialQtDriver(read callback)
|
||||
|
||||
### 8.2 Mapper 行为(Modbus RTU)
|
||||
|
||||
`ModbusRtuProtocolMapperPlugin` 当前行为:
|
||||
`ModbusRtuProtocolMapperPlugin` + `PipelineEngine` 内 `IMappingLookup` 组合行为:
|
||||
|
||||
1. 对 `ReadHoldingRegistersRequest` 记录 `unitId -> startAddress`,用于后续响应地址回填。
|
||||
2. 对 `ReadHoldingRegistersResponse` 遍历寄存器并构造 `compositeKey`:
|
||||
- `compositeKey = endpointHash + protocol + slaveId + registerAddress`(位拼接)。
|
||||
3. 若 `MappingRegistry` 命中:
|
||||
- 生成 `DOMMessage`,`messageId = domPath`,并应用 `scale/offset/unit`。
|
||||
4. 若未命中:
|
||||
- 仅在 `DiscoveryPool.sniffingEnabled=true` 时写入发现池样本;
|
||||
- 主链路继续 `continue`,不生成业务消息。
|
||||
3. **解析优先级(统一语义)**:`MappingRegistry`(运行时绑定)优先;未命中则查 `ProfileRegistry`(`device_profiles.json`,按 `runtimeDeviceId` 与 `modbus_rtu` 协议匹配,支持 `*` 通配设备)。
|
||||
4. 若上述之一命中:
|
||||
- 生成轻量 `DOMMessage`:`messageId`/`pointId` 来自绑定或 profile,`metadataId` 来自 profile(若有),`value` 为工程值;静态元数据不随每条样本重复序列化,由 `metadataId` 在控制面/Registry 解析。
|
||||
5. 若仍未命中:
|
||||
- 若存在 `discoverySink`,始终上报 `DiscoveryRecord`(发现池内部仍受嗅探开关与限频约束);
|
||||
- **仅当嗅探开启**时,主链路额外产出 `modbus.unmapped:*` 的 `DOMMessage` 供规则调试;嗅探关闭时不产出未映射 DOM,减少总线冗载。
|
||||
|
||||
### 8.3 DiscoveryPool 约束
|
||||
|
||||
|
||||
Reference in New Issue
Block a user