APP下载

基于冗余编码系统的循环冗余校验方法

2019-08-21蒋建金傅林泰

城市轨道交通研究 2019年8期
关键词:低位校验消息

夏 伟 蒋建金 傅林泰 张 磊

(卡斯柯信号有限公司,200071,上海//第一作者,工程师)

列车自动控制(ATC)系统是由列车自动保护(ATP)系统、列车自动监控(ATS)系统、列车自动运行(ATO)系统和计算机联锁系统组成[1],对列车运行速度、运行间隔和运行方向等进行控制,保证列车安全、高效运行。这些系统大多在设计时需要采用安全冗余编码技术来提高系统的安全性,使系统达到SIL4安全完整性等级。

循环冗余校验(CRC)是通信领域常用的一种校验码,用于检测数据在传输过程中是否发生了被篡改的错误。一般的方法是通信双方定义好计算多项式和CRC的计算方法(包括宽度、起始值、结果异或值、输入输出数据反转等),发送方在对数据计算后将得出的CRC值附在消息帧后面一起发送;接收方收到后对数据进行同样的计算,并将结果与原始的CRC进行比较,来校验数据的正确性与完整性。

当冗余编码的列车自动控制系统与其它类型冗余编码或非冗余编码系统通信时,需要采用CRC来保证传输数据的完整性,且只需传输高位数据,低位冗余码不参与传输。当列车自动控制系统无故障时计算出的冗余码CRC与标准CRC结果完全一致,外界系统可校验通过;当列车自动控制系统存在故障时,计算出的冗余码CRC需要包含故障信息且该故障能被外界检测出而拒绝接收。现有的技术在发送消息时,仅对高位数据进行CRC计算,那么会导致外界系统无法检测到低位数据中可能存在的随机性失效或故障;收到外界消息时,如果只是根据高位数据直接计算出低位冗余码,那么当CRC校验过程失效时,故障信息将不体现在低位冗余码中而无法被当前系统检测。为此,提出了一种安全性高、错误可检测率高、基于冗余编码的CRC校验方法。

1 冗余编码技术

冗余编码技术虽然种类多样,但是编码形式、安全原理大致相同。每个变量都是由高位与低位组成,高位为数据的信息位,低位为数据的校验位,其中低位是由高位、签名、时间戳等信息通过预定义的公式计算得出,因此每个变量的高低位之间存在确定的对应关系。系统在运行的每个周期都会对关键变量的高位、低位正确性进行校验,用于判断是否存在内存错误、随机性失效等故障。本文采用AN码、分离码相结合的编码方式[2-3]。对于简单变量x,设计其编码后的形式为:

X=Ax+Bx+DT

式中:

A——编码时选择的大素数;

Bx——编码时为变量x分配的大素数;

DT——时间戳。

在实际编码中,将长度为k个字节(k=1,2,3,4)的变量分成了高k位和低k位,高k位为数值域,存放数据的原始值,低k位为校验域。

按照这种编码方法,对每个操作数分配一个固定的签名,可以检测操作数寻址签名错误和操作符错误;时间戳可以检测循环变量值没有被更新的错误,或者循环变量值失效使用上周期变量值的错误。

2 CRC技术

CRC校验技术是一种十分有效的错误检测技术,能检验一位错、双位错、所有的奇数错、所有长度小于或等于所用的生成多项式长度的错误。如采用16位生成多项式的CRC校验,对17位以上的检错率高达99.997%[4],32位生成多项式的出错概率比16位低10-5倍[5],因此CRC 32更适用于重要数据的传输,在轨道交通列车自动控制系统中得到广泛应用。文献[6-8]中对查表法CRC校验的原理做了详细阐述。

3 基于冗余编码的CRC校验方法

针对现有技术无法实现对列车信号控制系统中冗余码进行CRC校验以及无法利用CRC校验码与外界冗余/非冗余编码系统进行通信的问题,提出一种基于冗余编码系统的CRC校验方法:

1)对发送消息进行编码。通过将冗余码校验信息融合到CRC校验计算过程中,在无故障的情况下得出的CRC校验码与标准CRC完全一致,保证了正常的通信功能;在列车信号控制系统发生故障的情况下能够将错误信息反馈到编码CRC校验码中,外界冗余/非冗余系统可校验出故障信息。

2)收到外界消息,根据消息中的CRC校验码和高位数据对该消息进行解码校验,校验结果加入最终生成的低位冗余码,保证了传输过程中任何故障可以被编码系统及时检测出。

该方法实现步骤包括离线数据准备模块、编码模块和解码模块三个部分。

3.1 离线数据准备模块

离线配置工具输入的文件有msgType.xml(定义所有消息的格式,每条消息中包含的具体变量,每个变量的长度)和signature.txt(包含所有变量的签名)。

离线配置工具需要根据输入文件计算每条消息中每个变量签名数据的补偿值。由于在计算CRC时需要同时进行低位冗余码的计算,因此需要根据具体CRC的多项式和计算方法,计算每个变量的签名补偿值表,用于在CRC计算时抵消低位冗余码信息。签名补偿值的计算公式如下:

Smod=(S∧M)×Pk-1

式中:

S——原始签名;

Smod——签名补偿值;

M——CRC 32多项式对应的掩码;

P——多项式转换成的32位矩阵;

k——变量长度,支持1-4 B。

签名计算完成需要进行校验,校验的方法是进行反向计算,逆推原签名。如果校验失败,则终止输出;校验成功后输出的bin文件中应包含:每条消息的格式,每条消息中每个变量对应的签名补偿值,临时接收签名TempSig_rcv(跟Sig_nature保持常量差Constant_1)。离线配置工具处理如图1所示。

图1 离线配置工具处理流程图

3.2 编码模块

冗余编码系统中所有待发送消息的变量均采用编码技术,包含高位和低位数据。由于冗余码无法直接转换为CRC,在编码时(即计算CRC的过程),会同时对每个变量的高位、低位进行校验,如果发现冗余码故障或在编码过程中发生随机性失效,那么该错误信息将会被融合于CRC计算过程,得到错误的CRC校验码,外部系统可以检测出该故障信息。处理流程如图2所示。

图2 发送消息编码处理流程图

具体步骤为:

1) 从配置bin文件中获取当前变量的长度。

2) 查表法依次计算当前变量的每个字节的CRC值。

3) 查找签名补偿值表,计算当前变量当前字节签名对应的补偿值。

4) 根据当前变量的长度判断当前变量CRC计算是否结束,如未结束则执行步骤2),如结束则根据当前变量的整体签名补偿值、高位数据、低位冗余码、时间戳(TimeStamp)进行校验。当数据正确时校验结果应为0;如果校验结果非0,则表示存在故障。将每个变量的校验结果信息异或到编码CRC值。

5) 判断当前消息所有变量是否都已计算结束,如未结束执行步骤1),如已结束则返回编码CRC值作为最终结果。

其中步骤3)中一个变量的某个字节CRC补偿值的计算公式为:

Scmp[x]=(T[xk]-1×2k1×8)MOD(A)

式中:

xk——该字节的数值,范围为[0, 255];

T——查表法CRC32计算表;

k1——变量的第几个字节,范围为[0, 3]。

3.3 解码模拟

由于接收到的消息只有高位数据和CRC,需要根据高位数据和CRC生成有效的冗余码。如果数据在传输过程被篡改或解码过程发生随机性失效,将导致校验结果异常,生成的冗余码包含错误信息,该错误会被系统检出。在解码时,先对消息进行临时编码,将临时编码 CRC与接收CRC进行比较,并将校验结果融合到最终冗余码的计算过程。具体为:

1) 根据配置信息中的TempSig_rcv和收到消息中的高位数据计算出每个变量的临时冗余码Temp_Redcode,且不包含TimeStamp信息。

2) 根据Temp_Redcode对收到的消息进行临时编码, 得到临时编码CRC。

3) 将步骤2)中的临时编码CRC与接收CRC进行校验比较,并去除步骤1)中常量差Constant_1。如果两者相等,则校验通过,校验结果为0;如果两者不等,则校验不通过,校验结果非0。

4) 如果步骤3)校验通过,修改步骤1)中每个变量的Temp_Redcode,异或3.2中步骤3)校验结果,并加上TimeStamp,作为最终冗余码结果输出。

5) 如果步骤3)校验不通过,返回错误,不输出冗余码;如果发生随机性失效,进入步骤4),输出的冗余码会携带步骤3)中的错误校验结果,当前系统会检测出该故障,处理流程如图3所示。

图3 接收消息解码处理流程图

4 结语

采用基于冗余编码系统的CRC校验方法,可实现冗余编码系统与非冗余编码系统的正常通信,提高系统的通信兼容性,并且有效保证了对传输过程中的错误信息和系统的随机性失效的检出率。目前该方法已成功应用于ATP、ATS等多个安全产品中。

猜你喜欢

低位校验消息
预计2020年油价将低位震荡
枣树低位截干萌枝嫁接新技术
上半年磷复肥市场低位运行
利好不足下半年尿素市场仍将低位震荡
一张图看5G消息
炉温均匀性校验在铸锻企业的应用
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定
消息