36 个驱动模块:应对协议碎片化

在产线数据采集的工程实践中,最耗时的问题通常不是并发或存储,而是协议适配。

同一个车间里,温度传感器说着 Modbus RTU,PLC 是西门子 S7,电表跑着 DLT645,环保监测设备用 HJ 212(SL651 同源的水文规约家族),新采购的网关又是 MQTT。每接一类设备,就要重新学一套报文格式、一套连接管理、一套异常语义。这种碎片化在工业物联网领域已存在二十余年------各协议诞生于不同年代与行业,服务于不同的技术约束,难以彼此取代。

平台层的职责,是屏蔽协议差异对上层业务的影响。

36 个驱动模块是怎么分的

DC3 仓库里的 dc3-driver/ 目录下有 36 个驱动模块,按场景分五类:

  • 工业协议(17 个):Modbus TCP / Modbus RTU、OPC UA / OPC DA、Siemens S7、BACnet/IP、EtherNet/IP、Omron FINS、三菱 MELSEC、IEC 60870-5-104、IEC 61850、DNP3、DLMS、DLT645、KNX、M-Bus、SL651------从工厂自动化到电力楼宇,从抄表到水利。
  • IoT 协议(7 个):MQTT、CoAP、LwM2M、HTTP、BLE、Zigbee、LoRaWAN------云边协同与无线低功耗场景。
  • 数据桥接(5 个):MySQL、PostgreSQL、Oracle、SQL Server、Redis------很多"接入"其实是把别处已落库的数据搬进来,这一类专门干这个。
  • 基础通信(5 个):TCP/UDP、Serial、SNMP、CAN、Kafka------自定义协议的底座与网络管理场景。
  • 仿真调试(2 个):Virtual 与 Listening Virtual------不接真设备也能把整条链路跑通,是平台自测与新人上手的脚手架。

需要说明:36 个驱动的成熟度存在差异,它们均为独立部署的微服务------每个驱动是单独的进程,按需启停、按需扩容,不需要的驱动不参与部署,不占运行资源。

比 36 这个数字更重要的:统一建模

驱动多本身不是壁垒,真正的设计在模型层。DC3 用四个核心实体把所有协议"翻译"成同一种语言:

Driver(驱动)→ Device(设备)→ Profile(位号模板)→ Point(位号)

无论底层是 Modbus 的寄存器地址、OPC UA 的 NodeId 还是 S7 的 DB 块偏移,进到平台里都是同一个 Point 模型:有数据类型、有读写标志、有采集频率、有归属租户。上层数据中心、告警引擎、AI 工具面看到的从来不是"某品牌 PLC",而是一组语义统一的点位。

这就是"协议可以碎,接入模型不能碎"的含义。

Driver SDK:第 37 个驱动从哪来

协议世界永远比驱动仓库长得快,所以 DC3 提供了 Driver SDK 与配套的开发指南(docs.dc3.site 的 Driver Authoring 一章):驱动开发者只需要实现协议解析与点位映射,注册、心跳、调度、数据上行、租户隔离这些平台共性由 SDK 与运行时承担。写完打包成镜像,注册进平台就能被统一管理。

对社区贡献者而言,新驱动应来自真实工位的真实需求------这也是接入层保持开放结构的原因。

实事求是的边界

  • 驱动的成熟度有差异:Modbus、OPC UA、MQTT 这类高频协议经过的实战检验远多于小众协议,选型时建议先用 Virtual 驱动验证链路、再接真实设备;
  • SL651、DLT645 这类行业规约通常还伴随报文加密、私有扩展等现场适配工作量,SDK 解决的是工程结构问题,不能消除协议本身的复杂度;
  • 驱动清单以仓库 dc3-driver/ 目录为准,新驱动在持续增加。

仓库 :GitHub pnoker/iot-dc3 · Gitee pnoker/iot-dc3(GVP)

文档:docs.dc3.site(Driver Authoring Guide)· book.dc3.site · demo.dc3.site

相关推荐
李福春2 小时前
斗破Google ADK Java苍穹-第5境斗灵-凝物通脉-Context与State
java·开发语言·人工智能·java-ee·google adk·深圳同盟·腾讯云架构师技术同盟
十年Java程序媛2 小时前
Java 接口和抽象类对比|抛弃老旧八股,正确选型
java·开发语言·spring boot·后端
范中勤2 小时前
OSS 多文件打包回流上传:流式管道无落地 VS 临时磁盘落地,两种工业方案深度对比
java·高并发·zip·oss·架构选型
无毁的湖光-Al2 小时前
解Bug之路-隔离故障点后业务不恢复?-热点Key处理与亚稳态故障
java·数据库·mysql
Eyfcom2 小时前
快递管理系统中的电子围栏实战:高德与谷歌双平台技术选型与实现
java·后端·快递管理系统
Rain的Java大神之路2 小时前
Java PDF导出,90%的人选错库!11个生产坑+选型+代码,一次讲透
java·后端·面试
y1su2 小时前
Leetcode 单调栈模板
java·开发语言·数据结构·算法·leetcode
郑州光合科技余经理2 小时前
出海外卖平台:支付对接为什么要和下单收款分开
android·java·开发语言·前端·后端·php·ai编程
我是人✓2 小时前
Spring框架的事务管理
java·后端·spring
javachen__2 小时前
JsonView:一套VO实现多角色字段返回
java·linux·服务器