最近要構建一個綜合自動化分析平臺,需求是實現煤礦十幾個子自動化系統的資料收集、分析、報表、統計功能。
現在的趨勢是構建物聯網大資料平臺。但是現有系統是基於傳統的EF5+PSpace實時資料庫。
先從實時資料庫開始下手分析。拿到 sdk 是.net、java、c三種。最後一種不會。分析前兩種。
pSpace
pSpace 是一個高效能、高吞吐能力、可靠性強、跨平臺的實時/歷史資料庫系統,可以用於採集、壓縮、儲存、加工、分析任何帶有時間特性的生產資訊,產品提供全系列的工業通訊介面及ERP 業務介面,實現生產監控到排程管理的完美整合,極大地提高企業智慧化及決策的精度和速度。
下面是pSpace的架構圖,我們做到專案應該是在最上層,首要的是讀取PSpace的資料。
在pSpace SDK設計中採用了分層架構的思想,分別包含psAPISDK.dll、pSpaceAPI.dll、psNetClient.dll模組,其中psAPISDK.dll為外部介面模組,pSpaceAPI.dll為內部實現介面模組,psNetClient.dll為伺服器客戶端模組。主要實現了以下功能:
.Net SDK
Java SDK
開發
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;
...
java、windows service也嘗試,都可以實現,唯一不足是無法使用.net core。用.net core需要配合windows service或者.net framework。有時間用.net core把sdk重寫。
實現的web+移動端
後面的架構(參考別人設計v)
關於物聯網
現在物聯網技術發展火熱,大部分可以直接基於MQTT協議寫入實時資料庫。後面準備試用TDengine+EMQX。也有很多可以參考,阿里雲、華為雲等雲廠商都有物聯網平臺。但限於資料安全性,目前實施性不大,私有部署平臺還行。