1. 概述... 2
2. 實時採集開停狀態... 2
3. 增加虛擬裝置... 2
4. 指令碼統計和計算裝置執行時長... 4
5. 裝置執行時長報表... 7
1. 概述
有一個煤礦專案,使用iNeuOS系統時有一個需要是:要統計裝置的執行時長,進一步統計裝置執行效率。主要是有效分析裝置執行狀態,合理的進行節能。
iNeuOS本身具備強大的指令碼能力,需要現場實施人員有一定指令碼編寫能力,如果不具備指令碼編寫能力,那麼下面的模板修改相應的引數即可。
首先能夠實時讀取到相應裝置的開停狀態,讀取資料點的引數根據現場實際裝置情況設定。如下圖:
不iNeuKernel後臺服務讀取資料,如下圖:
3. 增加虛擬裝置
(1)增加虛擬裝置
增加虛擬裝置和虛擬資料點。所有虛擬裝置關閉【是否啟用】,如下圖:
可以按實現物理層級增加相應裝置一一對應的子裝置,同樣關閉【是否啟用】,如下圖:
(2)增加虛擬資料點
編輯相應的裝置,在【資料點】選卡上新增資料點,如下圖:
在資料點的基本資訊的【點型別】選擇「虛擬點」,如下圖:
每臺虛擬裝置創新4個虛擬資料點:裝置執行開始時間、裝置執行停止時間、裝置執行臨時狀態和裝置執行時長。如下圖:
需要統計裝置執行時長都按上面的流程設定,虛擬裝置層級可以靈活調整。
在系統桌面開啟【流程控制】功能,如下圖:
增加流程控制任務,如下圖:
統計裝置時長的指令碼模板,如下指令碼:
string io_signal=getvalue("i376006988762583040","signal"); //裝置開停狀態 //記錄當前裝置狀態,防止重新記錄 string temp_run_temp=getvalue("i386181395921375232","device_run_temp_state"); if(string.IsNullOrEmpty(temp_run_temp)) { temp_run_temp="0"; } if(io_signal=="1" && temp_run_temp=="0")//執行狀態 { //記錄當前為開啟狀態 save("i386181395921375232","device_run_temp_state","1"); //記錄開始執行時間點 save("i386181533603598336","device_run_sdt",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } if(io_signal=="0" && temp_run_temp=="1")//停止狀態 { //記錄當前為停止狀態 save("i386181395921375232","device_run_temp_state","0"); //記錄停止執行時間點 string edt=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); save("i386181687433891840","device_run_edt",edt); //計算時長 //獲得裝置執行的開始時間節點 string sdt=getvalue("i386181533603598336","device_run_sdt"); //計算時間差 TimeSpan ts = DateTime.Parse(edt) - DateTime.Parse(sdt); //獲得執行時長,單分為分鐘。如果是小時:ts.TotalHours double run_minute_num = ts.TotalMinutes; //儲存執行時長 save("i386181860411183104","device_run_minute_num",run_minute_num.ToString()); }
選擇【儲存】,設定流程控制名稱、流程描述、是否啟動和間隔時長。如下圖:
當裝置狀態發生變化,後臺服務會根據狀態計算當前裝置執行時長。如下圖:
報表應用操作參見:《iNeuOS工業網際網路作業系統,線上報表(Excel)開發工具》。
在桌面開啟【報表設計】,如下圖:
選擇Excel的單元格,並且在右邊設定相應資料點,如下圖:
在執行時長單元格設定上的【統計】選擇「和值」,如下圖:
在【時間跨度】按需設定時間精度,如下圖:
選擇【儲存】,在桌面上會顯示設定報表的應用。如下圖:
最終呈現效果,如下圖:
注:一個開啟和停止應該顯示在一行上,這塊我們再優化。
物聯網&巨量資料技術 QQ群:54256083
物聯網&巨量資料專案 QQ群:727664080
QQ:504547114
微信:wxzz0151
部落格:https://www.cnblogs.com/lsjwq
微信公眾號:iNeuOS
購買《物聯網軟體架構設計與實現》:京東購買。