基于增强型海明码的CAN总线实时性研究

2021-08-16 09:33李文祥周小军管恒睿何加桥
仪表技术与传感器 2021年7期
关键词:校验码增强型误码

李文祥,周小军,,亢 超,管恒睿,何加桥

(1.中国科学技术大学南京天文仪器研制中心,安徽合肥 230026;2.中科院南京天文仪器有限公司,江苏南京 210042)

0 引言

控制器局域网络(CAN)因其较强的抗干扰能力、稳定性和灵活性被广泛应用在工业自动化、船舶等领域[1-4]。CAN总线协议使用循环冗余校验码(CRC)作为每帧内容的错误检测方法,该方法在数据帧中占据固定位数,无法根据数据段所占位数动态调整,限制了CAN总线的数据传输帧率的提高,致使CAN总线协议无法适用于一些对于实时性要求较高的领域。因此,进一步提高CAN总线的数据传输帧率具有十分重要的研究意义。

近年来,国内外有大批学者对CAN总线协议进行了相关研究。刘承智[5]等通过减少标准符,增加数据位等措施,提高了CAN总线的帧利用率,但却占用了原有的仲裁场作为数据位,导致系统可用的ID较小;王瑞峰[6]等利用动态优先级算法重新设计数据帧格式,降低了节点的最大时延,提高了CAN总线的实时性,但该方式应用不便且在灵活性上有所缺失;Juan[7]等提出一种模拟的CRC编码器与解码器作为CAN总线的错误检测方法,该方法可以根据字节数动态调整CRC的位数,但却增加了数据帧位数,降低了数据传输帧率。

鉴于此,本文提出一种增强型海明码来替代CAN总线协议中的循环冗余校验码(CRC)。增强型海明码既保留了传统海明码自动纠错的优点,又新增状态码对信息码和校验码进行分类校验,提高了CAN总线的数据传输帧率。同时,相较于CRC,增强型海明码占据位数更少,并且能够根据字节数动态调整位数,提高了CAN总线在多字节情况下的误码检测能力。最后,本文基于CAN2.0A协议对CRC、传统海明码、增强型海明码进行数据通信实验,验证了使用增强型海明码的CAN总线协议的传输帧率和误码检测能力。

1 CAN总线实时性分析

CAN总线协议的数据帧有2种格式:标准帧和扩展帧,这2种格式除了仲裁段的长度不相同其他都相同[8-9]。本文以标准帧为例,对CAN总线实时性进行分析。标准数据帧由7个不同的段组成:帧起始(SOF)、仲裁段、控制段、数据段、CRC段、ACK段和帧结尾(EOF),各段详细分布及所占位数如表1所示。

表1 CAN2.0A标准数据帧位数分配 bit

从表1可以看出,CAN总线协议使用CRC校验作为每帧内容的错误检测方法[10-11]。CRC校验是一种基于误码重传机制的数据校验码,被广泛应用于各种通信网络中,以提供廉价而有效的错误检测能力。对于CAN总线的数据帧位,CRC段已经占据了固定的15位,如果这15位可以调整为更少的位数,或者可以根据输入数据长度进行自动调整,则有助于提高整个CAN总线通信的传输帧率及误码检测能力。CAN总线的传输帧率可以使用波特率除以帧位总数来求得,计算公式如下所示:

(1)

式中:FR为传输帧率,帧/s;BR为控制器的波特率,bit/s;FFB为每帧所占位数,bit。

海明码使用较少的校验码来检测多字节数据并自动纠正一位数据码[12-13],对于数据帧中最大位数的64位数据段也仅需要7位校验码,从而可以有效的提高CAN通信的传输帧率和对多字节数据的误码检测能力。

2 增强型海明码计算原理

本文基于传统海明码提出一种增强型海明码。与传统的海明码相比,增强型海明码新增状态码对校验码和信息码进行预先分类校验,从而提高了数据的传输速率。增强型海明码的计算原理如下。

首先,需要根据信息码求得所需校验码位数。在海明码中,校验码被添加到信息码中组成新的N位码字,按照1到N的序列排列,并满足如下关系:

N=d+p≤2p-1

(2)

式中:d为信息码;p为校验码。

由式(2)可以计算出不同位数的信息码与所需校验码位数的关系,具体的对应关系如表2所示。

表2 不同位数的信息码与所需校验码位数的关系 bit

求解出所需校验码位数后,还需要确定校验码的位置以及取值(本文均以8位数据10011110为例)。校验码的位置遵循一定的规律,必须安插在2n位,即第1、2、4、8位[14]。然后需要确定各个校验码的取值,每个校验码的取值都代表了码字中对应数据位的奇偶性,总的原则是从第i位校验码所在的当前位开始,连续校验n(n为第i位校验码所在位数)位后再隔n位继续校验,以此类推。校验码的求解可以由式(3)~式(6)得出,默认采用偶校验。由式(3)~式(6)可以求得校验码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)

新增校验码P和校验码D,校验码P、D可以通过新增式(7)、式(8)计算得到,即P=0,D=1。

P=p1⨁p2⨁p3⨁p4

(7)

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

(8)

再新增状态码SP、SD对p1p2p3p4和d1~d8进行校验,状态码SP、SD可以通过新增式(9)、式(10)计算得到,即SP=0,SD=0。

SP=P⨁p1⨁p2⨁p3⨁p4

(9)

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

(10)

最后,将校验码与信息码进行分组处理,分组情况见式(11)~式(14)。由于采用偶校验,若码字传输过程中没有出现错误,则各状态码的校验结果应该为0,即S4S3S2S1=0000;否则,对应的状态码会变为1[15]。通过分析式(11)~式(14)可以得到位数和状态码之间的对应关系,具体的对应关系见表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 位数与状态码的对应关系

表3中,▲表示校验码所在位只是由对应的校验码进行校验;√表示所在位至少由2个校验码进行校验。此时,对于接收到的码字分3种情况处理。

(1)单个信息码出错。例如:发送的码字为001100111110,接收到的码字为001100011110,即第7位d4出错。

则Sp=0,p1p2p3p4=0011;SD=1,S4S3S2S1=0111(即十进制7),表示校验码无误,信息码出错,且可知是第7位d4出错,然后对其取反纠正。

(2)单个校验码出错。 例如:发送的码字为001100111110,接收的码字为011100111110,即第2位p2出错。

则SP=1,p1p2p3p4=0111;SD=0,S4S3S2S1=0010(即十进制2),表示校验码出错,信息码无误。因此可不用检测或者纠正校验码,直接提取信息码并接收。

(3)单个校验码和单个信息码同时出错。例如:发送的码字为001100111110,接收的码字为011100011110,即第2位p2和第7位d4出错。

则SP=1,p1p2p3p4=0111;SD=1,S4S3S2S1=0101(即十进制5),出现定位误码出错的情况。结合状态码SP和SD可知,至少有2个位出现错误,无法实现数据纠正,可直接重传码字。而传统海明码在此情况下只会根据状态码S4S3S2S1=0101,将正确的信息码改错,造成数据纠正错误。

由上述分析可知,本文提出的增强型海明码相比于传统海明码有如下几个特点:增强型海明码仍保留传统海明码的优点,可对单个错误进行检测并纠正;在只有校验码出错的情况下,可直接提取信息码,提高了数据传输速率;对于特定情况下的多位错误,可避免校正出错的情况,提高对误码的检测能力。

3 实验结果

3.1 发送端编码

对发送端编码进行算法分析,根据增强型海明码的计算原理可知,首先通过式(2)根据所要发送的字节数计算出所需校验码的个数,然后按照上述插入原则将校验码安插到2n处,再通过式(3)~式(6)计算出校验码的取值,最后将计算出的校验码放置在CAN总线协议中,替换掉CRC。具体算法流程图如图1所示。

图1 发送端编码流程图

3.2 接收端解码

接收端的算法分为2个部分:解码和纠错。接收端在接收到码字后,在特定位置获取所有校验码,然后根据式(9)、式(10)和式(11)~式(14)求解出SP、SD、S3、S2、S1的值,然后再分类进行处理。具体算法流程图如图2所示。

图2 接收端解码纠错流程图

3.3 性能测试

在两块STM32F103ZET6微处理器之间进行数据传输实验,分别使用CRC校验、传统海明码以及增强型海明码的CAN2.0A协议来测试数据传输帧率。其中一块STM32F103ZET6开发板作为主机发送数据,另一块开发板作为从机接收数据,并将接收到的数据回送给主机。同时,主机将两者通信结果通过串口实时发送至计算机并进行显示,CAN2.0A协议通信实验设备如图3所示。

图3 CAN2.0A通信实验实物图

在125 kbps的波特率下,分别测试了CRC校验、传统海明码以及增强型海明码对于8位到64位数据段的传输帧率,实验结果见表4。由表4可知,使用传统海明码作为CAN总线的数据检测方法,可有效提高CAN总线的数据传输帧率。相较于CRC,其传输帧率平均提高13.65%;此外,由于增强型海明码的预先分类校验机制,进一步提高了CAN总线的传输帧率,其传输帧率相较于传统海明码平均提升8.76%左右,相较于CRC校验平均提升23.58%。

表4 CRC、传统海明码、增强型海明码传输帧率

此外,为了验证使用增强型海明码作为错误检测方法的CAN总线协议的误码检测能力,在发送端对组成的新码字进行更改,在新码字中随机改变一位或多位信息码、校验码。然后在8位到64位数据段的情况下,分别对CRC、传统海明码以及增强型海明码的误码检测能力进行测试,测试结果如图4所示。分析图4可知,在8位到64位数据段的范围内,增强型海明码的误码检测能力普遍要高于传统海明码,整体的误码检测能力平均提高了4.63%。相较于CRC校验,当数据段的字节数小于6个字节时,CRC校验的误码检测能力高于传统海明码和增强型海明码,但当数据段超过6个字节后,传统海明码和增强型海明码的误码检测能力高于CRC校验。其中,在6至8个字节情况下,传统海明码的误码检测能力比CRC平均高出3.93%;增强型海明码的误码检测能力比CRC平均高出8.83%。在多字节数据传输时造成如此大的差距,主要是因为15位的CRC只能有效校验2个字节数据,对于超过2个字节的数据则无法做到完全校验。

图4 CRC、传统海明码和增强型海明码误码检测能力对比

4 结束语

为了进一步提升CAN总线协议的实时性,本文提出一种新型校验方法即增强型海明码,并将其应用于CAN总线技术中。实验结果表明,增强型海明码相较于CRC校验能够有效提高数据传输帧率,在6~8 Byte的传输情况下,增强型海明码的误码检测能力也要优于CRC校验。但增强型海明码也有其局限性,由于海明码的内部算法机制,增强型海明码只能检测和纠正1位错误,无法检测和纠正任意情况下的多位错误。因此,基于增强型海明码的CAN总线协议可适用于实时性要求高、多字节传输且扰动少的工业领域。

猜你喜欢
校验码增强型误码
“东方红”四号增强型平台
ZPW-2000A电码化轨道电路误码问题分析及解决方案
增强型MSTP设备在高速公路中的应用
一种基于CAN总线的误码测试方法
一种基于STC增强型单片机的大电容测量
基于Excel实现书号校验码的验证
多支路两跳PF协作系统的误码性能
基于FPGA的循环冗余校验码设计
身份证号码中的数学
美国LWRC公司M6 IC增强型卡宾枪