从寄存器到监控画面

自建的模拟水质站通过 Modbus TCP 提供数据,自己写的 .NET 驱动读取后发布为 OPC UA,Angular HMI 再把它显示出来。

数据怎么走

动画示意:驱动每秒向 plant-sim 发出读取请求,plant-sim 返回寄存器数值;驱动把数值发布到 OPC UA 服务器,HMI 再显示出来。 TCP :502 OPC UA plant-sim 模拟数据站 pH · HR 6–7 7.97 在线 field-gateway .NET 8 · 自己写的代码 Modbus 驱动 每秒读取一次 合并读取 断线重连 OPC UA 服务器 数值 + 质量 + 时间戳 HMI Angular · SignalR AIT-101 pH 7.97 Good 数值流向:plant-sim → 驱动 → OPC UA → HMI,每秒一次 动画示意:驱动每秒向 plant-sim 发出读取请求,plant-sim 返回寄存器数值;驱动把数值发布到 OPC UA 服务器,HMI 再显示出来。 TCP :502 OPC UA plant-sim 模拟数据站 pH · HR 6–7 7.97 在线 field-gateway .NET 8 · 自己写的代码 Modbus 驱动 每秒读取一次 合并读取 · 断线重连 OPC UA 服务器 数值 + 质量 + 时间戳 HMI Angular · SignalR AIT-101 pH 7.97 Good

plant-sim

自建的模拟数据站。按规则生成水质数据,以 Modbus TCP 提供给驱动读取。

field-gateway

自己写的 Modbus 驱动每秒读一次寄存器,把数值连同质量和时间戳发布到 OPC UA 服务器。

water-hmi-demo

Angular 监控画面,通过 SignalR 接收数值。下面就是它。

water-hmi-demo:监控画面

下面是真实的 HMI 程序,在你的浏览器里运行:流程图、实时数值、四级报警和事件记录,通信中断时数值标为未知。数据是在本机运行整条链路时录下的回放,不是实时连接。

水泵全程运行。浊度约 1.7–2.0 NTU,高于演示设定的 H 限值 1.5,所以这段也会出现浊度 H 报警——这是录到的真实数值。

单独打开 HMI(适合电脑屏幕)