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

?

一種高可靠串行通信協(xié)議

2016-03-23 12:21:39桂江華
電子與封裝 2016年2期
關(guān)鍵詞:通信協(xié)議

桂江華,邵 健,潘 邈

(中國電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)

?

一種高可靠串行通信協(xié)議

桂江華,邵 健,潘 邈

(中國電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)

摘 要:隨著工作環(huán)境的日益復(fù)雜,現(xiàn)代通信對(duì)于可靠性的要求越來越高。現(xiàn)在存在的一些串行通信協(xié)議比如RS-232和RS-485等內(nèi)容簡(jiǎn)單,方便實(shí)現(xiàn),但是在傳輸規(guī)范方面沒有做很詳細(xì)的規(guī)定,因此傳輸?shù)目煽啃圆荒艿玫胶芎玫谋WC。為了提高串行通信的可靠性,在RS-232協(xié)議的基礎(chǔ)上提出了一種全新的串行通信協(xié)議,定義了完備的幀格式,引入CRC校驗(yàn)、超時(shí)重發(fā)等一系列查錯(cuò)容錯(cuò)機(jī)制,通過仿真驗(yàn)證,證明了該通信協(xié)議的可靠性。

關(guān)鍵詞:循環(huán)校驗(yàn)碼;串行通信;幀格式;通信協(xié)議

1 引言

串行通信作為自動(dòng)化系統(tǒng)中智能設(shè)備之間數(shù)據(jù)交換的主要方式,在工業(yè)和自動(dòng)化控制領(lǐng)域有極其廣泛的應(yīng)用。為了方便工程中的實(shí)現(xiàn),現(xiàn)在存在的一些串行通信協(xié)議比如RS-232和RS-485等內(nèi)容簡(jiǎn)單,方便實(shí)現(xiàn),但是在可靠性和傳輸規(guī)范方面沒有做很詳細(xì)的規(guī)定,因此設(shè)計(jì)中的缺陷可能引起傳輸錯(cuò)誤,這樣將給需要高可靠性傳輸?shù)南到y(tǒng)帶來不必要的麻煩。

本文在RS-232等簡(jiǎn)單的串行通信協(xié)議基礎(chǔ)上,提出了一種全新的高可靠性串行通信協(xié)議,利用CRC校驗(yàn)進(jìn)行檢錯(cuò),并擁有完備的超時(shí)重傳機(jī)制。使得應(yīng)用這個(gè)通信協(xié)議的串行通信在實(shí)際工程中的傳輸準(zhǔn)確率大大提高,增強(qiáng)了系統(tǒng)的可靠性。

2 RS-232串口通信協(xié)議

RS-232全名是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”,標(biāo)準(zhǔn)的RS-232-C協(xié)議具有25根信號(hào)線,其中有4根數(shù)據(jù)線、11根控制線、3根定時(shí)線和7根備用線。通常情況下,使用其中的9根線就可以實(shí)現(xiàn)RS-232串口通信。

RS-232-C的串行總線在空閑的時(shí)候保持為邏輯“1”狀態(tài),即串行連接線上的電平為-3~15 V。當(dāng)需要傳送一個(gè)字符時(shí),首先會(huì)發(fā)送一個(gè)邏輯為“0”的起始位,表示開始發(fā)送數(shù)據(jù);之后就逐個(gè)發(fā)送數(shù)據(jù)位、奇偶校驗(yàn)位和停止位(邏輯“1”),每一次傳輸1個(gè)字符(可以設(shè)為5~8 bit)。由于任意兩個(gè)字符對(duì)應(yīng)瞬間的時(shí)間間隔是可變的,因此也被稱為異步格式。典型的傳輸時(shí)序如圖1所示。

圖1 RS-232協(xié)議的傳輸時(shí)序

在RS-232協(xié)議中,可以設(shè)置數(shù)據(jù)的傳輸速率。除此之外,字符的位寬、奇偶校驗(yàn)位、停止位都可以被設(shè)置。字符可以被設(shè)置成5~8 bit,奇偶校驗(yàn)位可以被除去;停止位可以設(shè)置成1位、2位甚至1.5位。每秒傳輸?shù)谋忍財(cái)?shù)也被稱為二進(jìn)制波特率,即位周期的倒數(shù),簡(jiǎn)稱為比特率,用于衡量RS-232的傳輸速率。RS-232-C有一系列波特率標(biāo)準(zhǔn):110 b/s、300 b/s、600 b/s、1200 b/s、1800 b/s、2400 b/s、4800 b/s、9600 b/s、14.4 kb/s、19.2 kb/s、28.8 kb/s、33.6 kb/s和56 kb/s等。

3 CRC校驗(yàn)碼

循環(huán)校驗(yàn)碼(CRC)的檢驗(yàn)原理實(shí)際上就是在一個(gè)p位二進(jìn)制數(shù)據(jù)序列之后附加一個(gè)r位二進(jìn)制檢驗(yàn)碼,從而構(gòu)成一個(gè)總長為n=p+r位的二進(jìn)制序列,附加在數(shù)據(jù)之后的校驗(yàn)碼與數(shù)據(jù)內(nèi)容之間存在著某種特定的關(guān)系。

假設(shè)p位的二進(jìn)制數(shù)據(jù)序列如式(1)所示:數(shù)據(jù)序列D是原始序列,為了r位生成校驗(yàn)碼,需要引入生成多項(xiàng)式的概念,生成多項(xiàng)式也就是發(fā)送方和接受方在通信之前約定的一個(gè)除數(shù),一般記為G(x),它對(duì)應(yīng)一個(gè)r+1位的二進(jìn)制序列,最高位和最低位必須為1,常用的生成多項(xiàng)式有CRC8、CRC12、CRC16和CRC32等。

將原始數(shù)據(jù)D左移r位并在較低的r位補(bǔ)0形成n位序列Dr(x),CRC校驗(yàn)碼的生成過程如式(2)所示:

其中,Re[]表示對(duì)括號(hào)內(nèi)的除法進(jìn)行取余運(yùn)算。R(x)就是根據(jù)數(shù)據(jù)D計(jì)算出來的CRC校驗(yàn)碼,與數(shù)據(jù)序列D組合在一起可以得到帶有校驗(yàn)碼的序列M,M的形式如式(3)所示:

CRC校驗(yàn)碼的編碼過程如上所述,而校驗(yàn)過程則是對(duì)序列M進(jìn)行除法取余運(yùn)算,即:

如果計(jì)算得到R(x)為0則表示接收到的數(shù)據(jù)正確無誤。

在數(shù)據(jù)序列之后加上CRC校驗(yàn)碼使得傳輸?shù)目煽啃源蟠笤鰪?qiáng),任何數(shù)據(jù)位的改變都將使得最后接收到的校驗(yàn)碼發(fā)生改變,從而知道收到的數(shù)據(jù)發(fā)生了錯(cuò)誤,然后根據(jù)不同情況進(jìn)行后續(xù)處理。

4 串行通信協(xié)議設(shè)計(jì)

根據(jù)開放系統(tǒng)互聯(lián)(OSI)參考模型的思想,可以將串行通信的協(xié)議簡(jiǎn)化為應(yīng)用層、數(shù)據(jù)鏈路層和物理層3層,本文主要介紹數(shù)據(jù)鏈路層,它是串行通信協(xié)議中的核心,主要完成幀格式的確定,傳輸中差錯(cuò)的處理以及通信超時(shí)控制等。

4.1幀格式

一幀數(shù)據(jù)包括幾個(gè)組成部分,由幀頭、數(shù)據(jù)類型、數(shù)據(jù)長度、數(shù)據(jù)、CRC校驗(yàn)和幀尾幾個(gè)部分組成,如圖2所示。

圖2 幀格式示意圖

(1)幀頭

幀頭表示這個(gè)幀是串行通信的數(shù)據(jù),并以此作為是否通過串口接收此幀的標(biāo)志位,幀頭占一個(gè)字節(jié)。

(2)數(shù)據(jù)類型

通信中需要傳輸不同的幀類型,有控制命令幀、應(yīng)答幀、數(shù)據(jù)幀等,此幀傳輸?shù)氖鞘裁磧?nèi)容由數(shù)據(jù)類型給出,它在幀中占一個(gè)字節(jié)。

(3)數(shù)據(jù)長度

數(shù)據(jù)長度用來描述數(shù)據(jù)包含的字節(jié)數(shù),在發(fā)送方和接收方傳輸信息的時(shí)候這個(gè)標(biāo)志可以對(duì)發(fā)送或者接收到的數(shù)據(jù)個(gè)數(shù)進(jìn)行校對(duì),以保證數(shù)據(jù)的準(zhǔn)確傳輸。數(shù)據(jù)長度占一個(gè)字節(jié)。

(4)數(shù)據(jù)

傳輸?shù)臄?shù)據(jù)內(nèi)容,長度為1~6個(gè)字節(jié)。

(5)CRC校驗(yàn)碼

這里采用的是CRC16校驗(yàn)碼,占一幀中的兩個(gè)字節(jié),可以對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行高質(zhì)量的檢錯(cuò),保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確率。

(6)幀尾

幀尾占一個(gè)字節(jié),表示一幀的結(jié)束標(biāo)志。

4.2檢錯(cuò)容錯(cuò)機(jī)制

由于外界復(fù)雜電磁環(huán)境以及噪聲干擾信號(hào)的存在,串行通信的可靠性受到極大威脅。為了向應(yīng)用層提供可靠的通信服務(wù),數(shù)據(jù)鏈路層必須能夠檢查出傳輸過程中數(shù)據(jù)幀存在的錯(cuò)誤,并在監(jiān)測(cè)出錯(cuò)誤之后進(jìn)行相應(yīng)的處理。

如果幀頭、數(shù)據(jù)類型、數(shù)據(jù)長度和幀尾這些數(shù)據(jù)幀格式發(fā)生錯(cuò)誤,接收方將不給出應(yīng)答幀,直接放棄此幀等待下一幀;如果CRC檢測(cè)錯(cuò)誤,說明數(shù)據(jù)段發(fā)生了傳輸錯(cuò)誤,接收方發(fā)出錯(cuò)誤應(yīng)答,發(fā)送方接收到錯(cuò)誤應(yīng)答之后將立即重新發(fā)送一幀數(shù)據(jù)幀;如果接收到的數(shù)據(jù)不合法,等待1 ms的時(shí)間,不對(duì)該幀做任何處理,直接丟棄此幀。

圖3 發(fā)送方通信流程

圖4 接收方通信流程

對(duì)于發(fā)送方來說,發(fā)送一個(gè)數(shù)據(jù)幀之后將等待接收方給出的應(yīng)答,如果是錯(cuò)誤應(yīng)答,發(fā)送方立即重發(fā)此幀數(shù)據(jù);如果是正確應(yīng)答,發(fā)送方不再發(fā)送數(shù)據(jù),此幀通信結(jié)束;如果發(fā)送方在限定時(shí)間內(nèi)沒有收到任何回應(yīng),發(fā)送方也將重發(fā)此幀,最多重發(fā)三次。

圖3和圖4分別是發(fā)送方和接收方的通信流程,從流程中可以看出本文協(xié)議的檢錯(cuò)容錯(cuò)機(jī)制。

5 通信協(xié)議的仿真驗(yàn)證

協(xié)議的仿真驗(yàn)證分為發(fā)送端和接收端兩個(gè)部分,對(duì)發(fā)送方和接收方的不同行為分別進(jìn)行了驗(yàn)證。

5.1發(fā)送端仿真驗(yàn)證

發(fā)送端發(fā)送正確數(shù)據(jù)幀之后收到正確的應(yīng)答幀,如圖5所示。發(fā)送的數(shù)據(jù)幀為7e500534fb9af5,接收到的正確應(yīng)答幀為7e0b040350f5,應(yīng)答幀的形式有別于數(shù)據(jù)幀,在數(shù)據(jù)幀中,7e為幀頭,50是數(shù)據(jù)類型,05表示后面的數(shù)據(jù)占一個(gè)字節(jié),34是要傳輸?shù)臄?shù)據(jù),fb9a是CRC校驗(yàn)碼,f5是幀尾,這是在第四節(jié)中提出的標(biāo)準(zhǔn)數(shù)據(jù)幀格式,下面仿真中的數(shù)據(jù)幀也符合這樣的幀格式,不再一一贅述。

圖5 發(fā)送方接收到正確應(yīng)答

發(fā)送端發(fā)送一幀數(shù)據(jù)之后在一定時(shí)間之內(nèi)沒有收到接收方的應(yīng)答信號(hào),發(fā)送端繼續(xù)發(fā)送此幀,重發(fā)次數(shù)最多不超過3次,如圖6所示。

發(fā)送端發(fā)送一幀數(shù)據(jù)之后收到接收端發(fā)來的錯(cuò)誤應(yīng)答,這里錯(cuò)誤應(yīng)答幀的形式為7e0b040050f5。發(fā)送方立即重發(fā)一幀相同的數(shù)據(jù),如圖7所示,之后在一定時(shí)間內(nèi)沒有收到接收端發(fā)來的應(yīng)答信號(hào),所以發(fā)送方又繼續(xù)發(fā)送了兩次相同的數(shù)據(jù)幀。

圖6 發(fā)送方?jīng)]有收到應(yīng)答信息

圖7 發(fā)送方收到錯(cuò)誤應(yīng)答

5.2接收端仿真驗(yàn)證

接收端接收到正確的數(shù)據(jù)幀之后給出正確應(yīng)答返回給發(fā)送方,如圖8所示,這里接收端接收了3個(gè)不同的數(shù)據(jù)幀,每次接收正確的數(shù)據(jù)幀之后都會(huì)返回1個(gè)正確應(yīng)答幀。

接收方接收到的數(shù)據(jù)幀幀格式發(fā)生錯(cuò)誤,將不返回任何應(yīng)答,如圖9所示,接收的第一個(gè)數(shù)據(jù)幀數(shù)據(jù)最大長度發(fā)生錯(cuò)誤,最大長度為a,而此時(shí)數(shù)據(jù)長度為b,不符合要求;第二個(gè)數(shù)據(jù)幀頭不符合要求;第三個(gè)數(shù)據(jù)幀數(shù)據(jù)長度為6,數(shù)據(jù)本應(yīng)該為2個(gè)字節(jié),但是在這里只有1個(gè)字節(jié)的數(shù)據(jù),不符合要求;第四個(gè)數(shù)據(jù)幀幀尾不符合要求;最后一個(gè)數(shù)據(jù)幀為非法數(shù)據(jù)幀,如4.2節(jié)所述接受方在1 ms之內(nèi)沒有對(duì)其做任何處理,直接丟棄此幀等待下一幀的到來。

接收方接收到的數(shù)據(jù)幀檢測(cè)到CRC錯(cuò)誤,立即返回錯(cuò)誤應(yīng)答幀給發(fā)送方,發(fā)送方收到錯(cuò)誤應(yīng)答之后重新發(fā)送數(shù)據(jù)幀,接收方接收到正確數(shù)據(jù)幀,返回正確應(yīng)答幀,通信結(jié)束,整個(gè)過程如圖10所示。

圖8 接收方接收到正確數(shù)據(jù)幀

圖9 接收到的數(shù)據(jù)幀格式發(fā)生錯(cuò)誤

圖10 接收到的數(shù)據(jù)幀CRC檢測(cè)錯(cuò)誤

6 結(jié)論

本文提出了一種全新的串行通信協(xié)議,通過仿真驗(yàn)證證明了這一協(xié)議的高可靠性,此協(xié)議已經(jīng)在一款專用串口通信芯片中得到應(yīng)用,并且在各種工作環(huán)境下都取得了良好的通信效果。

參考文獻(xiàn):

[1] 張海林,楊勇. 自動(dòng)化系統(tǒng)中的串行通信協(xié)議的設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2003,31:159-160,218.

[2] 劉進(jìn)海,劉志博,馬力. 基于RS-232異步串行通信接口通用通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),1998,07: 9-11.

[3] 王忠,李延社,游智勝. CRC算法設(shè)計(jì)與程序?qū)崿F(xiàn)[J]. 電子測(cè)量技術(shù),2007,12: 26-28,36.

[4] 張平安. 16位循環(huán)冗余校驗(yàn)碼(CRC)的原理和性能分析[J]. 山西科技,2005,05: 123-125.

桂江華(1981—),男,安徽安慶人,工程師,主要研究方向?yàn)榇笠?guī)模數(shù)字集成電路設(shè)計(jì)。

A Kind of Highly Reliable Serial Communication Protocol

GUI Jianghua, SHAO Jian, PAN Miao
(China Electronic Technology Group Corporation No.58 Research Institute, Wuxi 214035, China)

Abstract:With the increasing complexity of the working environment, the reliability of modern communication needs higher and higher requirements.Some serial communication protocol such as RS-232 and RS-485 which have simple content are easy to realize,but transmission reliability can not get a good guarantee due to the simple transmission specification. In order to improve the reliability of serial communication, a new protocol with complete frame format, CRC, retransmission and a series of error tolerant mechanism,which is based on RS-232 protocol is proposed in this paper. The reliability of the protocol is verified by the simulation in this paper.

Keywords:CRC; serial communication; frame format; communication protocol

作者簡(jiǎn)介:

收稿日期:2015-12-4

中圖分類號(hào):TN918

文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1681-1070(2016)02-0040-04

猜你喜歡
通信協(xié)議
改進(jìn)貝葉斯統(tǒng)計(jì)的配電物聯(lián)網(wǎng)通信協(xié)議評(píng)價(jià)
DCS本地總線通信協(xié)議與FFH1設(shè)備互操作技術(shù)研究與實(shí)現(xiàn)
基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實(shí)現(xiàn)
電子計(jì)算機(jī)聯(lián)鎖系統(tǒng)通信協(xié)議設(shè)計(jì)和應(yīng)用
基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
基于NS-3的PLC多頻通信協(xié)議仿真平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
基于面向?qū)ο蠡ゲ僮骷夹g(shù)的用電信息采集系統(tǒng)通信協(xié)議設(shè)計(jì)
關(guān)于電力物聯(lián)網(wǎng)信息模型及通信協(xié)議的設(shè)計(jì)要點(diǎn)分析
鐵路信號(hào)安全通信協(xié)議中消息驗(yàn)證碼算法的安全性分析和改進(jìn)
赤水市| 卢氏县| 峨山| 温泉县| 定日县| 溧阳市| 山阳县| 土默特左旗| 兴国县| 琼海市| 井冈山市| 读书| 新绛县| 吕梁市| 温州市| 武夷山市| 兴业县| 惠州市| 大新县| 巫山县| 桐乡市| 沿河| 南澳县| 阳城县| 田阳县| 临泉县| 安国市| 武定县| 上饶县| 宁蒗| 遂川县| 水城县| 城市| 泰兴市| 双流县| 玉树县| 木兰县| 仪征市| 平定县| 镇原县| 威远县|