程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【開源】C#跨平台物聯網通訊框架ServerSuperIO(SSIO),

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

編輯:C#入門知識

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


[連載]《C#通訊(串口和網絡)框架的設計與實現》-1.通訊框架介紹

[連載]《C#通訊(串口和網絡)框架的設計與實現》-2.框架的總體設計

 

目       錄

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

1.      SSIO的特點

2.      SSIO概述

3.      SSIO與SIO的區別

4.      控制模式

5.      跨平台Windows和Linux

 

一.SSIO的特點

 

二.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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved