需求:數據庫
電力監控行業,常須要對一些儀表\儀器進行數據採集和遠程控制,採集數據的方式經常使用串口、以太網,通常狀況下使用MOBUS RTU TCP/IP。儀表、儀器數據內容不一樣。通常狀況下都會使用組態軟件來開發,可是對一些公司來講,沒有必要使用一個大的平臺,並且在價格方面也不低。並且不易控制。網絡
分析:spa
把採集數據單獨進程,設計成通用的數據採集,經過共享內存來實現進程間數據交互設計
設計:排序
共享內存隊列
把每一種類型的儀表數據設計成一個結構體,而後每個儀表,一個惟一標識,設定一個統一的規則生成惟一標識的方式。每個惟一標識對應一個偏移長度,當須要讀寫內存裏,能夠經過惟一標識訪問數據。進程
其實這樣就實現一個簡單內存關係數據庫,在後臺更新數據和網絡這種比較耗時的操做作成一個通用模塊,而又不影響人機交互界面的設計,這樣子就相對獨立。UI進程與後臺數據採集進程共同使用惟一標識生成規則,則能夠方便的讀數據用於數據分析。內存
數據採集開發
對於數據採集,通常都是有采集命令,數據採集做爲主站發送採集命令,儀表、儀器做爲從站返回數據,頗有典型的表明就是modbus協議,數據分析
後臺數據採集 生成過程: 讀取用戶配置文件(獲得儀表儀器)-->按規則排序-->生成採集命令隊列,依次發送命令採集數據。其中有一些控制命令,如遠程序操做儀表。就有了兩種命令,一種採集命令,一種控制命令。控制命令是在用戶使用時發生,而採集命令是一個週期性的命令,須要重複的執行。
後臺數據採集就有一個隊列控制。
經過這樣的一個設計後,當用戶進行遠程控制時,能及時的響應用戶的操做,從而又不理採集數據總體結構,添加命令須要用到多進程間的通訊。