一、系統概述
我在上年做了一些工控軟件開發的介紹(可參考我之前發過的博文),解決了兩個主要問題:
1、無需修改代碼,簡單配置,即可支持幾十上百種不同通訊協議的儀器。
2、開發了類似組態軟件的功能,像畫圖軟件一樣編輯一個流程圖,圖像元素能夠根據儀器數據和狀態進行實時變化。
當然還有其他解決的問題,但比較突出的是上面兩點。
(組態)
(設備配置)
(設備面板)
(數據圖表)
今年接觸到幾位同行的朋友,他們提出了能不能提供在Web上運行的組態圖的想法。確實,Web早已大行其道,之前只是因爲覺得Web實時性不夠而沒有往這方面考慮。要真論起桌面軟件和Web的實時性哪個好,結論當然是桌面軟件要好一些,畢竟Web還有一個跟服務器交互的過程,這是毋庸置疑的。但這個延時真的不能接受嗎?如果桌面軟件是1秒,Web是1.01秒,那又有什麼關係呢?
本人之前所開發的工控軟件,使用的技術是C#/WPF,只能運行在Windows系統下。一不做二不休,本次所開發的SCADA系統,能夠運行在Windows和Linux系統下,能夠以桌面軟件的形式展現,也能以網頁的形式展現。
SCADA系統的功能可以分爲幾大塊:數據採集、數據展現、報表、數據存儲、反控、組態和上傳數據。其中,報表和組態其實都是數據展現的一種形式,因爲它們比較重要,所以單列出來。在儀器多種多樣的場合下,設備配置也是系統中很重要的一個模塊。
根據應用場景,SCADA系統的部署架構可能是以下幾種情況:
儀器-工控機
儀器-工控機-服務器-客戶端
這是最常見的一種模式。功能模塊在各端中的分佈可能會有些差異,例如,工控機端一般也會保存一份數據。
儀器-服務器-客戶端
考慮到開發成本和維護成本,我們肯定希望系統只有一套代碼。藉助.NET技術,我所開發的SCADA系統做到了這一點。在不同的系統、不同的平臺下,只有一套代碼。大致的實現方法是:
1、類庫的目標框架同時包含.NET Framework和.NET Core。
2、服務端使用.NET Core開發。
3、界面主要使用Web去做,在桌面版中使用容器。
具體的開發細節在後續的文章中講述。