但是這種操作方式存在兩個問題:1.通過反射的方式,效率不高。2.如果是一個感測器,那麼定義的實時數據屬性不多;如果是一個站點(可以理解為生產單位或網關層)上傳的數據,可能有成千上萬監測點,那麼不可能在繼承DeviceDynamic介面的子類中定義這麼多屬性。 ...
22.1 概述及要解決的問題
設備驅動有DeviceDynamic介面,可以繼承並增加新的實時數據屬性,每次通訊完成後更新這些屬性數據。原來是通過DeviceDynamic介面實體類反射的方式獲得最新的實時數據,並輸出到關係資料庫、實時資料庫和OPC Server等介面。
但是這種操作方式存在兩個問題:1.通過反射的方式,效率不高。2.如果是一個感測器,那麼定義的實時數據屬性不多;如果是一個站點(可以理解為生產單位或網關層)上傳的數據,可能有成千上萬監測點,那麼不可能在繼承DeviceDynamic介面的子類中定義這麼多屬性。原來的操作方式如下圖:
為瞭解決上述問題,在DeviceDynamic介面中定義了DynamicCache屬性緩存介面,以KeyValue的方式存儲監測數據。也就是說如果設備驅動接收一批監測數據,可以迴圈放到DynamicCache緩存中,再輸出到關係資料庫、實時資料庫和OPC Server等介面。新的操作方式如下圖:
下麵介紹使用過程中註意的三個地方,設備驅動、配置輸出監測點和配置參數等。
22.2 設備驅動
可能有的網友已經寫好設備驅動了,需要在此的基礎上,把數據信息放到DynamicCache緩存中。如下代碼:
if (cr == CommandArray.RealTimeData) { Dyn dyn = (Dyn)obj; _deviceDyn.DynamicCache.AddOrUpdate("flow",dyn.Flow); _deviceDyn.DynamicCache.AddOrUpdate("signal",dyn.Signal); }
22.3 配置輸出監測點
在根目錄下打開“ServerSuperIO.Tool.exe”工具,在【標簽配置】里把設備驅動里DynamicCache緩存中想要輸出到關係資料庫、實時資料庫和OPC Server等介面對應的標準名稱增加到配置項中。例如:flow和signal。如下圖:
22.4 配置參數
同樣打開“ServerSuperIO.Tool.exe”工具,打開【基本配置】。
如果想要把數據輸出到OPC Server介面,先安裝相應的組件,在“OPC工具和組件”目錄中,最後配置如下參數:
如果想要把數據輸出到關係資料庫或實時資料庫,配置如下參數:
2.[開源]C#跨平臺物聯網通訊框架ServerSuperIO(SSIO)介紹
2.應用SuperIO(SIO)和開源跨平臺物聯網框架ServerSuperIO(SSIO)構建系統的整體方案
3.C#工業物聯網和集成系統解決方案的技術路線(數據源、數據採集、數據上傳與接收、ActiveMQ、Mongodb、WebApi、手機App)
5.ServerSuperIO開源地址:https://github.com/wxzz/ServerSuperIO
物聯網&集成技術(.NET) QQ群:54256083
下載地址:http://www.bmpj.net/thread-14-1-1.html