在SSIO上增加了UDP通訊方式,可以到Github上下載源代碼。在原來的項目中,遠端的設備與中心站的數據交互並沒有使用過UDP方式。這種短連接的通訊鏈路,不容易維護,主要體現在:(1)持續的數據交互能力。(2)對現場設備進行長時間的維護和校准。(3)SSIO要協調設備、IO和控制方式之間的運作關系,無法即時反應設備的IO狀態。等等。
但是,對於一個平台來講,UDP的通訊方式是應該具有的,根據現場情況選擇是否應用。例如:遠端的設備定時發送設備狀態信息等,可以使用UDP的通訊方式,在SSIO裡單獨建立一個狀態服務實例。
SIO和SSIO的設計思想是相似的,但是還是有一定的區別,請參見《C#跨平台物聯網通訊框架ServerSuperIO(SSIO)》。
根據應用場景,SIO和SSIO可以相互配合部署到不同的地方。SIO可以部署在工業現場或工作站點,采集區域范圍的硬件設備或傳感器的數據,然後打包上傳數據;SSIO可以部署在服務器端,接收上傳的數據,並與現場進行數據或命令交互。結合圖如下:
SIO本身就是一個WinForm應用程序,只需要繼承MainForm就能夠很快的構建自己的圖形化的通訊平台,把開發好的設備驅動、圖形顯示、服務等以插件的方式掛載到平台,就可以運行了,可以參見二次開發手冊。一般現場工控機都是Windows操作系統,盡管SIO不支持跨平台(開發SIO的時候,還沒有Mono呢),但是支持Windows XP sp3所有以上版本的操作系統。
SSIO本身是一個支持多服務實例的命令行程序,更適合部署在服務器端,負責與SIO或現場設備、傳感器進行數據交互。並且SSIO的各方面的性能更優於SIO,以及支持4種控制模式的應用場景,輪詢模式、自控模式、並發模式和單例模式。
使用SIO和SSIO二次形式發時不需要關心對設備、IO和控制方式的調度,只需要繼承接口開發設備驅動和設置相應的參數就可以了。另外,SIO和SSIO可以作為組態軟件的核心通訊組件。
SSIO可以支持跨平台運行,如果智能設備內嵌裁剪後的Linux操作系統,SSIO可以跑在智能設備中,唯一的缺點就是缺少強大的Web監控服務,現在ASP.NET Core支持跨平台部署了,到是一個發展的方向。
SSIO也可以作為嵌入式智能網關服務,對采集的數據進行協議轉換、打包、轉發。
SIO和SSIO的設備驅動,當網絡通訊時,都支持Tcp Client工作模式。因為現場環境比較復雜,又是防火牆、路由之類的。有時候做項目,找個熟悉環境的人都困難,所以當前找了一個最簡單的解決方法,就是反向連接,也一直延續至今。
開源地址:https://github.com/wxzz/ServerSuperIO
QQ:504547114
QQ群:54256083