在与远控操作台、自动化作业指令、人机交互、设备实时监控等工业物联网领域专家深入交流后,我了解到数据通讯方面的特殊要求。

请教了一些同事,我熟悉了工业标准协议。

经过三个版本的迭代,四个月的设计、编码、测试,上生产验证,一款由我独立研发的工业物联网高性能通讯中间件交付了。

本着交流合作,共同进步的精神,我决定把中间件的研发分享出来。由于内容较多,篇幅较长,将分三篇文章全面介绍这款中间件。

《一款工业物联网高性能通讯中间件-架构篇》:介绍中间件设计思想,技术方案,协议与标准,风险与应对

《一款工业物联网高性能通讯中间件-服务端实现篇》:介绍中间件服务端项目结构,开源组件,自封组件,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 数据流

物联网中间件 开源 物联网中间件技术_物联网中间件 开源_02

2 技术方案

2.1 技术选型

开发语言:C#(工业软件很多由C#编写,无历史包袱)

开发工具:Visual Studio 2019(号称宇宙最强IDE)

开源框架:Opc Ua基金会开源代码,OpcUaClientHelper开源代码,HpSocket开源代码

自封组件:Log4net日志组件,OpcUaClient组件,RabbitMQ组件,Socket客户端异步组件,并发缓存组件,数据服务组件,多协议解析组件

接口协议:IEC,接近Opc Ua原生Node数据交互统一接口

2.2 架构图

物联网中间件 开源 物联网中间件技术_客户端_03

 2.3 实时数据/历史数据

 

物联网中间件 开源 物联网中间件技术_客户端_04

2.4 论证

2.4.1 测试论证

物联网中间件 开源 物联网中间件技术_客户端_05

物联网中间件 开源 物联网中间件技术_物联网中间件 开源_06

2.4.2 项目论证

在某上市公司的工业物联网项目上线后,中间件服务稳定运行超过5个月,满足数据通讯的各项指标,为应用系统在数据通讯方面提供了很好的底层技术支撑,获得了较好的评价

2.5 专利与著作权

该中间件申请了1项著作权(涉及敏感信息不方便透露),2项发明专利(进入国家专利局实审阶段)

物联网中间件 开源 物联网中间件技术_物联网中间件 开源_07

3 协议与标准

参考了IEC61850/IEC61131.3协议,制定了关于数据集、指令集和任务集的统一接口规范标准。

IEC名称由配置工具生成,管理员统一分发,各应用系统根据公开的配置,解析报文含义。

IEC示例:吊具移动水平位移是Spreader.Pos.YC.F30.X

报文格式如下:

物联网中间件 开源 物联网中间件技术_客户端_08

4 风险与应对

 4.1 风险

仅支持Opc Ua协议

PLC硬件性能限制,不同厂商不同型号硬件可能需要微调批量查询,修改,订阅的数量

4.2 应对

尽量采用业界通用的Opc Ua协议,如有需要,再进行Modbus,TCP/IP等协议集成

批量数值做成可配置以兼顾软硬件性能