CMMS 协议适配器
CMMS 协议适配器用于把现场系统和设备信号接入 FactVerse 维护工作流。当 CMMS 或设施运营项目需要读取 BACnet、Modbus 或 SNMP 设备点位,并把这些值用于资产上下文、工单分诊、预测性维护或证据审阅时,请使用本页。
协议适配器应与现场自控负责人一起规划。点位映射在进入运营前,需要稳定的点位 ID、地址、数据类型、单位、只读设置和经批准的写入策略。
前置条件
- CMMS 运营或设施运营中已经有设备和位置记录。
- 现场自控负责人已确认协议、设备地址范围、网络路径和读取频率。
- 每个映射点位都有稳定点位 ID、数据类型、单位和业务含义。
- 可写点位单独审阅,客户运营策略批准前保持禁用。
- DFS 或 AI Agent 消费方已明确需要当前值、历史时序,还是两者都需要。
适配器工作流
支持的协议类型
| 协议 | 典型用途 | 读取行为 | 写入行为 |
|---|---|---|---|
| BACnet/IP | 楼宇自控、空调箱、冷机、风机、水泵和控制器点位。 | 读取已配置 BACnet 对象的 present-value,未配置点位时可进行设备发现。 | 仅对标记为可写的映射点位写入 present-value。 |
| Modbus TCP | PLC、仪表、冷机、控制柜和工业控制器。 | 读取已配置线圈、离散输入、输入寄存器和保持寄存器。 | 通过配置的功能码写入可写线圈和保持寄存器。 |
| RTU-over-TCP | 通过 TCP 承载 Modbus RTU 帧的现场网络。 | 使用已配置 unit ID 和点位映射读取。 | 通过 TCP 发送带 CRC 的 RTU 帧。 |
| SNMP | UPS、网络电力设备、环境监测设备和受管基础设施。 | 对映射 OID 执行 GET,也可在配置根 OID 后执行发现 walk。 | 仅对已批准的可写 OID 使用 SET。 |
BACnet 映射
BACnet 连接使用 BACnet/IP。连接可以设置超时、本地 UDP 端口和可选 BBMD 外部设备注册。配置了点位时,发现结果返回这些点位;未配置点位时,可以发送 Who-Is 并返回发现到的设备条目。
常见对象类型:
| 对象类型 | 示例 |
|---|---|
| Analog | analog-input、analog-output、analog-value |
| Binary | binary-input、binary-output、binary-value |
| Multi-state | multi-state-input、multi-state-output、multi-state-value |
| Device | 用于发现元数据的设备记录 |
{
"timeoutMs": 5000,
"localPort": 0,
"bbmdHost": "10.10.0.20",
"bbmdPort": 47808,
"foreignDeviceTtlSeconds": 300,
"points": [
{
"pointId": "ahu-supply-temp",
"address": "analog-input,0",
"dataType": "FLOAT",
"readOnly": true,
"unit": "C"
},
{
"pointId": "fan-enable",
"objectType": "binary-value",
"instance": 1,
"dataType": "BOOLEAN",
"readOnly": false
}
]
}
Modbus 映射
Modbus 连接使用显式点位映射。适配器读取已配置点位,不扫描任意设备地址范围。寄存器地址、unit ID、缩放和单位应由现场自控负责人确认。
| 点位类型 | 读取支持 | 写入支持 |
|---|---|---|
| Coil | 功能码 01 | 功能码 05 |
| Discrete input | 功能码 02 | 只读 |
| Holding register | 功能码 03 | 功能码 06 或 16 |
| Input register | 功能码 04 | 只读 |
{
"transport": "tcp",
"unitId": 1,
"timeoutMs": 3000,
"poolSize": 2,
"points": [
{
"pointId": "chiller-discharge-pressure",
"type": "holding-register",
"register": 40001,
"dataType": "INT",
"scale": 0.1,
"offset": 0,
"readOnly": false,
"unit": "bar"
}
]
}
32 位浮点寄存器应把 dataType 设为 FLOAT,把 quantity 设为 2,并在设备要求时记录 wordOrder 或 byteOrder。
SNMP 映射
SNMP 连接支持 v1、v2c 和 v3。客户安全标准要求认证和加密访问时,应使用 v3。需要接收 trap 消息的部署可以配置 trap 监听端口。
{
"version": "v3",
"securityName": "operator",
"authProtocol": "SHA",
"authPassphrase": "auth-secret",
"privacyProtocol": "AES128",
"privacyPassphrase": "priv-secret",
"timeoutMs": 3000,
"retries": 1,
"discoveryRootOid": "1.3.6.1.2.1.33",
"trapListenPort": 0,
"points": [
{
"pointId": "ups-battery-charge",
"oid": "1.3.6.1.2.1.33.1.2.4.0",
"dataType": "INT",
"unit": "%",
"readOnly": true,
"syntax": "integer"
}
]
}
SET 语法可使用 integer、gauge、counter、oid、ipAddress 和 octetString。
写入治理
可写协议点位需要明确运营决策。启用写入前,请确认:
- 点位适合通过 CMMS 或运营工作流变更;
- 点位负责人已批准写入边界;
- 角色或服务账号具备所需写入 scope;
- 工作流记录请求人、目标点位、目标值、原因、时间和结果;
- 现场负责人清楚回退或人工修正方式;
- 现场团队清楚哪个系统是该点位的权威来源。
只读部署仍可把协议值用于仪表板、工单分诊、证据审阅和预测性维护输入。
验证检查表
- 每个点位都有稳定的
pointId、来源地址、数据类型、单位和只读标记。 - 样本读取返回符合预期的值、单位和缩放。
- 发现结果符合已批准的设备或点位范围。
- 可写点位具备负责人批准和审阅工作流。
- 读取失败、超时和写入拒绝对操作人员可见。
- 协议凭据和 community string 遵循客户密钥管理策略。
- CMMS 工单和资产上下文使用与 DFS、MDM 一致的设备身份。
故障排查
| 现象 | 检查项 |
|---|---|
| 连接超时 | 主机路由、防火墙、端口、本地 BACnet 端口、SNMP 目标、Modbus unit ID 和超时设置。 |
| 点位无法读取 | 地址格式、对象类型、寄存器类型、OID、数据类型和设备权限。 |
| 数值缩放错误 | Modbus scale、offset、寄存器数量、word order、byte order 和单位映射。 |
| 发现结果过多 | 增加显式点位清单,或缩小 SNMP discovery root。 |
| 写入被拒绝 | readOnly 标记、可写对象类型、权限 scope、审阅策略和设备侧访问控制。 |
| SNMP v3 失败 | Security name、auth protocol、auth passphrase、privacy protocol、privacy passphrase 和设备兼容性。 |