最近要構建一個綜合自動化分析平台,需求是實現煤礦十幾個子自動化系統的數據收集、分析、報表、統計功能。
現在的趨勢是構建物聯網大數據平台。但是現有系統是基於傳統的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。也有很多可以參考,阿里雲、華為雲等雲廠商都有物聯網平台。但限於數據安全性,目前實施性不大,私有部署平台還行。

