【開源】C#跨平臺物聯網通訊框架ServerSuperIO(SSIO)

唯笑志在發表於2016-03-24

目       錄

C#跨平臺物聯網通訊框架ServerSuperIO(SSIO)正式開源... 1

1.      SSIO的特點

2.      SSIO概述

3.      SSIO與SIO的區別

4.      控制模式

5.      跨平臺Windows和Linux

 

一.SSIO的特點

  1. 輕型高效能通訊框架,適用於多種應用場,輪詢模式、自控模式、併發模式和單例模式。
  2. 裝置驅動、IO通道、控制模式場景協調統一。
  3. 裝置驅動內軒命令驅動器、命令快取器、自定義引數和實時資料元素。
  4. 框架平臺支援按裝置命令優先順序別進行排程,保證高階別命令及時傳送。
  5. 一個裝置驅動同時支援串列埠和網路兩種通訊方式,可以監視IO通道資料。
  6. 一個裝置驅動,在網路通訊時可以支援TCP Server和TCP Client兩種工作模式。
  7. 內建顯示檢視介面,滿足不同顯示需求。
  8. 內建服務元件介面,可以自定義完成OPC服務、4-20mA輸出、LED大屏顯示、簡訊服務、以及多功能閘道器服務。
  9. 可以建立多服務例項,完成不同業務的拆分。
  10. 支援跨平臺部署,可以執行在Linux和Windows系統。

 

二.SSIO概述

   SSIO通訊框架的設計思想是在SuperIO(SIO)基礎上發展而來,並沒有高大上的技術,主要是工作經驗的積累,適合於不同應用場景的物聯網的資料採集與互動。SSIO和SIO並不是簡單的對IO高效能的操作,而是裝置驅動、IO通道、控制模式和實際硬體裝置之間的協調機制,各方面之間無縫銜接和執行,也是為了解決現實工作和應用場景的一些痛點。

  軟硬體之間的資料互動,並且面臨著複雜的現場環境:

(1)複雜的、多樣的通訊協議。有標準的協議,例如:Modbus等,也有很多根據標準協議修改的協議格式、以及自定義協議格式,並且千差萬別。對於不好的軟體架構,疲於應對,增加裝置或協議要對整個軟體進行梳理,往往在此過程中出現新的問題或BUG。

(2)針對不同使用者對軟體介面或功能的要求有很大不同,使之滿足不同使用者的顯示要求,可以自定義資料顯示介面。那麼就需要提供顯示檢視介面,與裝置驅動進行互動。

(3)既然現場裝置的資料被採集上來,那麼就需要對其進行處理,不僅僅是儲存、查詢、報表等,還有:資料轉發、資料輸出(OPC、模擬量、大屏等)等。那麼就需要提供服務性的介面,與裝置驅動進行互動。

(4)通訊鏈路的多種性,對於同一個裝置可能要支援RS232/RS485/RS422、RJ45、3G/4G等通訊方式,所以對於一個裝置要對應多種通訊方式(串列埠和網路),也給我們的開發造成很大的障礙。

(5)裝置驅動、IO通道和實際的現場硬體終端之間鏈路複雜,有可能:一個裝置驅動對應一個IO通道、一個裝置驅動對應多個IO通道、多個裝置驅動對應一個IO通道等情況。

(6)既然裝置與服務端進行資料互動,那麼就應該對裝置的通訊狀態、IO狀態、以及裝置本身的狀態進行監控,這樣裝置才處於可維護狀態。

(7)軟體各版本、以及軟體與硬體之間的相容性很差,管理起來錯綜複雜。在框架平臺穩定的情況下,只需要更新裝置驅動。

   為了解決以上諸多問題,開發一個軟體框架,支援二次開發。在不對軟體框架改動的情況下,能夠很方便的接入裝置、維護裝置、整合裝置、處理裝置業務資料等。軟體框架相對穩定,把容易變化的部分進行靈活設計。

 

三.SSIO與SIO的區別

序號

屬性

SSIO

SIO

1

應用場景

適用於高頻的資料採集與控制,可以部署在伺服器端。

適用於一般性的上位機資料採集,例如:區域網內的廠級服務端應用。

2

控制模式

輪詢模式、自控模式、併發模式、單例模式

輪詢模式、自控模式、併發模式、

3

效能

高效能

效能不如SSIO

4

服務例項

一個程式可以建立多個服務例項

一個程式只能建立一個服務例項

5

跨平臺

支援Linux和Windows

只支援Windows各版本作業系統

6

二次開發

方便(不包括介面)

只需要繼承就可以建立一個完整的應用程式

7

程式碼結構

更合適

使用的單例模式較多

8

串列埠元件

SerialPort

PCOMM

9

網路元件

SocketAsyncEventArgs

Socket

10

開源

開源

沒有開源

11

OPC

不支援

支援

12

模擬量

不支援

支援

13

外掛

需要自己二次開發

完全支援外掛化部署

 

四.控制模式

(1)輪詢模式:當串列埠和網路通訊時都可以使用這種控制模式。當有多個裝置連線到通訊平臺時,通訊平臺會輪詢排程裝置進行通訊任務。某一時刻只能有一個裝置傳送請求命令、等待接收返回資料,這個裝置完成傳送、接收(如果遇到超時情況,則自動返回)後,下一個裝置才進行通訊任務,依次輪詢裝置。如下圖:

 

(2)併發模式:只有網路通訊時可以使用這種控制模式。併發通訊模式是集中傳送所有裝置的請求指令,框架是採用迴圈同步方式傳送請求命令。還有進一步提高的機會,採用並行非同步方式集中傳送請求命令。硬體裝置接收到指令後進行校驗,校驗成功後返回對應指令的資料,通訊平臺非同步監聽到資料資訊後,進行接收操作,然後再進行資料的分發、處理等。如下圖:

 

(3)自控模式:只有網路通訊時可以使用這種控制模式。自控通訊模式與併發通訊模式類似,區別在於傳送指令操作交給裝置驅動本身進行控制,或者說交給二次開發者,二次開發者可以通過時鐘定時用事件驅動的方式傳送指令資料。硬體裝置接收到指令後進行校驗,校驗成功後返回對應指令的資料,通訊平臺非同步監聽到資料資訊後,進行接收操作,然後再進行資料的分發、處理等。

   自控通訊模式可以為二次開發者提供精確的定時請求實時資料機制,使通訊機制更靈活、自主,如果多個裝置驅動使用同一個IO通道的話,時間控制會有偏差。如下圖:

 

(4)單例模式:只有網路通訊時可以使用這種控制模式。在一個服務例項內只能有一個裝置驅動,相當於一個裝置驅動對應著N多個硬體裝置終端。更適合通訊的資料協議有固定的標準,以命令關鍵字處理不同的資料。適用於高併發的硬體終端裝置主動上傳資料,伺服器端根據資料資訊進行處理和返回相應的資料。如下圖:

 

 

五.跨平臺Windows和Linux

(1)Windows執行效果

 

(2)Linux執行效果

 

開源地址:https://github.com/wxzz/ServerSuperIO

百度網盤:http://pan.baidu.com/s/1eRy0inK

QQ:504547114

QQ群:54256083

相關文章