国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

增氧泵自動(dòng)控制系統(tǒng)通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

2016-10-21 06:40肖微孫亞新
關(guān)鍵詞:控制箱應(yīng)用層通信協(xié)議

肖微,孫亞新

(常熟理工學(xué)院a.計(jì)算機(jī)科學(xué)與工程學(xué)院;b.電氣與自動(dòng)化工程學(xué)院,江蘇常熟215500)

增氧泵自動(dòng)控制系統(tǒng)通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

肖微a,孫亞新b

(常熟理工學(xué)院a.計(jì)算機(jī)科學(xué)與工程學(xué)院;b.電氣與自動(dòng)化工程學(xué)院,江蘇常熟215500)

結(jié)合應(yīng)用層協(xié)議設(shè)計(jì)與實(shí)現(xiàn)中常見的問題,給出了增氧泵自動(dòng)控制系統(tǒng)通信協(xié)議的設(shè)計(jì)方案,在此基礎(chǔ)上提出了增氧泵自動(dòng)控制系統(tǒng)通信協(xié)議的制定方法.該方法建立在TCP/IP通信技術(shù)基礎(chǔ)上,能夠有效地實(shí)現(xiàn)增氧泵控制箱與服務(wù)器間的通信.

應(yīng)用層協(xié)議;網(wǎng)絡(luò)編程;同步通信;異步通信

現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)源于伯克利套接字技術(shù)[1].該技術(shù)提供了以C語言為基礎(chǔ),基于Unix平臺(tái)的用于進(jìn)程間通信的接口.通過TCP/IP和套接字實(shí)現(xiàn)自定義應(yīng)用層通信協(xié)議,能夠有效的實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸.通信協(xié)議精確地定義了雙方通信控制信息和解釋信息[2].進(jìn)程雙方以服務(wù)器與客戶端的方式進(jìn)行通信.通信雙方通過IP地址與通信端口進(jìn)行鑒定,進(jìn)而實(shí)現(xiàn)鏈接的建立、維護(hù)、關(guān)閉以及消息的傳輸.與人類對話相似,為了完成特定的功能,通信雙方必須使用相同的“語言”——應(yīng)用層協(xié)議.應(yīng)用層協(xié)議規(guī)定了接送的消息內(nèi)容的實(shí)際含義.應(yīng)用層協(xié)議指定的好壞不僅關(guān)系到網(wǎng)絡(luò)帶寬的占用,報(bào)文解析代碼的繁簡,還關(guān)系到通信安全性,它直接決定著一個(gè)項(xiàng)目的質(zhì)量.對于一個(gè)實(shí)際的項(xiàng)目而言,掌握如何設(shè)計(jì)應(yīng)用層協(xié)議以及如何實(shí)現(xiàn)給定的應(yīng)用層協(xié)議具有重要的意義.

1 增氧泵控制系統(tǒng)通信協(xié)議的設(shè)計(jì)方案

在淡水漁業(yè)養(yǎng)殖中必須確保水中的溶氧度達(dá)到一定的指標(biāo),否則容易引起魚因缺氧而死亡,因而必須保證增氧泵在水溶氧度低于臨界值時(shí)處于啟動(dòng)狀態(tài).傳統(tǒng)作業(yè)中,農(nóng)戶必須定時(shí)打開增氧泵,盡管這項(xiàng)工作的工作強(qiáng)度不大,但由于工作人員晚上無法正常休息,因而非常耗費(fèi)精力.

為了改進(jìn)農(nóng)戶的生活質(zhì)量,常熟市智勝信息技術(shù)有限公司聯(lián)合常熟理工學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院物聯(lián)網(wǎng)工程項(xiàng)目組,開發(fā)了一款智能魚塘增氧泵控制系統(tǒng).該系統(tǒng)通過傳感器檢測水中溶氧度的值,自動(dòng)控制增氧泵的開啟與關(guān)閉,并將數(shù)據(jù)上傳服務(wù)器.用戶可以遠(yuǎn)程查看水溶氧度與增氧泵狀態(tài)的變化過程,也可以人工遠(yuǎn)程控制增氧泵的狀態(tài).為了達(dá)到前述功能,在系統(tǒng)運(yùn)行過程中,需要增氧泵控制箱中的單片機(jī)與遠(yuǎn)程服務(wù)器保持實(shí)時(shí)通信.為實(shí)現(xiàn)控制箱與服務(wù)器間的消息傳送,需要設(shè)計(jì)一個(gè)應(yīng)用層協(xié)議.

應(yīng)用層協(xié)議的制定既要考慮到消息的語言表達(dá)也應(yīng)考慮到通信節(jié)點(diǎn)對消息完整性、正確性的驗(yàn)證.此外協(xié)議的制定應(yīng)當(dāng)充分考慮到開發(fā)人員的實(shí)現(xiàn)難度.

1.1消息完整性定義

套接字是計(jì)算機(jī)網(wǎng)絡(luò)編程的核心和基礎(chǔ).計(jì)算機(jī)網(wǎng)絡(luò)通信中,客戶端與服務(wù)端所扮演的角色不同,因而套接字在客戶端與服務(wù)器端的使用方法有所不同.服務(wù)端的IP地址以及通信端口在通信前對客戶端公開.服務(wù)啟動(dòng)后,服務(wù)端程序在通信端口偵聽客戶端發(fā)出的鏈接請求.當(dāng)客戶端向服務(wù)端IP地址與特定通信端口發(fā)出鏈接請求后,服務(wù)端接受鏈接請求,并在服務(wù)端維護(hù)一個(gè)到該通信端口的套接.此后,雙方便建立了計(jì)算機(jī)網(wǎng)絡(luò)上的虛鏈接[3,4].在鏈接套接字關(guān)閉前,通信雙方可以通過網(wǎng)絡(luò)流的形式來進(jìn)行消息的收發(fā).

由于計(jì)算機(jī)網(wǎng)絡(luò)中通信雙方的鏈接是通過路由器的中轉(zhuǎn)所完成的虛鏈接,而路由器同時(shí)服務(wù)于不同的通信鏈接,因此計(jì)算機(jī)通信的雙方的“發(fā)送”與“接收”不存在一一對應(yīng)的關(guān)系.增氧泵控制箱中的單片機(jī)與遠(yuǎn)程服務(wù)器的通信中,接收方在進(jìn)行消息解析前必須確保所接收到的數(shù)據(jù)是完整和正確的.

有兩種常用的技術(shù)方法可以用來驗(yàn)證協(xié)議中消息的完整性.第一種方法可以在消息的頭部規(guī)定固定長度的字節(jié)用來描述該消息的總長度或剩余長度.當(dāng)消息接收端接收到足夠長度的字節(jié)后,可以確認(rèn)所收數(shù)據(jù)為完整,從而開始校驗(yàn)與解析工作;第二種方法將一個(gè)特殊字節(jié)(如0x0D)放置到消息的最后,當(dāng)消息接收方接受的最后一個(gè)字節(jié)為規(guī)定的特殊字節(jié)時(shí),便可判定所收數(shù)據(jù)為完整,否則將所收包裹進(jìn)行緩存,繼續(xù)接收剩余數(shù)據(jù)[5,6].

采用頭部描述消息長度的方式進(jìn)行完整性驗(yàn)證具有通用性,可以適應(yīng)不同的情況.然而當(dāng)消息長度較大時(shí),必須使用多個(gè)字節(jié)定義消息的長度,此時(shí)必須規(guī)定長度數(shù)據(jù)的編碼方式(大端方式或小端方式);此外對于開發(fā)人員來講實(shí)現(xiàn)這種完整性定義的協(xié)議相對較為困難.

采用尾部特征字節(jié)的方式進(jìn)行完整性驗(yàn)證對于開發(fā)人員來講實(shí)現(xiàn)起來較為容易(只需對每次接收到的數(shù)據(jù)的最后一位進(jìn)行檢查即可).然而,協(xié)議制定者必須確保完整性驗(yàn)證字節(jié)不出現(xiàn)在消息的其它部分,否則消息的完整性驗(yàn)證將無效.

增氧泵控制系統(tǒng)應(yīng)用層協(xié)議中采用0x0D字節(jié)作為消息結(jié)束位以保證消息的完整性.

1.2消息的正確性檢測

為了確保所接收的數(shù)據(jù)是發(fā)送方所發(fā)送的原始數(shù)據(jù),在應(yīng)用層協(xié)議制定時(shí)經(jīng)常采用數(shù)據(jù)校驗(yàn)技術(shù)來對接收到的數(shù)據(jù)進(jìn)行校驗(yàn).通常校驗(yàn)位的計(jì)算建立在數(shù)學(xué)方法的基礎(chǔ)之上,如CRC校驗(yàn)、異或校驗(yàn)等[7].

當(dāng)頭部字節(jié)規(guī)定數(shù)據(jù)長度時(shí),校驗(yàn)數(shù)據(jù)會(huì)放置到數(shù)據(jù)的最后;當(dāng)結(jié)尾完整性校驗(yàn)字節(jié)被采納時(shí),校驗(yàn)數(shù)據(jù)會(huì)被放置到完整性校驗(yàn)字節(jié)前面相鄰的位置.

由于校驗(yàn)數(shù)據(jù)是通過消息中原始數(shù)據(jù)計(jì)算得出,因此在采用結(jié)尾完整性校驗(yàn)技術(shù)時(shí)有可能出現(xiàn)正確性校驗(yàn)數(shù)據(jù)中含有完整性校驗(yàn)字節(jié)的情況.此時(shí)如果不做任何技術(shù)處理就會(huì)出現(xiàn)消息解析錯(cuò)誤.為了正確地解析消息,增氧泵控制系統(tǒng)應(yīng)用層協(xié)議中采用字節(jié)替換的方式來解決完整性校驗(yàn)位與正確性校驗(yàn)位沖突的問題.如:以0x0D作為完整性校驗(yàn)字節(jié),當(dāng)正確性校驗(yàn)數(shù)據(jù)中出現(xiàn)0x0D字節(jié)時(shí)可以規(guī)定以0x20進(jìn)行替換.

1.3消息體中字段的定義

應(yīng)用層通信協(xié)議用于規(guī)定通信雙方所發(fā)送/接收消息的功能性語意,換言之,應(yīng)用層協(xié)議規(guī)定了期待對方發(fā)送的數(shù)據(jù)的具體格式,消息的組織方式等細(xì)節(jié).

常見的協(xié)議組織方式有兩種:第一種直接規(guī)定了消息中每一字節(jié)(或bit這種情況較少見)的取值范圍和對應(yīng)含義;第二種將消息的定義建立在字符串基礎(chǔ)之上,這時(shí)通信協(xié)議中規(guī)定了協(xié)議軀干所采用的編碼方式(通常為標(biāo)準(zhǔn)編碼),并在此基礎(chǔ)之上規(guī)定如何用字符串來表達(dá)消息的具體內(nèi)容.第一種協(xié)議更為緊湊但實(shí)現(xiàn)時(shí)的開發(fā)任務(wù)相對繁重;第二種協(xié)議用于建立在字符串的基礎(chǔ)上,因而完成相同功能所耗費(fèi)的字節(jié)數(shù)較多,但由于大多數(shù)語言或平臺(tái)都有針對字符串的強(qiáng)大支持,因此系統(tǒng)實(shí)現(xiàn)較為方便快捷.

應(yīng)用層協(xié)議的軀干部分可以看作將結(jié)構(gòu)體中的數(shù)據(jù)進(jìn)行串行化的表達(dá).當(dāng)消息中所有字段都有固定的長度時(shí),可以用定長的字節(jié)來規(guī)定特定的字段.當(dāng)某些字段無法預(yù)知其長度時(shí),應(yīng)用層協(xié)議中需要規(guī)定字段標(biāo)識和字段分隔符.通常在一個(gè)應(yīng)用協(xié)議中,當(dāng)存在定長字段與不定長字段時(shí),建議將定長字段集中放置在消息的前部,而不定長字段放置于消息的后部,這樣的定義便于協(xié)議解析程序的實(shí)現(xiàn).

2 增氧泵控制系統(tǒng)通信協(xié)議的制定與實(shí)現(xiàn)方法

2.1通信協(xié)議框架

根據(jù)1中所描述的設(shè)計(jì)方案,增氧泵控制系統(tǒng)應(yīng)用層協(xié)議格式設(shè)置如下:

由于控制箱與服務(wù)器間通過中國移動(dòng)的通信網(wǎng)關(guān)進(jìn)行交互,為區(qū)分本協(xié)議與AT命令,本協(xié)議的所有數(shù)據(jù)包前統(tǒng)一加入消息頭0x24($).

消息頭代表通信雙方所發(fā)消息的鑒定值;數(shù)據(jù)段用于所傳輸?shù)臄?shù)據(jù)或命令;校驗(yàn)位為從消息頭(包括消息頭)到數(shù)據(jù)段結(jié)束按字節(jié)亦或運(yùn)算所得到的一個(gè)字節(jié)的校驗(yàn)位,用于驗(yàn)證信息在傳輸中是否存在通信錯(cuò)誤(或被篡改);結(jié)束符在本協(xié)議中固定為0x13(CR),用于判斷所接收的消息是否完整.根據(jù)本文2.2中的原則,當(dāng)驗(yàn)證字節(jié)的計(jì)算結(jié)果為0x13時(shí),將其值修改為0x20.

以該協(xié)議中的心跳包消息對為例,該消息對包含從水泵控制箱向服務(wù)器返送的消息(消息編號003)和從服務(wù)器返回的確認(rèn)消息,消息內(nèi)容如下:

心跳包$<003><16字節(jié)控制芯片ID><checksum><CR>

心跳包確認(rèn)$<004><16字節(jié)控制芯片ID><|><節(jié)點(diǎn)ID列表><checksum><CR>

該消息對中除上述描述的協(xié)議頭、消息頭、checksum以及結(jié)束位CR外,還包括了16字節(jié)控制箱芯片ID號和返回消息中的傳感器節(jié)點(diǎn)芯片ID列表(一個(gè)控制箱可以鏈接多個(gè)傳感器).控制節(jié)點(diǎn)間以‘|'進(jìn)行分割可以方便通過split方法進(jìn)行消息解析.

2.2消息同步機(jī)制

增氧泵控制系統(tǒng)通信雙方采用標(biāo)準(zhǔn)的客戶端服務(wù)器消息同步機(jī)制,連接的建立以及周期性心跳包的起始由增氧泵控制箱(客戶端)完成;當(dāng)連接建立后客戶端和服務(wù)器均可發(fā)起消息對應(yīng)答.每個(gè)消息對由一個(gè)發(fā)送消息和一個(gè)與之對應(yīng)的答復(fù)消息構(gòu)成.根據(jù)消息對的發(fā)起方不同可以將消息對分為兩類:第一類消息對由控制箱(客戶端)發(fā)起,服務(wù)器負(fù)責(zé)應(yīng)答;第二類消息對由服務(wù)器發(fā)起,控制箱負(fù)責(zé)應(yīng)答.

圖1 系統(tǒng)流程

第一類消息對消息頭小于等于“499”,第二類消息對消息頭大于等于“500”.客戶端發(fā)送消息的消息頭為奇數(shù);服務(wù)器端發(fā)送消息的消息頭為偶數(shù).

2.3系統(tǒng)流程設(shè)計(jì)

由于該系統(tǒng)采用TCP長連接,服務(wù)端與客戶端均能發(fā)起消息對,因而在系統(tǒng)的設(shè)計(jì)中要求通過異步的方式進(jìn)行消息的接收,以達(dá)到事件觸發(fā)的效果.系統(tǒng)流程如圖1所示.

系統(tǒng)啟動(dòng)后,首先從配置文件中讀取配置信息并根據(jù)配置數(shù)據(jù)對系統(tǒng)初始化,然后進(jìn)行TCP鏈接(客戶端與服務(wù)器在此過程中實(shí)現(xiàn)邏輯有所差異見參考文獻(xiàn)[1]中對此的描述).

當(dāng)TCP連接建立后,系統(tǒng)開始偵聽系統(tǒng)觸發(fā)事件.系統(tǒng)觸發(fā)事件由系統(tǒng)業(yè)務(wù)層決定,如數(shù)據(jù)庫中的數(shù)據(jù)滿足觸發(fā)條件,系統(tǒng)狀態(tài)信息滿足觸發(fā)條件等.當(dāng)系統(tǒng)觸發(fā)事件發(fā)生后,系統(tǒng)向通信方發(fā)送消息并處理應(yīng)對消息,此后系統(tǒng)重新開始偵聽系統(tǒng)觸發(fā)事件;當(dāng)系統(tǒng)中沒有觸發(fā)事件時(shí),系統(tǒng)持續(xù)接收通信方消息直至接收到完整的消息并對之解析與應(yīng)答后,系統(tǒng)重新開始偵聽系統(tǒng)觸發(fā)事件.

3 結(jié)論

按照本文所提出的協(xié)議制定方法,常熟理工學(xué)院物聯(lián)網(wǎng)工程項(xiàng)目組與常熟市智勝信息技術(shù)有限公司聯(lián)合開發(fā)了智能增氧泵控制系統(tǒng).目前該產(chǎn)品已應(yīng)用于常熟市小山基地、張家港鴻屹水產(chǎn)養(yǎng)殖有限公司,已分別經(jīng)過2年和1年的運(yùn)行,目前系統(tǒng)運(yùn)行穩(wěn)定,達(dá)到了預(yù)期要求.

[1]王榕,許磊,樊宇濤.VxWorks下基于BSDsocket的網(wǎng)絡(luò)通信[J].電腦編程技巧與維護(hù),2006(08):77-80.

[2]魯士文.計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議和實(shí)現(xiàn)技術(shù)[M].北京:清華大學(xué)出版社,2000:21.

[3]許銳炮.Socket在C#程序中的應(yīng)用[J].科技視界,2014(21):64.

[4]李軍,倪宏,陳君,等.一種應(yīng)用層協(xié)議解析加速算法[J].四川大學(xué)學(xué)報(bào)(工程科學(xué)版),2014(04):14.

[5]李鵬飛,馬恒太,侯玉文,等.移動(dòng)代理完整性協(xié)議形式化分析方法研究[J].電子學(xué)報(bào),2009,37(8):1669-1674.

[6]艾祝.基于ISCSI的數(shù)據(jù)完整性研究與實(shí)現(xiàn)[D].蘭州:蘭州大學(xué),2014.

[7]楊超,張偉哲,張宏莉,等.基于檢查點(diǎn)算法的網(wǎng)絡(luò)計(jì)算機(jī)容錯(cuò)機(jī)制研究[J].微電子學(xué)與計(jì)算機(jī),2006,23(9):82-84.

Design and Implementation of Communication Protocol of Oxygen Pump Controllingsystem

XIAO Weia,SUN Yaxinb
(a.School of Computerscience and Engineering;b.School of Electric and Automatic Engineering,Changshu Institute of Technology,Changshu 215500,China)

It is effective to improve aquaculture technology and automation level of aquatic products by oxygen pump controllingsystem.Pond water oxygen lack willseriously affect the growth of aquatic products,and even cause death.At thesame time,over-aeration will cause unnecessary waste.Thus the oxygen pump automatic controlsystem undertakes communication tasks in thestate of emergency.Considering common problems on the application layer protocol design and implementation,the paper gives the communication protocol design of the oxygen pump automatic controlsystem,and on the basis of it,a method is presented for designing communication protocol applied on oxygen pump controllingsystem.Based on TCP/IP communication technology,this method can effectively achieve the communication between the oxygen pump control box andservers.

application protocol;network programming;synchronous communication;asynchronous communication

TP311

A

1008-2794(2015)04-0085-04

2016-04-10

肖微,助教,碩士,研究方向:物聯(lián)網(wǎng)應(yīng)用,E-mail:Xiaowei@cslg.cn.

猜你喜歡
控制箱應(yīng)用層通信協(xié)議
傘梯組合太陽能風(fēng)能互補(bǔ)發(fā)電系統(tǒng)
基于無功補(bǔ)償技術(shù)的新型智能農(nóng)業(yè)灌溉系統(tǒng)設(shè)計(jì)
基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
基于分級保護(hù)的OA系統(tǒng)應(yīng)用層訪問控制研究
多功能控制器(MPC)控制箱的國產(chǎn)化研發(fā)
基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
基于NS-3的PLC多頻通信協(xié)議仿真平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
新一代雙向互動(dòng)電力線通信技術(shù)的應(yīng)用層協(xié)議研究
船舶設(shè)備控制箱鉸鏈四桿機(jī)構(gòu)式啟閉裝置設(shè)計(jì)
物聯(lián)網(wǎng)技術(shù)在信息機(jī)房制冷系統(tǒng)中的應(yīng)用