一款工业物联网高性能通讯中间件-架构篇
在与远控操作台、自动化作业指令、人机交互、设备实时监控等工业物联网领域专家深入交流后,我了解到数据通讯方面的特殊要求。
请教了一些同事,我熟悉了工业标准协议。
经过三个版本的迭代,四个月的设计、编码、测试,上生产验证,一款由我独立研发的工业物联网高性能通讯中间件交付了。
本着交流合作,共同进步的精神,我决定把中间件的研发分享出来。由于内容较多,篇幅较长,将分三篇文章全面介绍这款中间件。
《一款工业物联网高性能通讯中间件-架构篇》:介绍中间件设计思想,技术方案,协议与标准,风险与应对
《一款工业物联网高性能通讯中间件-服务端实现篇》:介绍中间件服务端项目结构,开源组件,自封组件,PLC测点配置,数据采集,数据交互,OpcUa断线重连,常见问题及解决
《一款工业物联网高性能通讯中间件-客户端实现及封装篇》:内容待定
本次分享的是开篇《一款工业物联网高性能通讯中间件-架构篇》。
1 设计思想
这款中间件主要是解决底层PLC数据采集,清洗,交互,传输,上层应用调用问题。介绍时,中间件与数据中心等同。
1.1 概述
中间件/数据中心特点如下:
- 一次编写,到处应用
- 采用服务端/客户端模式。客户端打包,便于安装与接入
- 异步,事件驱动架构设计保障高性能、高并发
- 为应用客户端提供统一的PLC数据通讯,交互的IEC标准/Node接口
- 数据采集,清洗,调用集中维护
- PLC数据解析采用业界流行的Opc UA通讯协议
- 解决PLC客户端接入连接数的限制
- 满足远控操作台、自动化作业指令、人机交互、设备实时监控毫秒级响应时延要求
- 同时支持多PLC
- 同时支持多应用客户端接入,取决于服务端内存,理论上2G内存支持2000个客户端接入
- 支持实时数据/历史数据转发
- 服务端单机支持60000测点/秒并发
- 服务端支持集群部署,可扩展
- 客户端的封装支持断线重连,如PLC程序更新,网络断开,手动关闭服务端,稳定性强
- 分级分类的日志功能,便于排查修复问题,可维护性高
- 模块化设计,组件化编码,可移植,可重用
1.2 应用
Portal :人机交互HMI
ACCS:自动化作业指令
数据中心:工业物联网高性能通讯中间件
【...】:其他应用,比如设备实时监控系统等
1.3 数据流
2 技术方案
2.1 技术选型
开发语言:C#(工业软件很多由C#编写,无历史包袱)
开发工具:Visual Studio 2019(号称宇宙最强IDE)
开源框架:Opc Ua基金会开源代码,OpcUaClientHelper开源代码,HpSocket开源代码
自封组件:Log4net日志组件,OpcUaClient组件,RabbitMQ组件,Socket客户端异步组件,并发缓存组件,数据服务组件,多协议解析组件
接口协议:IEC,接近Opc Ua原生Node数据交互统一接口
2.2 架构图
2.3 实时数据/历史数据
2.4 论证
2.4.1 测试论证
2.4.2 项目论证
在某上市公司的工业物联网项目上线后,中间件服务稳定运行超过5个月,满足数据通讯的各项指标,为应用系统在数据通讯方面提供了很好的底层技术支撑,获得了较好的评价
2.5 专利与著作权
该中间件申请了1项著作权(涉及敏感信息不方便透露),2项发明专利(进入国家专利局实审阶段)
3 协议与标准
参考了IEC61850/IEC61131.3协议,制定了关于数据集、指令集和任务集的统一接口规范标准。
IEC名称由配置工具生成,管理员统一分发,各应用系统根据公开的配置,解析报文含义。
IEC示例:吊具移动水平位移是Spreader.Pos.YC.F30.X
报文格式如下:
4 风险与应对
4.1 风险
仅支持Opc Ua协议
PLC硬件性能限制,不同厂商不同型号硬件可能需要微调批量查询,修改,订阅的数量
4.2 应对
尽量采用业界通用的Opc Ua协议,如有需要,再进行Modbus,TCP/IP等协议集成
批量数值做成可配置以兼顾软硬件性能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)