色谱工作站标准协议化及开发进度里程碑报告
1. 项目背景与开发模式
本项目旨在将传统的色谱工作站重构为符合现代实验室自动化标准的物联网智能边缘节点。 开发模式:AI 辅助单兵敏捷开发(AI Pair Programming)。摒弃繁杂的团队管理流程,采用“需求直达代码”、“边跑边重构”的极简流程。所有的业务目标转化为精确的 TODO 步骤并全自动闭环执行。
2. 国际标准协议实现现状及对比矩阵
根据对代码库(standard_proxy.go、sila2/server.go、opcua/server.go)的深度分析,当前标准协议实现进度如下:
3. 已完成功能清单 (Completed)
- 底层硬件解耦 (HAL):完成遗留协议驱动 (
LegacyGCKCDriver) 和散件模块化驱动 (ModularDriver) 的彻底分离,建立统一的DigitalTwin数字孪生层。 - 标准路由代理网关:在
standard_proxy.go中,将历史包袱接口完美无感映射至/api/sila2/v1/...和/api/animl/v1/...。 - 全自动化CI/CD流:基于红线规则,实现一键交叉编译、增量极速部署 (rsync over SSH)、非阻塞后台服务重启及版本号自动递增。
- 前端业务逻辑标准化适配:
settings.js/live.js/method.js等核心交互页面已切换至标准化 API URI,并修复了本地 TCD 与测试机 FID 在散件与遗留模式下并发引起的事件控制和波形刷新重置的严重 Bug。
4. 缺失与未来规划功能 (Pending & Future)
结合最新的系统级需求反馈(“需要强标准化对接LIMS”、“需要完整报警与审计树”、“需要扩展接口发送数据”),梳理出以下演进方向:
4.1 深度 SiLA 2 集成 (面向 LIMS/CDS 强对接)
- 编写规范的 SiLA 2
.proto文件集合,涵盖ValveControllerService、TemperatureControllerService、PneumaticControllerService、DetectorService等。 - 将 gRPC Handler 与
DigitalTwin模块深度绑定,替代当前仅作为 HTTP 路由映射的浅层集成方案。
4.2 OPC-UA LADS 完整报警与审计体系
- 报警系统:在现有的 OPC-UA 树中建立标准的
Alarms & Conditions模型,当硬件或系统出现异常(如连接断开、温度超限报警、基线异常)时,触发符合规范的 OPC-UA Event。 - 审计追踪 (Audit Trail):将每一次人为的参数修改(如改变分析方法设定、修改保护温度)、启动/停止操作进行留痕,并以标准的 OPC-UA 事件或 AnIML JSON 节点持久化保存,实现全流程防篡改与溯源。
4.3 工业现场扩展网关接口 (Extension Data Publisher)
- 建立基于 Go 语言 Interface 的插件化
DataPublisher发布者机制。 - MQTT:实现分析结果(Pollutants)和设备实时运行状态的云端上报。
- Modbus TCP / RTU (Slave 模式):将最终的分析含量(如 CH4、NMHC 的浓度值 mg/m³)以及基础状态映射为标准的保持寄存器 (Holding Registers),供外部环境监测站 PLC 或工控上位机直接拉取读取。
- CAN 总线:预留基于 SocketCAN 或串口透传的实时广播扩展能力。
5. 开发里程碑规划 (Milestones)
-
Milestone 1: 标准协议完善与后端状态机自主运行 (已完成)
- 修复
opcua/server.go的编译错误,成功将 LADS 状态机、目标循环次数、报警占位及审计占位节点接入 DigitalTwin。 - 将前端请求全面对齐 SiLA 2/OPC-UA 标准:修改
app.js,process.js,report.js所有的内部接口为api/sila2/v1/...与api/animl/v1/...。 - 修正了 SiLA2 代理中
StartAnalysis缺失重置会话导致的 TCD 谱图不刷新 Bug(在sila2_binding.go中主动触发resetAllSessions)。 - 后端引擎
engine_scheduler.go已实现完全自主运行。基于DigitalTwin配置,循环分析将完全在后台执行,前端即便关闭也绝不影响色谱运行流转。
- 修复
-
Milestone 2: MQTT/Modbus及数采仪扩展物联网能力 (已完成)
- 设计了统一对外发送数据的
DataPublisher接口及GlobalPublisher全局单例。 - 完成对工厂车间级通用协议的支持:基于
paho.mqtt上报实时结果、状态与报警;基于mbserver建立 Modbus TCP/RTU 从机模式暴露核心状态。 - 深度整合高级配置:MQTT 与数采仪强绑定用户配置的设备唯一编码 (
DeviceNo/ClientID) 及自定义MqttTopic,并彻底清除了旧版代码中散落的数据外发碎片,实现统一网关路由。 - 修复了环保数采仪(HJ212)谱图文件上传功能,对齐了标准的
/cgi-bin/mediafileupload/file接口。
- 设计了统一对外发送数据的
6. 即时可执行待办事项 (TODO List)
- 修复编译错误:处理
opcua/server.go中的alarmsNode与auditNode变量声明未使用问题。 - 完善 OPC-UA LADS 节点:扩写
DigitalTwin模型以包含ActiveAlarms与LastAuditLog并同步更新节点状态。 - 修复 TCD 谱图重启问题:在
sila2_binding.go的StartAnalysisAPI 中加入resetAllSessions逻辑,确保循环流转重置时间戳。 - 前端全面对齐标准协议:重构
app.js(特别是sendCmd),process.js和report.js,全部替换为SiLA 2与AnIML代理路由。 - 后端自主运行验证:确认
engine_scheduler.go的循环计算机制脱离前端依赖,完全根据底层DigitalTwin及CycleCount独立运行。 - Milestone 2 数据分发机制:设计并完成了 MQTT 及 Modbus 外发数据的
GlobalPublisher机制。 - 扩展接口联调与修正:修复 MQTT 唯一编码读取遗漏问题,修复 MQTT Topic 层级拼装问题,修复环保数采仪 HTTP 谱图上传 501 路径报错问题,确保对接标准外部系统。
- Milestone 3: 数据导出接口彻底原生标准化 (已完成)
- 彻底废弃了遗留的 /api/v1/results/nmhc/export.csv 和 /api/history/export.csv 导出路由及其代理转发。
- 将 CSV 导出、NMHC 专用 CSV 导出和 XML (AnIML) 导出直接重构并挂载到标准的 DataExportService 命名空间下:
- /api/animl/v1/DataExportService/ExportCSV
- /api/animl/v1/DataExportService/ExportNMHC
- /api/animl/v1/DataExportService/ExportXML
- 修复了因为依赖旧版内存存储 ( mhcStore) 导致导出 CSV 文件为空(只有表头)的严重 Bug,现已直接对接底层的 SQLite JSON 存储引擎 (pstore) 并动态解析数据字段。
- 彻底解决了 update_frontend_api.ps1 在 Windows 下追加多重 BOM 导致前端页面黑屏的语法错误。
