構建煤礦物聯網大資料平臺思路(1)

星空天宇發表於2022-04-02

最近要構建一個綜合自動化分析平臺,需求是實現煤礦十幾個子自動化系統的資料收集、分析、報表、統計功能。
現在的趨勢是構建物聯網大資料平臺。但是現有系統是基於傳統的EF5+PSpace實時資料庫。
先從實時資料庫開始下手分析。拿到 sdk 是.net、java、c三種。最後一種不會。分析前兩種。

pSpace

pSpace 是一個高效能、高吞吐能力、可靠性強、跨平臺的實時/歷史資料庫系統,可以用於採集、壓縮、儲存、加工、分析任何帶有時間特性的生產資訊,產品提供全系列的工業通訊介面及ERP 業務介面,實現生產監控到排程管理的完美整合,極大地提高企業智慧化及決策的精度和速度。

下面是pSpace的架構圖,我們做到專案應該是在最上層,首要的是讀取PSpace的資料。
image.png
在pSpace SDK設計中採用了分層架構的思想,分別包含psAPISDK.dll、pSpaceAPI.dll、psNetClient.dll模組,其中psAPISDK.dll為外部介面模組,pSpaceAPI.dll為內部實現介面模組,psNetClient.dll為伺服器客戶端模組。主要實現了以下功能:
yuque_diagram.jpg

.Net SDK

image.png

Java SDK

image.png

開發

pSpace的資料分為實時資料和歷史資料。歷史資料可以做成API介面形式提供給Web前端。實時資料如果採用短連線,也能行,畢竟專案面向使用者少。但總感覺不太優雅。也想了幾種方式:SDK提倡用釋出/訂閱模式訂閱實時資料,研究後也實現了,避免了短連線對資料庫效能的影響。
簡單的demo(跑了一下午,資料沒中斷,證明這種方式可行):

....
tagTree = TagTree.CreateInstance(dbConnector);
                rootNode = tagTree.GetTreeRoot();
                tagManager = tagTree.GetMgr();

                vector = new TagVector();
                vector.Add((ITag)rootNode.SelectSingleNode("/電力監控總/中央變電所/J1高開Uab@PV"));
                RealDataSet dataSet = new RealDataSet();
                realSubscriber = new RealSubscriber();
                realSubscriber.CreateAndRead(dbConnector, vector, dataSet);
                var evt = new RealDataChangedEventHandler(realSubscriber_RealDataChanged);
                realSubscriber.RealDataChanged += evt;
                realSubscriber.Enabled = true;
...

image.png
java、windows service也嘗試,都可以實現,唯一不足是無法使用.net core。用.net core需要配合windows service或者.net framework。有時間用.net core把sdk重寫。

實現的web+移動端
image.png
2022-04-01_223849.png

後面的架構(參考別人設計v)
image.png

關於物聯網

現在物聯網技術發展火熱,大部分可以直接基於MQTT協議寫入實時資料庫。後面準備試用TDengine+EMQX。也有很多可以參考,阿里雲、華為雲等雲廠商都有物聯網平臺。但限於資料安全性,目前實施性不大,私有部署平臺還行。

相關文章