在與遠控操作台、自動化作業指令、人機交互、設備實時監控等工業物聯網領域專家深入交流后,我了解到數據通訊方面的特殊要求。
請教了一些同事,我熟悉了工業標准協議。
經過三個版本的迭代,四個月的設計、編碼、測試,上生產驗證,一款由我獨立研發的工業物聯網高性能通訊中間件交付了。
本着交流合作,共同進步的精神,我決定把中間件的研發分享出來。由於內容較多,篇幅較長,將分三篇文章全面介紹這款中間件。
《一款工業物聯網高性能通訊中間件-架構篇》:介紹中間件設計思想,技術方案,協議與標准,風險與應對
《一款工業物聯網高性能通訊中間件-服務端實現篇》:介紹中間件服務端項目結構,開源組件,自封組件,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等協議集成
批量數值做成可配置以兼顧軟硬件性能
