ServerSuperIOC# 跨平臺(tái)物聯(lián)網(wǎng)通訊框架
ServerSuperIO 簡(jiǎn)稱(chēng) SSIO ,是一個(gè) C# 跨平臺(tái)物聯(lián)網(wǎng)通訊框架。
一.SSIO的特點(diǎn)
輕型高性能通信框架,適用于多種應(yīng)用場(chǎng),輪詢(xún)模式、自控模式、并發(fā)模式和單例模式。
設(shè)備驅(qū)動(dòng)、IO通道、控制模式場(chǎng)景協(xié)調(diào)統(tǒng)一。
設(shè)備驅(qū)動(dòng)內(nèi)軒命令驅(qū)動(dòng)器、命令緩存器、自定義參數(shù)和實(shí)時(shí)數(shù)據(jù)元素。
框架平臺(tái)支持按設(shè)備命令優(yōu)先級(jí)別進(jìn)行調(diào)度,保證高級(jí)別命令及時(shí)發(fā)送。
一個(gè)設(shè)備驅(qū)動(dòng)同時(shí)支持串口和網(wǎng)絡(luò)兩種通訊方式,可以監(jiān)視IO通道數(shù)據(jù)。
一個(gè)設(shè)備驅(qū)動(dòng),在網(wǎng)絡(luò)通訊時(shí)可以支持TCP Server和TCP Client兩種工作模式。
內(nèi)置顯示視圖接口,滿(mǎn)足不同顯示需求。
內(nèi)置服務(wù)組件接口,可以自定義完成OPC服務(wù)、4-20mA輸出、LED大屏顯示、短信服務(wù)、以及多功能網(wǎng)關(guān)服務(wù)。
可以創(chuàng)建多服務(wù)實(shí)例,完成不同業(yè)務(wù)的拆分。
支持跨平臺(tái)部署,可以運(yùn)行在Linux和Windows系統(tǒng)。
二.SSIO概述
SSIO通信框架的設(shè)計(jì)思想是在SuperIO(SIO)基礎(chǔ)上發(fā)展而來(lái),并沒(méi)有高大上的技術(shù),主要是工作經(jīng)驗(yàn)的積累,適合于不同應(yīng)用場(chǎng)景的物聯(lián)網(wǎng)的數(shù)據(jù) 采集與交互。SSIO和SIO并不是簡(jiǎn)單的對(duì)IO高性能的操作,而是設(shè)備驅(qū)動(dòng)、IO通道、控制模式和實(shí)際硬件設(shè)備之間的協(xié)調(diào)機(jī)制,各方面之間無(wú)縫銜接和運(yùn) 行,也是為了解決現(xiàn)實(shí)工作和應(yīng)用場(chǎng)景的一些痛點(diǎn)。
軟硬件之間的數(shù)據(jù)交互,并且面臨著復(fù)雜的現(xiàn)場(chǎng)環(huán)境:
(1)復(fù)雜的、多樣的通訊協(xié)議。有標(biāo)準(zhǔn)的協(xié)議,例如:Modbus等,也有很多根據(jù)標(biāo)準(zhǔn)協(xié)議修改的協(xié)議格式、以及自定義協(xié)議格式,并且千差萬(wàn)別。對(duì)于不好的軟件架構(gòu),疲于應(yīng)對(duì),增加設(shè)備或協(xié)議要對(duì)整個(gè)軟件進(jìn)行梳理,往往在此過(guò)程中出現(xiàn)新的問(wèn)題或BUG。
(2)針對(duì)不同用戶(hù)對(duì)軟件界面或功能的要求有很大不同,使之滿(mǎn)足不同用戶(hù)的顯示要求,可以自定義數(shù)據(jù)顯示界面。那么就需要提供顯示視圖接口,與設(shè)備驅(qū)動(dòng)進(jìn)行交互。
(3)既然現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)被采集上來(lái),那么就需要對(duì)其進(jìn)行處理,不僅僅是保存、查詢(xún)、報(bào)表等,還有:數(shù)據(jù)轉(zhuǎn)發(fā)、數(shù)據(jù)輸出(OPC、模擬量、大屏等)等。那么就需要提供服務(wù)性的接口,與設(shè)備驅(qū)動(dòng)進(jìn)行交互。
(4)通訊鏈路的多種性,對(duì)于同一個(gè)設(shè)備可能要支持RS232/RS485/RS422、RJ45、3G/4G等通訊方式,所以對(duì)于一個(gè)設(shè)備要對(duì)應(yīng)多種通訊方式(串口和網(wǎng)絡(luò)),也給我們的開(kāi)發(fā)造成很大的障礙。
(5)設(shè)備驅(qū)動(dòng)、IO通道和實(shí)際的現(xiàn)場(chǎng)硬件終端之間鏈路復(fù)雜,有可能:一個(gè)設(shè)備驅(qū)動(dòng)對(duì)應(yīng)一個(gè)IO通道、一個(gè)設(shè)備驅(qū)動(dòng)對(duì)應(yīng)多個(gè)IO通道、多個(gè)設(shè)備驅(qū)動(dòng)對(duì)應(yīng)一個(gè)IO通道等情況。
(6)既然設(shè)備與服務(wù)端進(jìn)行數(shù)據(jù)交互,那么就應(yīng)該對(duì)設(shè)備的通訊狀態(tài)、IO狀態(tài)、以及設(shè)備本身的狀態(tài)進(jìn)行監(jiān)控,這樣設(shè)備才處于可維護(hù)狀態(tài)。
(7)軟件各版本、以及軟件與硬件之間的兼容性很差,管理起來(lái)錯(cuò)綜復(fù)雜。在框架平臺(tái)穩(wěn)定的情況下,只需要更新設(shè)備驅(qū)動(dòng)。
為了解決以上諸多問(wèn)題,開(kāi)發(fā)一個(gè)軟件框架,支持二次開(kāi)發(fā)。在不對(duì)軟件框架改動(dòng)的情況下,能夠很方便的接入設(shè)備、維護(hù)設(shè)備、集成設(shè)備、處理設(shè)備業(yè)務(wù)數(shù)據(jù)等。軟件框架相對(duì)穩(wěn)定,把容易變化的部分進(jìn)行靈活設(shè)計(jì)。
三.控制模式
(1)輪詢(xún)模式:當(dāng)串口和網(wǎng)絡(luò)通訊時(shí)都可以使用這種控制模式。當(dāng)有多個(gè)設(shè)備 連接到通訊平臺(tái)時(shí),通訊平臺(tái)會(huì)輪詢(xún)調(diào)度設(shè)備進(jìn)行通訊任務(wù)。某一時(shí)刻只能有一個(gè)設(shè)備發(fā)送請(qǐng)求命令、等待接收返回?cái)?shù)據(jù),這個(gè)設(shè)備完成發(fā)送、接收(如果遇到超時(shí) 情況,則自動(dòng)返回)后,下一個(gè)設(shè)備才進(jìn)行通訊任務(wù),依次輪詢(xún)?cè)O(shè)備。如下圖:
(2)并發(fā)模式:只有網(wǎng)絡(luò)通訊時(shí)可以使用這種控制模式。并發(fā)通訊模式是集中 發(fā)送所有設(shè)備的請(qǐng)求指令,框架是采用循環(huán)同步方式發(fā)送請(qǐng)求命令。還有進(jìn)一步提高的機(jī)會(huì),采用并行異步方式集中發(fā)送請(qǐng)求命令。硬件設(shè)備接收到指令后進(jìn)行校 驗(yàn),校驗(yàn)成功后返回對(duì)應(yīng)指令的數(shù)據(jù),通訊平臺(tái)異步監(jiān)聽(tīng)到數(shù)據(jù)信息后,進(jìn)行接收操作,然后再進(jìn)行數(shù)據(jù)的分發(fā)、處理等。如下圖:
(3)自控模式:只有網(wǎng)絡(luò)通訊時(shí)可以使用這種控制模式。自控通訊模式與并發(fā) 通訊模式類(lèi)似,區(qū)別在于發(fā)送指令操作交給設(shè)備驅(qū)動(dòng)本身進(jìn)行控制,或者說(shuō)交給二次開(kāi)發(fā)者,二次開(kāi)發(fā)者可以通過(guò)時(shí)鐘定時(shí)用事件驅(qū)動(dòng)的方式發(fā)送指令數(shù)據(jù)。硬件設(shè) 備接收到指令后進(jìn)行校驗(yàn),校驗(yàn)成功后返回對(duì)應(yīng)指令的數(shù)據(jù),通訊平臺(tái)異步監(jiān)聽(tīng)到數(shù)據(jù)信息后,進(jìn)行接收操作,然后再進(jìn)行數(shù)據(jù)的分發(fā)、處理等。
自控通訊模式可以為二次開(kāi)發(fā)者提供精確的定時(shí)請(qǐng)求實(shí)時(shí)數(shù)據(jù)機(jī)制,使通訊機(jī)制更靈活、自主,如果多個(gè)設(shè)備驅(qū)動(dòng)使用同一個(gè)IO通道的話(huà),時(shí)間控制會(huì)有偏差。如下圖:
(4)單例模式:只有網(wǎng)絡(luò)通訊時(shí)可以使用這種控制模式。在一個(gè)服務(wù)實(shí)例內(nèi)只 能有一個(gè)設(shè)備驅(qū)動(dòng),相當(dāng)于一個(gè)設(shè)備驅(qū)動(dòng)對(duì)應(yīng)著N多個(gè)硬件設(shè)備終端。更適合通訊的數(shù)據(jù)協(xié)議有固定的標(biāo)準(zhǔn),以命令關(guān)鍵字處理不同的數(shù)據(jù)。適用于高并發(fā)的硬件終 端設(shè)備主動(dòng)上傳數(shù)據(jù),服務(wù)器端根據(jù)數(shù)據(jù)信息進(jìn)行處理和返回相應(yīng)的數(shù)據(jù)。如下圖:
四.跨平臺(tái)Windows和Linux
(1)Windows運(yùn)行效果
(2)Linux運(yùn)行效果
