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

?

一種基于串口通信的高可靠性應(yīng)用協(xié)議設(shè)計(jì)

2015-01-19 07:37王建敏崔俊鋒牛道恒
關(guān)鍵詞:高可靠性字節(jié)校驗(yàn)

王建敏 崔俊鋒 牛道恒

(北京全路通信信號(hào)研究設(shè)計(jì)院有限公司,北京 100073)

一種基于串口通信的高可靠性應(yīng)用協(xié)議設(shè)計(jì)

王建敏 崔俊鋒 牛道恒

(北京全路通信信號(hào)研究設(shè)計(jì)院有限公司,北京 100073)

為解決串口通信中的數(shù)據(jù)傳輸容易出錯(cuò)、可靠性差且容錯(cuò)能力低等問題,設(shè)計(jì)并實(shí)現(xiàn)一種串口通信高可靠性應(yīng)用協(xié)議,并將此協(xié)議應(yīng)用在列控產(chǎn)品中。首先介紹串口通信協(xié)議的數(shù)據(jù)包格式,通過在數(shù)據(jù)包格式定義中設(shè)置起始標(biāo)志、數(shù)據(jù)長(zhǎng)度、校驗(yàn)、結(jié)束標(biāo)志等字段,保證數(shù)據(jù)傳輸?shù)恼_性與可靠性。同時(shí)對(duì)數(shù)據(jù)包的組包、接收以及解析方法進(jìn)行闡述,提出對(duì)數(shù)據(jù)丟失的判斷與處理方法,并對(duì)該協(xié)議的實(shí)時(shí)性、正確性和可靠性進(jìn)行分析。實(shí)踐證明,該協(xié)議有效提高了串口通信過程的正確性、可靠性以及數(shù)據(jù)傳輸?shù)娜蒎e(cuò)能力。

串口通信;高可靠性;列控產(chǎn)品

串行通信接口(如RS-422、RS-232等)作為計(jì)算機(jī)與單片機(jī)的主要接口,廣泛應(yīng)用于各類儀器儀表、工業(yè)監(jiān)控及自動(dòng)控制領(lǐng)域中[1]。通信協(xié)議是需要通信的雙方所達(dá)成的一種約定,它規(guī)定了通信雙方必須遵守的數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢錯(cuò)方式及控制字符定義等內(nèi)容。在列控產(chǎn)品應(yīng)用中,需要設(shè)計(jì)嚴(yán)格、合理、規(guī)范的串口通信協(xié)議,以保證數(shù)據(jù)傳輸?shù)目煽啃约鞍踩?。提出一種基于串口的安全通信應(yīng)用協(xié)議,在提高通信可靠性及安全性的同時(shí),使通信過程具有較高的容錯(cuò)能力。

基于串口的高可靠性應(yīng)用協(xié)議設(shè)計(jì)關(guān)鍵點(diǎn)在于數(shù)據(jù)格式定義、對(duì)丟數(shù)的判斷與處理以及容錯(cuò)機(jī)制設(shè)計(jì)。本文基于文獻(xiàn)[2],對(duì)數(shù)據(jù)格式定義與容錯(cuò)機(jī)制設(shè)計(jì)進(jìn)行進(jìn)一步闡述,并提出了對(duì)丟數(shù)的判斷與處理方法,詳見第3章。

1 定義數(shù)據(jù)包格式

串口通信中最小的信息單元是數(shù)據(jù)幀。一個(gè)幀通常包括起始位、數(shù)據(jù)位、結(jié)束位,另外,還可以包含用于檢測(cè)傳輸錯(cuò)誤的“奇偶校驗(yàn)位”,每個(gè)數(shù)據(jù)幀中傳輸?shù)臄?shù)據(jù)位可以有5~9個(gè),通常選用8位(1 Byte)為一幀[2]。在實(shí)際通信過程中,數(shù)據(jù)的發(fā)送是一幀一幀地進(jìn)行,當(dāng)被傳輸?shù)臄?shù)據(jù)超過一幀時(shí),如果沒有對(duì)數(shù)據(jù)幀進(jìn)行必要的組包,發(fā)送出去的數(shù)據(jù)會(huì)很難被數(shù)據(jù)接收方解釋與分析,進(jìn)而造成數(shù)據(jù)傳輸混亂與錯(cuò)誤。因此,在通常應(yīng)用中必須將數(shù)據(jù)幀組合成數(shù)據(jù)包再發(fā)送。為了保證數(shù)據(jù)傳輸?shù)恼_性,將數(shù)據(jù)包定義為如表1所示格式。

表1 應(yīng)用協(xié)議數(shù)據(jù)包格式

*起始標(biāo)志表示接收到一個(gè)新的數(shù)據(jù)包,該協(xié)議規(guī)定為0x7E。

*數(shù)據(jù)長(zhǎng)度為整個(gè)數(shù)據(jù)包的字節(jié)數(shù)。設(shè)置此字段,可方便接收方識(shí)別數(shù)據(jù)包的長(zhǎng)度并能夠準(zhǔn)確接收和處理數(shù)據(jù)包。

*命令用來說明數(shù)據(jù)包的用途或功能。*附加數(shù)據(jù)根據(jù)命令的不同,含義不同。*校驗(yàn)是對(duì)命令字段與附加數(shù)據(jù)字段的所有字節(jié)進(jìn)行校驗(yàn)。

*結(jié)束標(biāo)志表示數(shù)據(jù)包結(jié)束,本協(xié)議規(guī)定為0x7F。

2 組合數(shù)據(jù)包

實(shí)際應(yīng)用中,如果有某數(shù)據(jù)包需要被發(fā)送,則可以按照表1格式進(jìn)行組合。通常命令字段取值應(yīng)避免使用0x7E與0x7F,數(shù)據(jù)長(zhǎng)度一般約為幾十Byte,因此選用0x7D作為轉(zhuǎn)義符。當(dāng)附加數(shù)據(jù)字段中遇到有效數(shù)據(jù)為0x7D、0x7E、0x7F時(shí),要對(duì)這幾個(gè)字節(jié)做轉(zhuǎn)義處理。具體做法是:把該字節(jié)擴(kuò)展為2 Byte,以轉(zhuǎn)義符125(0x7D)起始,下一個(gè)字節(jié)是該字節(jié)和0x20的異或值。

例如數(shù)據(jù)發(fā)送方有如下原始數(shù)據(jù)需要發(fā)送:

*命令字段取值為0x01。

*附加數(shù)據(jù)字段為3 Byte,依次為0x7D,0x7E,0x02。

*假設(shè)校驗(yàn)后得到的校驗(yàn)字段取值依次為0x7F,0x03。

則組包后的原始數(shù)據(jù)包格式如表2所示(均以16進(jìn)制數(shù)表示)。

太和醫(yī)院始建于1965年,如今已然成長(zhǎng)為四?。ㄊ校┙唤绲鼐C合實(shí)力最強(qiáng)的一家三級(jí)甲等醫(yī)院,醫(yī)院服務(wù)能力輻射周邊40多個(gè)縣市區(qū)。

表2 原始數(shù)據(jù)包格式

因?yàn)樵紨?shù)據(jù)中,附加數(shù)據(jù)字段存在需要轉(zhuǎn)義的0x7D與0x7E,校驗(yàn)字段存在需要轉(zhuǎn)義的0x7F,因此需對(duì)這些字節(jié)進(jìn)行轉(zhuǎn)義。0x7D轉(zhuǎn)義后變?yōu)?x7D 0x5D;0x7E轉(zhuǎn)義后變?yōu)?x7D 0x5E; 0x7F轉(zhuǎn)義后變?yōu)?x7D 0x5F。由于轉(zhuǎn)義后整個(gè)數(shù)據(jù)包增加了3 Byte的轉(zhuǎn)義符(0x7D),因此數(shù)據(jù)長(zhǎng)度需要由9變?yōu)?2。轉(zhuǎn)義后的數(shù)據(jù)包格式如表3所示(均以16進(jìn)制數(shù)表示),數(shù)據(jù)發(fā)送方應(yīng)以如下格式將該數(shù)據(jù)包通過串口發(fā)送給數(shù)據(jù)接收方。

表3 轉(zhuǎn)義后數(shù)據(jù)包格式

根據(jù)上述分析,數(shù)據(jù)包發(fā)送流程如圖1所示。

圖1 數(shù)據(jù)包發(fā)送流程圖

3 接收數(shù)據(jù)包

3.1 完整數(shù)據(jù)的數(shù)據(jù)包接收

如果在數(shù)據(jù)傳輸過程中,未發(fā)生丟數(shù)現(xiàn)象,則接收方可以完整地接收到發(fā)送方所發(fā)送的數(shù)據(jù),該種情況的處理較為簡(jiǎn)單,可以直接進(jìn)行數(shù)據(jù)包的解析,詳見下述第4章節(jié)。

3.2 存在丟數(shù)的數(shù)據(jù)包接收

串口通信中偶爾會(huì)發(fā)生丟數(shù)現(xiàn)象,根據(jù)丟失的字段不同,對(duì)應(yīng)處理方法也不同,分為以下幾種情況。

*起始標(biāo)志丟失的判斷與處理

結(jié)束標(biāo)志先于起始標(biāo)志被數(shù)據(jù)接收方接收到,則說明起始標(biāo)志丟失。該種情況因無法判斷數(shù)據(jù)包的起始標(biāo)志,數(shù)據(jù)接收方應(yīng)將在收到起始標(biāo)志前收到所有數(shù)據(jù)全部丟棄。

當(dāng)連續(xù)收到兩個(gè)起始標(biāo)志時(shí),說明與第一個(gè)起始標(biāo)志對(duì)應(yīng)的結(jié)束標(biāo)志丟失。該種情況因無法判斷與第一個(gè)起始標(biāo)志對(duì)應(yīng)的結(jié)束標(biāo)志,數(shù)據(jù)接收方應(yīng)將接收到第二個(gè)起始標(biāo)志前的所有數(shù)據(jù)均丟棄,并等待接收與第二個(gè)開始標(biāo)志相對(duì)應(yīng)的結(jié)束標(biāo)志。

*其他數(shù)據(jù)丟失的判斷與處理

除起始標(biāo)志與結(jié)束標(biāo)志外,如果其他數(shù)據(jù)發(fā)生丟失,則會(huì)導(dǎo)致接收方所收到的校驗(yàn)值,與發(fā)送方所發(fā)送的檢驗(yàn)值不同。該種情況可根據(jù)具體應(yīng)用,采取不同處理方式,如容忍一定次數(shù)后使系統(tǒng)重啟,或直接使系統(tǒng)重啟。

根據(jù)上述分析,數(shù)據(jù)包接收流程如圖2所示。

4 解析數(shù)據(jù)包

當(dāng)數(shù)據(jù)接收方接收到起始標(biāo)志與結(jié)束標(biāo)志后,則認(rèn)為起始標(biāo)志與結(jié)束標(biāo)志間的數(shù)據(jù)為一包有效數(shù)據(jù),需對(duì)該包數(shù)據(jù)進(jìn)行解析。如果整個(gè)數(shù)據(jù)包中不存在轉(zhuǎn)義字符,則說明該數(shù)據(jù)包未進(jìn)行轉(zhuǎn)義,直接按照數(shù)據(jù)包定義格式解析即可;如果數(shù)據(jù)包中存在轉(zhuǎn)義字符,則需對(duì)轉(zhuǎn)義字符后的數(shù)據(jù)進(jìn)行轉(zhuǎn)義,使其轉(zhuǎn)義為原始值。待需要轉(zhuǎn)義數(shù)據(jù)全部完成轉(zhuǎn)義,并更新數(shù)據(jù)包長(zhǎng)度后,再按照數(shù)據(jù)包定義的格式進(jìn)行解析。

下面以第2章中表3數(shù)據(jù)為例進(jìn)一步說明。表3中附加數(shù)據(jù)字段中存在需要轉(zhuǎn)義的0x5D與0x5E字節(jié),同樣以異或0x20的方式進(jìn)行轉(zhuǎn)義后,其值為0x7D與0x7E;校驗(yàn)字段中存在需轉(zhuǎn)義的0x5F字節(jié),轉(zhuǎn)義后其值為0x7F。完成轉(zhuǎn)義的同時(shí),需去掉轉(zhuǎn)義符0x7D,并更新數(shù)據(jù)長(zhǎng)度。根據(jù)上述過程,對(duì)所有需要轉(zhuǎn)義字節(jié)進(jìn)行轉(zhuǎn)義操作后,便可得到數(shù)據(jù)發(fā)送方所發(fā)送的原始數(shù)據(jù),如第2章中表2所示。

根據(jù)上述分析,數(shù)據(jù)包解析流程如圖3所示。

5 容錯(cuò)機(jī)制

串口通信過程中,偶爾會(huì)發(fā)生丟數(shù)現(xiàn)象,根據(jù)第3.2節(jié)分析,無論哪種情況發(fā)生,都會(huì)導(dǎo)致數(shù)據(jù)接收方無法正確獲取與解析到數(shù)據(jù)發(fā)送方所發(fā)送數(shù)據(jù),進(jìn)而會(huì)導(dǎo)致通信異常,影響協(xié)議可用性。為避免該種情況發(fā)生,提高協(xié)議可用性,協(xié)議制定需考慮重發(fā)機(jī)制,并設(shè)置定時(shí)器。對(duì)關(guān)鍵數(shù)據(jù)包,數(shù)據(jù)發(fā)送方發(fā)送數(shù)據(jù)包后,需在規(guī)定時(shí)間內(nèi)收到針對(duì)該數(shù)據(jù)包的對(duì)方確認(rèn)信息。如果超過規(guī)定時(shí)間還未收到對(duì)方確認(rèn)信息,則數(shù)據(jù)發(fā)送方需重發(fā)該包。根據(jù)具體應(yīng)用,可以設(shè)置重發(fā)次數(shù),如重發(fā)一定次數(shù)后,認(rèn)為系統(tǒng)故障,使系統(tǒng)重啟。容錯(cuò)機(jī)制實(shí)現(xiàn)流程如圖4所示。

圖4 容錯(cuò)機(jī)制流程圖

6 協(xié)議分析

6.1 實(shí)時(shí)性

串口通信的實(shí)時(shí)性與通信雙方的波特率設(shè)置有關(guān)。一般應(yīng)用中波特率設(shè)為9 600 bit/s,即大約每ms傳輸一個(gè)Byte即可。按照一包數(shù)據(jù)幾十個(gè)Byte計(jì)算,則傳輸一包數(shù)據(jù)約需幾十ms,具有良好的實(shí)時(shí)性,可以滿足通常應(yīng)用需求。

6.2 正確性

該協(xié)議的數(shù)據(jù)包格式定義了起始標(biāo)志、結(jié)束標(biāo)志、數(shù)據(jù)長(zhǎng)度字段、命令字段、校驗(yàn)字段以及轉(zhuǎn)義符,同時(shí)還設(shè)計(jì)了容錯(cuò)機(jī)制。通過該協(xié)議數(shù)據(jù)包格式定義與第3章節(jié)的分析可知,該協(xié)議可保證通信數(shù)據(jù)的正確性。

6.3 可靠性

通過該協(xié)議,通信雙方可以及時(shí)對(duì)數(shù)據(jù)丟失、數(shù)據(jù)錯(cuò)誤等情況進(jìn)行處理。對(duì)起始標(biāo)志與結(jié)束標(biāo)志丟失或錯(cuò)誤的情況,可以通過容錯(cuò)機(jī)制進(jìn)行處理;對(duì)于其他字節(jié)丟失或錯(cuò)誤的情況,可以通過校驗(yàn)計(jì)算檢測(cè)到并進(jìn)行相應(yīng)處理。通過該協(xié)議數(shù)據(jù)包格式定義與第3章節(jié)的分析可知,該協(xié)議具有高可靠性,可以滿足通常應(yīng)用需求。

7 結(jié)束語(yǔ)

在列控產(chǎn)品中,串口是各設(shè)備間較為常見的連接方式之一。本文介紹了一種基于串口的高可靠性應(yīng)用協(xié)議設(shè)計(jì)方法。該設(shè)計(jì)方法已經(jīng)應(yīng)用到某列控產(chǎn)品中,經(jīng)過實(shí)踐和分析證明,該協(xié)議是一種有效的、可靠的數(shù)據(jù)傳輸方法,可以滿足列控產(chǎn)品的高可靠性要求。同時(shí),對(duì)其他領(lǐng)域需要串口通信的設(shè)備/產(chǎn)品的應(yīng)用協(xié)議制定具有重要的借鑒意義。

[1]李瑩,賈彬.串口通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(7):100-103.

[2]運(yùn)基信號(hào)[2006]312號(hào) 調(diào)度集中車站自律機(jī)與計(jì)算機(jī)聯(lián)鎖接口通信協(xié)議[S].

In order to solve the problems of the data transmission easily going wrong, poor reliability and fault-tolerance in serial communication, this paper presents the design of a high-reliable serial communication application protocol used for train control products. The paper presents the design of the serial communication protocol data packet format for ensuring the correctness and reliability of the data transmission through setting the start fl ag, data length, calibration and end fag in the format defi nition. At the same time, it sets forth the data packet package, receiving and analyzing methods, puts forward the judgment and processing methods of data loss, and analyzes the real-time feature, accuracy and reliability of the protocol. The practice shows that this protocol can effectively improve the correctness, reliability and the fault tolerance ability of the data transmission in serial communication process.

serial communication; high reliability; train control product

10.3969/j.issn.1673-4440.2015.01.001

2014-10-23)

鐵路總公司重點(diǎn)項(xiàng)目(2013X001-C);鐵路總公司重大課題(2003B001-A-1)

猜你喜歡
高可靠性字節(jié)校驗(yàn)
使用Excel朗讀功能校驗(yàn)工作表中的數(shù)據(jù)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
高可靠性火災(zāi)探測(cè)系統(tǒng)設(shè)計(jì)
基于VRRP和MSTP協(xié)議實(shí)現(xiàn)校園網(wǎng)高可靠性
基于MSP430的四旋翼飛行器的S-BUS通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)
爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
電子式互感器校驗(yàn)方式研究
ABB 800XA DCS系統(tǒng)在加氫裂化裝置的應(yīng)用
具有高可靠性的混合集成國(guó)產(chǎn)化電源電路研制