通讯驱动 (Communication Drivers)
约 496 字大约 2 分钟
2026-05-19
概述
Drivers 模块包含对各种工业通讯协议的具体实现。所有驱动均继承自 DriverBase 并受 IDriverRegistry 统一管理。通过全局网络状态监控与自愈 Watchdog,本系统可在复杂工业网络环境中提供极佳的连通稳定性。
已集成协议
- Siemens S7: 针对西门子系列 PLC 的优化直连驱动。
- Modbus TCP: 标准 Modbus 寄存器网络访问。
- OPC UA: 工业级 OPC UA Client,支持证书与安全策略。
- MQTT: 基于 Pub/Sub 模式的轻量级工业 IoT 消息驱动。
- OPC UA PubSub: 高速 UDP/MQTT 发布订阅驱动,支持 UADP/JSON 解码。
驱动架构与约定 (v2.2)
- 构造函数注入: 必须在构造函数中接收并调用
base(driverId, logger, cacheProvider, networkMonitor)注入IUniconCacheProvider与INetworkMonitor。 - 状态与连接自愈: 通过实现
OnConnectAsync和OnDisconnectAsync,基类自愈 Watchdog 会根据网络健康状态与物理/通道异常,在毫秒级内自动响应网络切换或掉线事件。- 断网挂起: 当系统网络完全中断时,Watchdog 重连线程会自动挂起,消除无效的 CPU 与网络重试开销。
- 恢复自愈: 当系统网络重新上线时,Watchdog 会瞬间被唤醒并在毫秒级内自动触发全量驱动的恢复连接。
- 物理与协议异常监控:
- 对于 OPC UA、MQTT、OPC UA PubSub,驱动监听底层通道的
Faulted/Closed/Disconnected事件,即时流转状态为Faulted。 - 对于 S7、Modbus,驱动在 I/O 读写捕获异常或 socket 中断时,瞬时触发 Faulted 流转。
- 对于 OPC UA、MQTT、OPC UA PubSub,驱动监听底层通道的
- 传输层锁机制: 驱动需要在
ITransport层(或类似物理连接层)自行处理读写线程安全,不再依赖全局读写锁,从而支持异步高并发读。 - 标准销毁: 覆盖
Dispose()时必须调用base.Dispose()释放调度器、退订网络事件以防止内存泄漏。
