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

?

基于增強(qiáng)型海明碼的CAN總線實(shí)時(shí)性研究

2021-08-16 09:33李文祥周小軍管恒睿何加橋
儀表技術(shù)與傳感器 2021年7期
關(guān)鍵詞:校驗(yàn)碼增強(qiáng)型誤碼

李文祥,周小軍,,亢 超,管恒睿,何加橋

(1.中國科學(xué)技術(shù)大學(xué)南京天文儀器研制中心,安徽合肥 230026;2.中科院南京天文儀器有限公司,江蘇南京 210042)

0 引言

控制器局域網(wǎng)絡(luò)(CAN)因其較強(qiáng)的抗干擾能力、穩(wěn)定性和靈活性被廣泛應(yīng)用在工業(yè)自動(dòng)化、船舶等領(lǐng)域[1-4]。CAN總線協(xié)議使用循環(huán)冗余校驗(yàn)碼(CRC)作為每幀內(nèi)容的錯(cuò)誤檢測(cè)方法,該方法在數(shù)據(jù)幀中占據(jù)固定位數(shù),無法根據(jù)數(shù)據(jù)段所占位數(shù)動(dòng)態(tài)調(diào)整,限制了CAN總線的數(shù)據(jù)傳輸幀率的提高,致使CAN總線協(xié)議無法適用于一些對(duì)于實(shí)時(shí)性要求較高的領(lǐng)域。因此,進(jìn)一步提高CAN總線的數(shù)據(jù)傳輸幀率具有十分重要的研究意義。

近年來,國內(nèi)外有大批學(xué)者對(duì)CAN總線協(xié)議進(jìn)行了相關(guān)研究。劉承智[5]等通過減少標(biāo)準(zhǔn)符,增加數(shù)據(jù)位等措施,提高了CAN總線的幀利用率,但卻占用了原有的仲裁場(chǎng)作為數(shù)據(jù)位,導(dǎo)致系統(tǒng)可用的ID較??;王瑞峰[6]等利用動(dòng)態(tài)優(yōu)先級(jí)算法重新設(shè)計(jì)數(shù)據(jù)幀格式,降低了節(jié)點(diǎn)的最大時(shí)延,提高了CAN總線的實(shí)時(shí)性,但該方式應(yīng)用不便且在靈活性上有所缺失;Juan[7]等提出一種模擬的CRC編碼器與解碼器作為CAN總線的錯(cuò)誤檢測(cè)方法,該方法可以根據(jù)字節(jié)數(shù)動(dòng)態(tài)調(diào)整CRC的位數(shù),但卻增加了數(shù)據(jù)幀位數(shù),降低了數(shù)據(jù)傳輸幀率。

鑒于此,本文提出一種增強(qiáng)型海明碼來替代CAN總線協(xié)議中的循環(huán)冗余校驗(yàn)碼(CRC)。增強(qiáng)型海明碼既保留了傳統(tǒng)海明碼自動(dòng)糾錯(cuò)的優(yōu)點(diǎn),又新增狀態(tài)碼對(duì)信息碼和校驗(yàn)碼進(jìn)行分類校驗(yàn),提高了CAN總線的數(shù)據(jù)傳輸幀率。同時(shí),相較于CRC,增強(qiáng)型海明碼占據(jù)位數(shù)更少,并且能夠根據(jù)字節(jié)數(shù)動(dòng)態(tài)調(diào)整位數(shù),提高了CAN總線在多字節(jié)情況下的誤碼檢測(cè)能力。最后,本文基于CAN2.0A協(xié)議對(duì)CRC、傳統(tǒng)海明碼、增強(qiáng)型海明碼進(jìn)行數(shù)據(jù)通信實(shí)驗(yàn),驗(yàn)證了使用增強(qiáng)型海明碼的CAN總線協(xié)議的傳輸幀率和誤碼檢測(cè)能力。

1 CAN總線實(shí)時(shí)性分析

CAN總線協(xié)議的數(shù)據(jù)幀有2種格式:標(biāo)準(zhǔn)幀和擴(kuò)展幀,這2種格式除了仲裁段的長度不相同其他都相同[8-9]。本文以標(biāo)準(zhǔn)幀為例,對(duì)CAN總線實(shí)時(shí)性進(jìn)行分析。標(biāo)準(zhǔn)數(shù)據(jù)幀由7個(gè)不同的段組成:幀起始(SOF)、仲裁段、控制段、數(shù)據(jù)段、CRC段、ACK段和幀結(jié)尾(EOF),各段詳細(xì)分布及所占位數(shù)如表1所示。

表1 CAN2.0A標(biāo)準(zhǔn)數(shù)據(jù)幀位數(shù)分配 bit

從表1可以看出,CAN總線協(xié)議使用CRC校驗(yàn)作為每幀內(nèi)容的錯(cuò)誤檢測(cè)方法[10-11]。CRC校驗(yàn)是一種基于誤碼重傳機(jī)制的數(shù)據(jù)校驗(yàn)碼,被廣泛應(yīng)用于各種通信網(wǎng)絡(luò)中,以提供廉價(jià)而有效的錯(cuò)誤檢測(cè)能力。對(duì)于CAN總線的數(shù)據(jù)幀位,CRC段已經(jīng)占據(jù)了固定的15位,如果這15位可以調(diào)整為更少的位數(shù),或者可以根據(jù)輸入數(shù)據(jù)長度進(jìn)行自動(dòng)調(diào)整,則有助于提高整個(gè)CAN總線通信的傳輸幀率及誤碼檢測(cè)能力。CAN總線的傳輸幀率可以使用波特率除以幀位總數(shù)來求得,計(jì)算公式如下所示:

(1)

式中:FR為傳輸幀率,幀/s;BR為控制器的波特率,bit/s;FFB為每幀所占位數(shù),bit。

海明碼使用較少的校驗(yàn)碼來檢測(cè)多字節(jié)數(shù)據(jù)并自動(dòng)糾正一位數(shù)據(jù)碼[12-13],對(duì)于數(shù)據(jù)幀中最大位數(shù)的64位數(shù)據(jù)段也僅需要7位校驗(yàn)碼,從而可以有效的提高CAN通信的傳輸幀率和對(duì)多字節(jié)數(shù)據(jù)的誤碼檢測(cè)能力。

2 增強(qiáng)型海明碼計(jì)算原理

本文基于傳統(tǒng)海明碼提出一種增強(qiáng)型海明碼。與傳統(tǒng)的海明碼相比,增強(qiáng)型海明碼新增狀態(tài)碼對(duì)校驗(yàn)碼和信息碼進(jìn)行預(yù)先分類校驗(yàn),從而提高了數(shù)據(jù)的傳輸速率。增強(qiáng)型海明碼的計(jì)算原理如下。

首先,需要根據(jù)信息碼求得所需校驗(yàn)碼位數(shù)。在海明碼中,校驗(yàn)碼被添加到信息碼中組成新的N位碼字,按照1到N的序列排列,并滿足如下關(guān)系:

N=d+p≤2p-1

(2)

式中:d為信息碼;p為校驗(yàn)碼。

由式(2)可以計(jì)算出不同位數(shù)的信息碼與所需校驗(yàn)碼位數(shù)的關(guān)系,具體的對(duì)應(yīng)關(guān)系如表2所示。

表2 不同位數(shù)的信息碼與所需校驗(yàn)碼位數(shù)的關(guān)系 bit

求解出所需校驗(yàn)碼位數(shù)后,還需要確定校驗(yàn)碼的位置以及取值(本文均以8位數(shù)據(jù)10011110為例)。校驗(yàn)碼的位置遵循一定的規(guī)律,必須安插在2n位,即第1、2、4、8位[14]。然后需要確定各個(gè)校驗(yàn)碼的取值,每個(gè)校驗(yàn)碼的取值都代表了碼字中對(duì)應(yīng)數(shù)據(jù)位的奇偶性,總的原則是從第i位校驗(yàn)碼所在的當(dāng)前位開始,連續(xù)校驗(yàn)n(n為第i位校驗(yàn)碼所在位數(shù))位后再隔n位繼續(xù)校驗(yàn),以此類推。校驗(yàn)碼的求解可以由式(3)~式(6)得出,默認(rèn)采用偶校驗(yàn)。由式(3)~式(6)可以求得校驗(yàn)碼p1p2p3p4=0011,則新的碼字為001100111110。

p1=d1?d2?d4?d5?d7

(3)

p2=d1?d3?d4?d6?d7

(4)

p3=d2?d3?d4?d8

(5)

p4=d5?d6?7?d8

(6)

新增校驗(yàn)碼P和校驗(yàn)碼D,校驗(yàn)碼P、D可以通過新增式(7)、式(8)計(jì)算得到,即P=0,D=1。

P=p1?p2?p3?p4

(7)

D=d1?d2?d3?d4?d5?d6?d7?d8

(8)

再新增狀態(tài)碼SP、SD對(duì)p1p2p3p4和d1~d8進(jìn)行校驗(yàn),狀態(tài)碼SP、SD可以通過新增式(9)、式(10)計(jì)算得到,即SP=0,SD=0。

SP=P?p1?p2?p3?p4

(9)

SD=D?d1?d2?d3?d4?d5?d6?d7?d8

(10)

最后,將校驗(yàn)碼與信息碼進(jìn)行分組處理,分組情況見式(11)~式(14)。由于采用偶校驗(yàn),若碼字傳輸過程中沒有出現(xiàn)錯(cuò)誤,則各狀態(tài)碼的校驗(yàn)結(jié)果應(yīng)該為0,即S4S3S2S1=0000;否則,對(duì)應(yīng)的狀態(tài)碼會(huì)變?yōu)?[15]。通過分析式(11)~式(14)可以得到位數(shù)和狀態(tài)碼之間的對(duì)應(yīng)關(guān)系,具體的對(duì)應(yīng)關(guān)系見表3。

S1=p1?d1?d2?d4?d5?d7

(11)

S2=p2?d1?d3?d4?d6?d7

(12)

S3=p3?d2?d3?d4?d8

(13)

S4=p4?d5?d6?d7?d8

(14)

表3 位數(shù)與狀態(tài)碼的對(duì)應(yīng)關(guān)系

表3中,▲表示校驗(yàn)碼所在位只是由對(duì)應(yīng)的校驗(yàn)碼進(jìn)行校驗(yàn);√表示所在位至少由2個(gè)校驗(yàn)碼進(jìn)行校驗(yàn)。此時(shí),對(duì)于接收到的碼字分3種情況處理。

(1)單個(gè)信息碼出錯(cuò)。例如:發(fā)送的碼字為001100111110,接收到的碼字為001100011110,即第7位d4出錯(cuò)。

則Sp=0,p1p2p3p4=0011;SD=1,S4S3S2S1=0111(即十進(jìn)制7),表示校驗(yàn)碼無誤,信息碼出錯(cuò),且可知是第7位d4出錯(cuò),然后對(duì)其取反糾正。

(2)單個(gè)校驗(yàn)碼出錯(cuò)。 例如:發(fā)送的碼字為001100111110,接收的碼字為011100111110,即第2位p2出錯(cuò)。

則SP=1,p1p2p3p4=0111;SD=0,S4S3S2S1=0010(即十進(jìn)制2),表示校驗(yàn)碼出錯(cuò),信息碼無誤。因此可不用檢測(cè)或者糾正校驗(yàn)碼,直接提取信息碼并接收。

(3)單個(gè)校驗(yàn)碼和單個(gè)信息碼同時(shí)出錯(cuò)。例如:發(fā)送的碼字為001100111110,接收的碼字為011100011110,即第2位p2和第7位d4出錯(cuò)。

則SP=1,p1p2p3p4=0111;SD=1,S4S3S2S1=0101(即十進(jìn)制5),出現(xiàn)定位誤碼出錯(cuò)的情況。結(jié)合狀態(tài)碼SP和SD可知,至少有2個(gè)位出現(xiàn)錯(cuò)誤,無法實(shí)現(xiàn)數(shù)據(jù)糾正,可直接重傳碼字。而傳統(tǒng)海明碼在此情況下只會(huì)根據(jù)狀態(tài)碼S4S3S2S1=0101,將正確的信息碼改錯(cuò),造成數(shù)據(jù)糾正錯(cuò)誤。

由上述分析可知,本文提出的增強(qiáng)型海明碼相比于傳統(tǒng)海明碼有如下幾個(gè)特點(diǎn):增強(qiáng)型海明碼仍保留傳統(tǒng)海明碼的優(yōu)點(diǎn),可對(duì)單個(gè)錯(cuò)誤進(jìn)行檢測(cè)并糾正;在只有校驗(yàn)碼出錯(cuò)的情況下,可直接提取信息碼,提高了數(shù)據(jù)傳輸速率;對(duì)于特定情況下的多位錯(cuò)誤,可避免校正出錯(cuò)的情況,提高對(duì)誤碼的檢測(cè)能力。

3 實(shí)驗(yàn)結(jié)果

3.1 發(fā)送端編碼

對(duì)發(fā)送端編碼進(jìn)行算法分析,根據(jù)增強(qiáng)型海明碼的計(jì)算原理可知,首先通過式(2)根據(jù)所要發(fā)送的字節(jié)數(shù)計(jì)算出所需校驗(yàn)碼的個(gè)數(shù),然后按照上述插入原則將校驗(yàn)碼安插到2n處,再通過式(3)~式(6)計(jì)算出校驗(yàn)碼的取值,最后將計(jì)算出的校驗(yàn)碼放置在CAN總線協(xié)議中,替換掉CRC。具體算法流程圖如圖1所示。

圖1 發(fā)送端編碼流程圖

3.2 接收端解碼

接收端的算法分為2個(gè)部分:解碼和糾錯(cuò)。接收端在接收到碼字后,在特定位置獲取所有校驗(yàn)碼,然后根據(jù)式(9)、式(10)和式(11)~式(14)求解出SP、SD、S3、S2、S1的值,然后再分類進(jìn)行處理。具體算法流程圖如圖2所示。

圖2 接收端解碼糾錯(cuò)流程圖

3.3 性能測(cè)試

在兩塊STM32F103ZET6微處理器之間進(jìn)行數(shù)據(jù)傳輸實(shí)驗(yàn),分別使用CRC校驗(yàn)、傳統(tǒng)海明碼以及增強(qiáng)型海明碼的CAN2.0A協(xié)議來測(cè)試數(shù)據(jù)傳輸幀率。其中一塊STM32F103ZET6開發(fā)板作為主機(jī)發(fā)送數(shù)據(jù),另一塊開發(fā)板作為從機(jī)接收數(shù)據(jù),并將接收到的數(shù)據(jù)回送給主機(jī)。同時(shí),主機(jī)將兩者通信結(jié)果通過串口實(shí)時(shí)發(fā)送至計(jì)算機(jī)并進(jìn)行顯示,CAN2.0A協(xié)議通信實(shí)驗(yàn)設(shè)備如圖3所示。

圖3 CAN2.0A通信實(shí)驗(yàn)實(shí)物圖

在125 kbps的波特率下,分別測(cè)試了CRC校驗(yàn)、傳統(tǒng)海明碼以及增強(qiáng)型海明碼對(duì)于8位到64位數(shù)據(jù)段的傳輸幀率,實(shí)驗(yàn)結(jié)果見表4。由表4可知,使用傳統(tǒng)海明碼作為CAN總線的數(shù)據(jù)檢測(cè)方法,可有效提高CAN總線的數(shù)據(jù)傳輸幀率。相較于CRC,其傳輸幀率平均提高13.65%;此外,由于增強(qiáng)型海明碼的預(yù)先分類校驗(yàn)機(jī)制,進(jìn)一步提高了CAN總線的傳輸幀率,其傳輸幀率相較于傳統(tǒng)海明碼平均提升8.76%左右,相較于CRC校驗(yàn)平均提升23.58%。

表4 CRC、傳統(tǒng)海明碼、增強(qiáng)型海明碼傳輸幀率

此外,為了驗(yàn)證使用增強(qiáng)型海明碼作為錯(cuò)誤檢測(cè)方法的CAN總線協(xié)議的誤碼檢測(cè)能力,在發(fā)送端對(duì)組成的新碼字進(jìn)行更改,在新碼字中隨機(jī)改變一位或多位信息碼、校驗(yàn)碼。然后在8位到64位數(shù)據(jù)段的情況下,分別對(duì)CRC、傳統(tǒng)海明碼以及增強(qiáng)型海明碼的誤碼檢測(cè)能力進(jìn)行測(cè)試,測(cè)試結(jié)果如圖4所示。分析圖4可知,在8位到64位數(shù)據(jù)段的范圍內(nèi),增強(qiáng)型海明碼的誤碼檢測(cè)能力普遍要高于傳統(tǒng)海明碼,整體的誤碼檢測(cè)能力平均提高了4.63%。相較于CRC校驗(yàn),當(dāng)數(shù)據(jù)段的字節(jié)數(shù)小于6個(gè)字節(jié)時(shí),CRC校驗(yàn)的誤碼檢測(cè)能力高于傳統(tǒng)海明碼和增強(qiáng)型海明碼,但當(dāng)數(shù)據(jù)段超過6個(gè)字節(jié)后,傳統(tǒng)海明碼和增強(qiáng)型海明碼的誤碼檢測(cè)能力高于CRC校驗(yàn)。其中,在6至8個(gè)字節(jié)情況下,傳統(tǒng)海明碼的誤碼檢測(cè)能力比CRC平均高出3.93%;增強(qiáng)型海明碼的誤碼檢測(cè)能力比CRC平均高出8.83%。在多字節(jié)數(shù)據(jù)傳輸時(shí)造成如此大的差距,主要是因?yàn)?5位的CRC只能有效校驗(yàn)2個(gè)字節(jié)數(shù)據(jù),對(duì)于超過2個(gè)字節(jié)的數(shù)據(jù)則無法做到完全校驗(yàn)。

圖4 CRC、傳統(tǒng)海明碼和增強(qiáng)型海明碼誤碼檢測(cè)能力對(duì)比

4 結(jié)束語

為了進(jìn)一步提升CAN總線協(xié)議的實(shí)時(shí)性,本文提出一種新型校驗(yàn)方法即增強(qiáng)型海明碼,并將其應(yīng)用于CAN總線技術(shù)中。實(shí)驗(yàn)結(jié)果表明,增強(qiáng)型海明碼相較于CRC校驗(yàn)?zāi)軌蛴行岣邤?shù)據(jù)傳輸幀率,在6~8 Byte的傳輸情況下,增強(qiáng)型海明碼的誤碼檢測(cè)能力也要優(yōu)于CRC校驗(yàn)。但增強(qiáng)型海明碼也有其局限性,由于海明碼的內(nèi)部算法機(jī)制,增強(qiáng)型海明碼只能檢測(cè)和糾正1位錯(cuò)誤,無法檢測(cè)和糾正任意情況下的多位錯(cuò)誤。因此,基于增強(qiáng)型海明碼的CAN總線協(xié)議可適用于實(shí)時(shí)性要求高、多字節(jié)傳輸且擾動(dòng)少的工業(yè)領(lǐng)域。

猜你喜歡
校驗(yàn)碼增強(qiáng)型誤碼
“東方紅”四號(hào)增強(qiáng)型平臺(tái)
ZPW-2000A電碼化軌道電路誤碼問題分析及解決方案
增強(qiáng)型MSTP設(shè)備在高速公路中的應(yīng)用
一種基于CAN總線的誤碼測(cè)試方法
一種基于STC增強(qiáng)型單片機(jī)的大電容測(cè)量
基于Excel實(shí)現(xiàn)書號(hào)校驗(yàn)碼的驗(yàn)證
多支路兩跳PF協(xié)作系統(tǒng)的誤碼性能
基于FPGA的循環(huán)冗余校驗(yàn)碼設(shè)計(jì)
身份證號(hào)碼中的數(shù)學(xué)
美國LWRC公司M6 IC增強(qiáng)型卡賓槍