跳到主要内容

CMMS 协议适配器

CMMS 协议适配器用于把现场系统和设备信号接入 FactVerse 维护工作流。当 CMMS 或设施运营项目需要读取 BACnet、Modbus 或 SNMP 设备点位,并把这些值用于资产上下文、工单分诊、预测性维护或证据审阅时,请使用本页。

协议适配器应与现场自控负责人一起规划。点位映射在进入运营前,需要稳定的点位 ID、地址、数据类型、单位、只读设置和经批准的写入策略。

前置条件

  • CMMS 运营或设施运营中已经有设备和位置记录。
  • 现场自控负责人已确认协议、设备地址范围、网络路径和读取频率。
  • 每个映射点位都有稳定点位 ID、数据类型、单位和业务含义。
  • 可写点位单独审阅,客户运营策略批准前保持禁用。
  • DFS 或 AI Agent 消费方已明确需要当前值、历史时序,还是两者都需要。

适配器工作流

支持的协议类型

协议典型用途读取行为写入行为
BACnet/IP楼宇自控、空调箱、冷机、风机、水泵和控制器点位。读取已配置 BACnet 对象的 present-value,未配置点位时可进行设备发现。仅对标记为可写的映射点位写入 present-value
Modbus TCPPLC、仪表、冷机、控制柜和工业控制器。读取已配置线圈、离散输入、输入寄存器和保持寄存器。通过配置的功能码写入可写线圈和保持寄存器。
RTU-over-TCP通过 TCP 承载 Modbus RTU 帧的现场网络。使用已配置 unit ID 和点位映射读取。通过 TCP 发送带 CRC 的 RTU 帧。
SNMPUPS、网络电力设备、环境监测设备和受管基础设施。对映射 OID 执行 GET,也可在配置根 OID 后执行发现 walk。仅对已批准的可写 OID 使用 SET。

BACnet 映射

BACnet 连接使用 BACnet/IP。连接可以设置超时、本地 UDP 端口和可选 BBMD 外部设备注册。配置了点位时,发现结果返回这些点位;未配置点位时,可以发送 Who-Is 并返回发现到的设备条目。

常见对象类型:

对象类型示例
Analoganalog-inputanalog-outputanalog-value
Binarybinary-inputbinary-outputbinary-value
Multi-statemulti-state-inputmulti-state-outputmulti-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,并在设备要求时记录 wordOrderbyteOrder

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 语法可使用 integergaugecounteroidipAddressoctetString

写入治理

可写协议点位需要明确运营决策。启用写入前,请确认:

  • 点位适合通过 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 和设备兼容性。

相关文档