暖通自动化控制 — 部署指南

套餐

标准部署

部署暖通设定值预测与控制服务,接入 Eastron SDM630 电能表,先在观察模式下调试,读回、回滚和告警在自己的机组上验证通过、安全限值经工程师批准后再开启写入。

  • 设备: reComputer R1100 或任意 Docker 主机;Eastron SDM630 电能表(Modbus TCP 或 RS-485);暖通控制器(OPC UA、Modbus 或 BACnet/IP),只做演练时可用内置模拟器。
  • 软件: Docker Engine 20.10 及以上,约 1 GB 可用磁盘,主机 8280 与 4841 端口空闲。
  • 数据: 至少一周的历史运行数据(CSV 或 Excel)。
  • 限制: 本系统不是安全认证的控制系统,机组自身的联锁与安全控制仍然生效。写入限值出厂为占位值(18–30 °C、每 5 分钟 1 °C、off/fan/cool/heat/auto 模式白名单),需现场工程师批准。本方案不提供节能率数据。
1

部署暖通控制服务

部署预测与控制服务,填写电表、控制模式、安全限值和告警参数。

前置条件
  • 电表的通讯方式与站号;暖通控制器的 OPC UA 地址(保留默认地址则连接内置模拟器)。
  • 控制模式保持 observe。工程师批准限值前,安全基线批准人留空。
部署方式

部署到当前运行 SenseCraft Solution 的设备,用于连接内置模拟器演练,或本机能访问机组网络时使用。本目标不支持 Modbus RTU。

接线
  1. 把本机接入暖通控制器和电表(或其 Modbus TCP 网关)所在网络。
  2. 电表走 Modbus TCP;需要 RS-485 时改用远程部署。
  3. 确认 8280 与 4841 端口空闲。
部署时需要填写(在 SenseCraft Solution 应用里填)
  • 电表主机地址

    电表或其前置 Modbus TCP 网关的 IP 地址。走 Modbus RTU 时留空。

  • 安全基线批准人

    在具名的现场工程师批准上述四项限值之前请留空。留空期间安全基线一直报告为未批准。

其余 15 项已有默认值,可不改
  • OPC-UA 服务器地址默认 opc.tcp://localhost:4841

    暖通控制器的 OPC-UA 服务器地址(保留默认值即使用内置模拟器)

  • 电表通讯方式默认 modbus_tcp
    3 项可选
    • · Modbus TCP(直连或经 TCP 网关)
    • · Modbus RTU(RS-485)
    • · 暂不接入电表

    SDM630 的接入方式。选 Modbus RTU 时还需要串口设备部署配置——标准 Docker 配置不会 挂载主机串口。

  • 电表 TCP 端口默认 502

    Modbus TCP 端口,通常为 502

  • 电表站号默认 1

    电表的 Modbus 从站/站号地址,取值 1-247。两种通讯方式都需要。

  • 串口设备默认 /dev/ttyUSB0

    Modbus RTU 使用的主机串口设备。仅在通讯方式为 Modbus RTU 时生效。

  • 串口波特率默认 9600
    3 项可选
    • · 9600
    • · 19200
    • · 38400

    RS-485 波特率,必须与电表上配置的一致

  • 浮点字序默认 big_endian
    2 项可选
    • · 大端字序(厂商默认)
    • · 小端字序(部分网关会交换字序)

    电表 32 位浮点寄存器的字序。模板默认值取自厂商文档,但在信任缩放后的数值之前, 必须用实际电表确认字序。

  • 控制模式默认 observe
    2 项可选
    • · 仅观察(不写入)
    • · 控制(开启写入)

    观察模式只出预测、不向机组写入任何值。只有在读回、回滚和告警都验证通过、且安全限值 已获批准之后,才切换到控制模式。

  • 设定值下限(°C)默认 18

    待现场批准——占位下限;低于该值的写入一律拒绝

  • 设定值上限(°C)默认 30

    待现场批准——占位上限;高于该值的写入一律拒绝

  • 最大变化量(°C)默认 1.0

    待现场批准——占位值,指下述时间窗内设定值允许的最大变化量

  • 变化时间窗(秒)默认 300

    待现场批准——最大变化量所适用的时间窗。限值随经过时间线性放大但最多一步, 因此长时间空闲不会攒出一次大幅跳变。

  • 读回延迟(秒)默认 10

    写入后等待多久再从现场读回该点位

  • 读回容差默认 0.05

    比对数值型读回值与下发值时的绝对容差。读回值质量不为 good 时一律不算核实通过, 无论数值是多少。

  • 样本过期阈值(秒)默认 60

    样本超过该时长即判定为过期。过期输入会触发 sample-stale 告警,并让预测周期 fail-closed,而不是拿旧数据去写入。

故障排查
现象处理
Docker 未运行启动 Docker Desktop 或 Docker Engine 后重试
端口 8280 被占用释放该端口
容器启动后退出执行 docker logs missionpack_knn,最后几行是失败原因
网页打不开等待约 30 s 服务启动完成
电表点位能读但数值明显不对字节序或字序不匹配,见步骤 3
2

打开控制面板

打开控制台,创建首个管理员账号,确认步骤 1 配置的数据源在线。

前置条件

步骤 1 的服务处于健康状态。

故障排查
现象处理
页面无法加载确认步骤 1 已完成
主机/端口错误远程部署时把地址换成设备 IP
某个数据源显示离线检查可达性与站号;走 RS-485 时检查波特率和接线极性
3

电表、控制链路与告警调试

注册电表,在观察模式下运行预测,逐项触发故障验证回滚和告警,全部通过后再开启写入。

打开写后核实(回滚)

写后核实默认关闭。在控制台创建预测运行时加上 rollback 段:

{
  "schema_version": "prediction-run.v3",
  "interval_seconds": 60,
  "rollback": { "enabled": true, "settle_seconds": 2.5 }
}

settle_seconds(0–30,默认 1.0)必须大于数据源的采集间隔,否则会误报读回不一致。只核实 Modbus 点位,BACnet 输出不核实。

前置条件
  • 步骤 2 的管理员账号;能看到电表本机显示;一位熟悉本机组的操作人员审阅推荐值。
  • 执行 docker inspect -f '{{.Config.Image}}' missionpack_knn 查看镜像版本。v1.6.5 不含 SDM630 模板、回滚和告警功能,只能完成观察模式部分。
故障排查
现象处理
电表模板导入被拒绝模板最多 256 行,精简自定义模板
电压和频率看着合理但数值不对在部署表单里切换浮点字序后重新读取
进口电能出现倒退切换字序;或检查是否有两个数据源用不同站号轮询同一台电表
写入有 ACK 但读回始终不通过检查点位质量,质量不为 good 时读回不会通过
回滚本身失败会产生 critical 级 compensation-failed 告警。人工恢复机组,查清原因前不要重新开启写入
同一故障每次都开出新告警对比两条告警的数据源与点位 id
部署完成后

快速验证

  1. docker inspect -f '{{.Config.Image}}' missionpack_knn 返回的是你打算运行的版本。
  2. SDM630 的十个点位全部可读,电压、频率和进口电能与电表本机显示一致。
  3. 进口有功电能只增不减,数据源重启后保持累计值。
  4. 观察模式下跑完一个完整人流周期的预测,推荐值经机组操作人员审阅。
  5. 安全限值已填入批准人姓名,基线不再报告为未批准。
  6. 一次限值范围内的写入产生了命令回执,读回在容差内,点位质量为 good。
  7. 数据源离线、读回不一致、样本过期三类故障各自产生预期告警,前两类各触发一次回滚。
  8. 启用了北向上云时,GET /system/runtime-metrics 中的 northbound.spool.queued 为 0 且 dropped 未增加。

需要导出的证据

交接记录包括:镜像版本;电表模板 id 与确认后的字序;批准的安全限值与批准人;已核实写入的命令审计记录;故障注入产生的回滚日志;告警历史。容器日志(docker logs missionpack_knn)会轮转覆盖,及时拷出。

下一步

  1. 先只在一个区域开启写入,观察满一个周期再扩大范围。
  2. 为 critical 级 compensation-failed 告警配置通知。
  3. 机组每次再平衡后重新批准安全限值。