当前位置:首页 期刊杂志

数控总线通信的动态安全校验方法*

时间:2024-07-28

郭 翀,于 东,岳东峰,陈 龙

(1.中国科学院研究生院,北京 100039;2.中国科学院沈阳计算技术研究所高档数控国家工程研究中心,沈阳 110171;3.中国科学技术大学计算机科学与技术学院,合肥 230027)

0 引言

在工业控制领域中,总线作为承载数据的媒介、传输命令的通道和连接各接口的纽带,对控制系统高速、精确、安全运行起着至关重要的作用。目前,有关总线安全的研究仍在不断升温,并已得到IEC和相关国际组织的重视。本文提出了一种用于数控总线数据传输的安全通信方法,在应用层上通过使用数据关联的动态校验,为使用者提供一种安全强度可变的动态CRC校验方法,用以提高数据传输的安全性和应用的灵活性。

1 数控总线通信安全功能

本文提出的动态CRC校验方法同传统校验方法相比具有以下优点:①能够产生连续的、不重复的校验值,降低了剩余错误率;②能够为用户提供一种安全强度可变的安全机制,增强了安全性能的可控性。

图1为本文所提出的报文结构。

报文由安全数据位、状态位、序列号、偏移数、安全比特数以及CRC校验值组成。其中,有效数据位存放从站执行操作的命令;状态位用于识别通信状态;序列号用于识别安全数据报文顺序;偏移数用于生成选取关联数据的起始位;安全比特数用于标识关联数据选取的位数;CRC校验值用于进行CRC校验。

图1 动态CRC校验方法报文结构图

2 安全功能组成结构及流程

本校验方法分为初始化连接过程和数据传输过程,其中,Original为初始值,用于主站和从站建立连接过程;Swift()为偏移函数,用以按偏移数表选择偏移数;Swifti为偏移函数Swift()选择的偏移数;SBN为安全比特数,由用户/控制系统根据命令类型和要求选择;Datai为所需传输的安全数据;ACKi为从站所发送的应答数据;SwiftCali为计算所得的冗余数据,可与安全数据报文共同计算产生CRC校验值;CRCi为安全数据报文传输中的CRC校验值。

图2为动态CRC校验方法初始化连接结构图,过程如下。

图2 动态CRC校验方法初始化连接结构图

(1)主站和从站启动,同时读取Original值。主站初始化 Swift()函数,并由此函数生成偏移数Swift0。

(2)主站取SBN=0,创建连接数据报文,并将O-riginal和Swift0封装在数据报文内,进行CRC计算,发送至从站。同时,由 Swift()函数生成偏移数Swift1。

(3)从站接收数据报文,通过SBN=0判断连接过程,若在待机状态下接收的第一个数据报文中SBN≠0,则执行步骤5。若 SBN=0,读取 Swift0至Swift()函数。

(4)从站读取本地Original值,同时读取报文中的Swift0,进行CRC校验。若正确,取SBN=0,生成偏移数Swift1,同时封装Original值,进行连接确认,连接成功,进入数据传输状态。若不正确,执行步骤5。

(5)从站终止Swift()函数,并将原数据报文返回。

(6)主站接收数据报文确认信息,根据SBN是否为0判断连接状态,方法同从站。

(7)主站读取本地 Swift1,Original值,进行 CRC校验。若正确,连接成功,进入数据传输过程。至此,连接成功。若错误,执行步骤2。

图3为动态CRC校验方法数据传输过程结构图,过程如下。

(1)当主站有数据需要发送时,数据片段称为Datai。主站由Swift()函数生成偏移数 Swifti,并将Swifti、ACKi-1、Datai作为输入进行偏移计算,得出SwiftCali作为此次传输的添加校验值。最后将Swift-Cali和Datai一起进行CRC计算,得到CRCi,然后封装,发送至从站。在第一个传输周期内,ACKi-1的值为初始值Original,通过此值完成第一个数据Data1的传输。

(2)从站接收数据报文,由Swift()函数生成偏移量Swifti,并与数据报文中的Swifti'进行比较,若相同,执行步骤3。若不同,执行步骤5。

(3)从站读取Original值,同数据报文中的Datai'一起进行偏移计算,得出SwiftCali'。然后使用Swift-Cali'同Datai'进行CRC计算,用来和数据报文中的CRCi'进行校验。若正确,则数据报文有效,执行步骤4。若错误,执行步骤5。

(4)从站生成偏移值 Swifti+1,读取确认数据ACKi和 Datai',作为输入生成 SwiftCali+1。再由SwiftCali+1与ACKi生成CRCi+1,封装数据,发送回主站。

(5)从站将原数据包返回主站,要求重传,并保留本次Swift()函数所生成的偏移值,以供下个数据报文校验使用。

(6)主站接收到确认数据,生成Swifti+1,并和数据报文中的Swifti+1'进行比较。若相同,执行步骤7。若不同,执行步骤1。

(7)主站读取数据Datai和报文中的ACKi'共同生成 SwiftCali+1'。再由 SwiftCali+1'和 ACKi'进行CRC计算,用来和CRCi+1'进行校验。若正确,执行步骤1。若错误,保留本次生成的Swifti+1,并将数据报文返回从站,要求重传。

图3 动态CRC校验方法数据传输结构图

3 性能测试

3.1 算法性能分析

在算法性能分析中,针对传统CRC校验方法,剩余错误的产生主要有以下两个方面:

(1)数据段中多处同时出错,导致CRC校验依旧正确。

(2)段中和CRC校验码中,同时出现错误,导致CRC校验依旧正确。

在本算法中,由于数据SwiftCali独立的在主站和从站产生,不进行传输,该部分数据错误只存在于软件和硬件错误的范围内。因此针对上述两种情况,有:

(1)在传统CRC校验方法中,设数据值为D、除式为P(x)、商为Q(x)、余式为R(x),则有:

而在本算法中,由于SwiftCali在数据之后,所以数据值 D 相应的增大。设 SBN=SkSk-1Sk-2…S2S1,若继续满足CRC余式相同,则只能使:

由上述两式计算得:

由此得出若要使等式成立,则上式除P(x)的商是唯一的。只要CRC计算中的P(x)足够大,可以大幅减小错误的发生。在整数范围内,选择到该数的概率是P(x)-1。设传统CRC中,发生这种错误的概率为p,则在使用本算法的最坏情况下,此种错误概率为 P(x)-1p。

(2)数据段中和CRC校验码中,同时出现错误,导致CRC校验依旧正确。传统CRC方法中,数据段和CRC校验码同时出错,设出错数据为D'、出错余式为R'(x)则有:

由情况(1)计算得:

由上式可以看出,若取P(x)足够大,仍旧可以减少错误的发生。而在P(x)不足够大的情况下,由于若要使等式成立,则上式除P(x)的商是唯一的,概率等同于情况(1)。既在采用本算法的最坏情况下,出现错误的概率为P(x)-1p。

3.2 性能测试

3.2.1 实时性

本方法中所涉及的主要时间消耗处为Swift计算和CRC计算之前的移位存储步骤,两个步骤的时间复杂度分别为O(n2)和O(n),在对结构进行排序和优化后,前者可降至O(nlogn)。实时性的性能采用的是校验方法计算时间占传输总延迟的百分比来衡量的。其结构图如图4所示。

图4 延时组成示意图

总时延T为各部分时延之和,则有:

本方法所产生的延时为Ts,下表给出了Ts占总延时T的百分比:

表1 延时比例表

由表1可知,随着SBN的增大,Ts所占比重也在不断增大,SBN与计算时间开销成正比,因此需要根据需求设置不同的SBN值,例如:非紧急命令SBN可取值为3,紧急命令SBN可取值为1,定期状态报告SBN可取值为5等。另外,当SBN大于13时,算法消耗时间所占比重超过了总延时的10%,可能会对系统带来较大负担。因此,根据实际情况合理选择SBN的大小十分重要。

3.2.2 剩余错误率

在有关剩余错误率的测试中,采用了统计的方式,对大量数据按照一定概率随机产生错误,并统计剩余错误率。设采用本方法所产生的剩余错误率为Rd、采用传统CRC校验方法所产生的剩余错误率为Rs、平均出错概率为P,则下表给出了不同SBN值对剩余错误率的影响。由表2可知,剩余错误率Rd随着SBN的增大而减小,其原因为相关校验位SwiftCali的增大,使在进行CRC计算时,原数据与冗余数据的关联性更强,降低了CRC校验值无法检测出错误和校验值重复的概率。传统CRC校验方法剩余错误率Rs在10-6至10-10区间,而由本方法所产生的剩余错误率Rd在10-7至10-17区间,虽然波动较大,但是当固定SBN值后,可以发现相对传统CRC校验方法,剩余错误率有大幅下降。

表2 剩余错误率比较表

4 结束语

针对数控总线在通信过程中出现的传输错误,本文在应用层之上提出了一种动态CRC校验方法,该方法采用冗余数据和偏移机制,能够根据用户层的需求对安全强度进行调整。实验证明,本文提出的动态CRC校验方法在满足通信实时性要求的同时,大幅降低了总线通信过程中的剩余错误率,具有很好的应用前景。

[1]胡毅,于东,岳东峰,等.数控总线的消息安全通信方法[J].机械工程学报,2011,47(5):134.

[2]Alireza Namazi,Seyed Ghassem Miremadi,Alireza Ejlali.A High Speed and Low Cost Error Correction Technique for the Carry Select Adder[C].International Conference on Availability and Security,2009.

[3]杨景蓝,宁滨,李开成.基于过程现场总线的安全通信的研究与实现[J].铁路计算机应用,2007(7):4.

[4]Yanbin Zhang,Qi Yuan.A Multiple Bits Error Correction Method Based on Cyclic Redundancy Check Codes[C].ICSP Proceedings,2008.

[5]Huseyin Balli,Xijin Yan,Zhen Zhang.Error Correction Capability of Random Network Error Correction Codes[C].ISIT,2007.

[6]包伟华,张浩.The Research of Functional Safety Standards and Technologies[C].第八届工业仪表与自动化学术会议,2007.

[7]Zhen Zhang.Linear Network Error Correction Codes in Packet Networks[J].IEEE Transactions on Information theory,2008,54(1).

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!