dommessage

This commit is contained in:
flower_linux
2026-04-28 21:56:56 +08:00
parent 7459cc0f36
commit 7280fca08d
24 changed files with 848 additions and 115 deletions

View File

@@ -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 约束