一种用于数控总线的安全可控通信方法转让专利

申请号 : CN201010582141.0

文献号 : CN102571259B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于东郭翀岳东峰高甜容陈龙

申请人 : 中国科学院沈阳计算技术研究所有限公司沈阳高精数控技术有限公司

摘要 :

本发明涉及一种用于数控总线的安全可控通信方法,包括以下步骤:将安全数据报文发送方作为主站,将安全数据报文接收方作为从站;在主站中使用偏移模块计算产生CRC校验值,封装入安全数据报文中,并将该安全数据报文发送至从站;从站根据所用偏移模块对接收到的安全数据报文进行CRC校验;如果校验正确,则从站继续由所用偏移模块计算产生CRC校验值,并封装入应答数据报文中,发送至主站;主站根据所用偏移模块对接收到的应答数据报文进行CRC校验;如果校验正确,则判断通信是否结束,如果没有结束,则主站继续向从站发送下一个安全数据报文;若结束,则停止此次通信。本发明具有安全强度可控、剩余错误率低等特点。

权利要求 :

1.一种用于数控总线的安全可控通信方法,其特征在于包括以下步骤:

将安全数据报文发送方作为主站,将安全数据报文接收方作为从站;

将主站中的安全数据报文通过偏移功能模块生成CRC校验值,并将CRC校验值封装入安全数据报文中,并发送至从站;

从站通过使用偏移功能模块对接收到的安全数据报文进行CRC校验;如果校验正确,从站通过偏移功能模块生成新的CRC校验值,并将新的CRC校验值封装入应答数据报文中,然后发送至主站;

主站通过使用偏移功能模块对接收到的应答数据报文进行CRC校验;如果校验正确,则判断通信是否结束,若主站需要结束,则停止此次通信;

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

所述将主站中的安全数据报文通过偏移功能模块生成CRC校验值的处理步骤如下:

在初始化过程中,主站和从站使用数值0作为偏移数和安全比特数;

在数据传输过程中,主站在偏移数表中按顺序选择数据,与上次接收到的偏移数进行求和模包长计算,生成本次数据传输所使用的偏移数,并根据用户/控制系统需求选择安全比特数;

主站根据生成的偏移数和安全比特数分别在上一次接收到的应答数据报文和本次待发送的安全数据报文中提取出关联数据,并由两个关联数据共同计算生成冗余数据;

主站由本次待发送的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值。

2.按权利要求1所述的用于数控总线的安全可控通信方法,其特征在于:如果从站对接收到的安全数据报文进行CRC校验的结果不正确,则请求主站重新发送该安全数据报文,返回到主站中重新生成CRC校验值步骤。

3.按权利要求1所述的用于数控总线的安全可控通信方法,其特征在于:如果主站对接收到的应答数据报文进行CRC校验的结果不正确,则请求从站重新发送该应答数据报文,返回到从站中重新生成CRC校验值步骤。

4.按权利要求1所述的用于数控总线的安全可控通信方法,其特征在于:如果通信不结束,则返回到主站中重新生成CRC校验值步骤。

5.按权利要求1所述的用于数控总线的安全可控通信方法,其特征在于:所述从站对接收到的安全数据报文进行CRC校验处理步骤如下:从站在偏移数表中按顺序选择数据,计算生成偏移数,并读取所接收到的安全数据报文中的安全比特数;

从站根据偏移数和安全比特数分别在上一次已发送的应答数据报文和本次接收到的安全数据报文中提取关联数据,并由两个关联数据共同计算生成冗余数据;

从站由本次接收到的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值,并与本次接收到的安全数据报文中的CRC校验值进行比较;若结果一致,则校验正确;否则校验不正确。

6.按权利要求1所述的用于数控总线的安全可控通信方法,其特征在于:所述从站通过偏移功能模块生成新的CRC校验值处理步骤如下:从站在偏移数表中按顺序选择下一个数据,进行计算生成偏移数,并根据用户/控制系统需求重新选择安全比特数,将上一次接收到的安全数据报文和本次待发送的应答数据报文作为关联数据的来源,计算生成CRC校验值。

7.按权利要求1所述的用于数控总线的安全可控通信方法,其特征在于:所述主站对接收到的应答数据报文进行CRC校验包括以下过程:主站在偏移数表中按顺序选择下一个数据,进行计算生成偏移数,并读取本次收到的应答数据报文中的安全比特数,将上一次已发送的安全数据报文和本次接收到的应答数据报文作为关联数据的来源,计算生成CRC校验值并进行校验。

说明书 :

一种用于数控总线的安全可控通信方法

技术领域

[0001] 本发明涉及通信技术领域,具体的说是一种用于数控系统现场总线的安全可控通信方法。

背景技术

[0002] 在工业控制领域中,总线作为承载数据的媒介、传输命令的通道和连接各接口的纽带,对整个控制系统高效、精确、安全运行起着至关重要的作用。但总线应用环境复杂,使数据在传输过程中会由于系统故障、电磁干扰等问题出现一定的损坏现象,从而出现消息重复、删除、插入、不正确序列、破坏、延时及伪装等错误。数据损坏如果不能及时被发现,将会给控制系统带来设备损失和人身伤害。因此,总线数据的传输安全已经成为总线通信安全性研究的重点。
[0003] 在已有总线安全通信机制中,数据链路层循环冗余校验CRC已经作为一种规范,成为各种总线必不可少的安全功能。数控总线作为总线在数控系统中的应用,同样采用了这种安全校验功能。目前,数控系统正在向开放式、网络化方向发展,同时数控系统自身正在经历高速、高精的发展过程,而传统循环冗余校验方法采用单包校验,静态校验的形式,造成剩余错误率较高、安全强度不可变等缺陷。传统循环冗余校验方法已经不能满足数控系统高速和高精度的要求。

发明内容

[0004] 针对上述传统循环冗余校验方法存在的缺陷,本发明要解决的技术问题是提供一种能够增强数控总线通信安全强度可控性高和降低剩余错误率的用于数控总线的安全可控通信方法。
[0005] 为解决上述技术问题,本发明采用的技术方案是:
[0006] 一种用于数控总线的安全可控通信方法包括以下步骤:
[0007] 将安全数据报文发送方作为主站,将安全数据报文接收方作为从站;
[0008] 将主站中的安全数据报文通过偏移功能模块生成CRC校验值,并将CRC校验值封装入安全数据报文中,并发送至从站;
[0009] 从站通过使用偏移功能模块对接收到的安全数据报文进行CRC校验;如果校验正确,从站通偏移功能模块生成新的CRC校验值,并将CRC校验值封装入应答数据报文中,然后发送至主站;
[0010] 主站通过使用偏移模块对接收到的应答数据报文进行CRC校验;如果校验正确,则判断通信是否结束,若主站需要结束,则停止此次通信。
[0011] 如果从站对接收到的安全数据报文进行CRC校验的结果不正确,则请求主站重新发送该安全数据报文,返回到主站中重新生成CRC校验值步骤。
[0012] 如果主站对接收到的应答数据报文进行CRC校验的结果不正确,则请求从站重新发送该应答数据报文,返回到从站中重新生成CRC校验值步骤。
[0013] 如果通信不结束,则返回到主站中重新生成CRC校验值步骤。
[0014] 所述安全数据报文包括有效数据位、状态位、序列号、偏移数、安全比特数和CRC校验值;其中有效数据位用来存放从站执行操作的命令;状态位用于识别通信状态;序列号用于识别安全数据报文顺序;偏移数用于生成选取关联数据的起始位;安全比特数用于标识关联数据选取的位数;CRC校验值用于进行CRC校验。
[0015] 所述在主站中使用偏移模块生成CRC校验值的处理步骤如下:
[0016] 在初始化过程中,主站和从站使用数值0作为偏移数和安全比特数;
[0017] 在数据传输过程中,主站在偏移数表中按顺序选择数据,与上次接收到的偏移数进行求和模包长计算,生成本次数据传输所使用的偏移数,并根据用户/控制系统需求选择安全比特数。
[0018] 主站根据生成的偏移数和安全比特数分别在上一次接收到的应答数据报文和本次待发送的安全数据报文中提取出关联数据,并由两个关联数据共同计算生成冗余数据。
[0019] 主站由本次待发送的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值。
[0020] 所述从站对接收到的安全数据报文进行CRC校验处理步骤如下:
[0021] 从站在偏移数表中按顺序选择数据,计算生成偏移数,并读取所接收到的安全数据报文中的安全比特数。
[0022] 从站根据偏移数和安全比特数分别在上一次已发送的应答数据报文和本次接收到的安全数据报文中提取关联数据,并由两个关联数据共同计算生成冗余数据。
[0023] 从站由本次接收到的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值,并与本次接收到的安全数据报文中的CRC校验值进行比较。若结果一致,则校验正确;否则校验不正确。
[0024] 所述从站重新生成CRC校验值处理步骤如下:从站在偏移数表中按顺序选择下一个数据,进行计算生成偏移数,并根据用户/控制系统需求重新选择安全比特数,将上一次接收到的安全数据报文和本次待发送的应答数据报文作为关联数据的来源,计算生成CRC校验值。
[0025] 所述主站对接收到的应答数据报文进行CRC校验包括以下过程:主站在偏移数表中按顺序选择下一个数据,进行计算生成偏移数,并读取本次收到的应答数据报文中的安全比特数,将上一次已发送的安全数据报文和本次接收到的应答数据报文作为关联数据的来源,计算生成CRC校验值并进行校验。
[0026] 本发明具有以下有益效果及优点:
[0027] 1.安全强度可控。由于本发明方法中,采用安全比特数决定关联数据的长度,而关联数据的长度又决定了冗余数据重复的概率,进而影响CRC校验值的重复率,因此可以通过选择不同的安全比特数获得所需的安全强度。
[0028] 2.剩余错误率低。由于本发明方法既采用偏移数生成起始位的方法对关联数据进行选位操作,同时又采用安全比特数决定关联数据的长度,因此即使在多个连续数据报文内容相同的情况下,由于所选关联数据的起始位和长度不同,也会产生不断变化的CRC校验值,从而增强了CRC校验值的动态性,降低了剩余错误率。

附图说明

[0029] 图1为本发明方法应用的数控总线系统结构图;
[0030] 图2为本发明方法通信流程图;
[0031] 图3为本发明方法中数控总线安全数据报文结构图;
[0032] 图4为本发明方法通信结构流程图;
[0033] 图5A为本发明方法中CRC校验值生成过程示意图;
[0034] 图5B为本发明方法中CRC校验过程示意图。

具体实施方式

[0035] 如图1所示,为本发明方法所涉及的数控总线系统结构图。该图中数控系统作为发送端,是数控总线系统的主站;伺服驱动装置、急停装置、传感器装置和I/O装置等作为n个接收端是数控总线系统的n个从站;主站与n个从站之间通过数控总线进行安全数据报文的传输。
[0036] 如图2所示,本发明方法包括以下步骤:
[0037] 将安全数据报文发送方作为主站,将安全数据报文接收方作为从站;
[0038] 将主站中的安全数据报文通过偏移功能模块生成CRC校验值,并将CRC校验值封装入安全数据报文中,并发送至从站;
[0039] 从站通过使用偏移功能模块对接收到的安全数据报文进行CRC校验;如果校验正确,从站通偏移功能模块生成新的CRC校验值,并将CRC校验值封装入应答数据报文中,然后发送至主站;
[0040] 主站通过使用偏移模块对接收到的应答数据报文进行CRC校验;如果校验正确,则判断通信是否结束,若主站需要结束,则停止此次通信。
[0041] 如果从站对接收到的安全数据报文进行CRC校验的结果不正确,则请求主站重新发送该安全数据报文,返回到主站中重新生成CRC校验值步骤。
[0042] 如果主站对接收到的应答数据报文进行CRC校验的结果不正确,则请求从站重新发送该应答数据报文,返回到从站中重新生成CRC校验值步骤。
[0043] 如果通信不结束,则返回到主站中重新生成CRC校验值步骤。
[0044] 所述安全数据报文包括有效数据位、状态位、序列号、偏移数、安全比特数和CRC校验值;其中有效数据位用来存放从站执行操作的命令;状态位用于识别通信状态;序列号用于识别安全数据报文顺序;偏移数用于生成选取关联数据的起始位;安全比特数用于标识关联数据选取的位数;CRC校验值用于进行CRC校验。
[0045] 所述在主站中使用偏移模块生成CRC校验值的处理步骤如下:
[0046] 在初始化过程中,主站和从站使用数值0作为偏移数和安全比特数;
[0047] 在数据传输过程中,主站在偏移数表中按顺序选择数据,与上次接收到的偏移数进行求和模包长计算,生成本次数据传输所使用的偏移数,并根据用户/控制系统需求选择安全比特数。
[0048] 主站根据生成的偏移数和安全比特数分别在上一次接收到的应答数据报文和本次待发送的安全数据报文中提取出关联数据,并由两个关联数据共同计算生成冗余数据。
[0049] 主站由本次待发送的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值。
[0050] 所述从站对接收到的安全数据报文进行CRC校验处理步骤如下:
[0051] 从站在偏移数表中按顺序选择数据,计算生成偏移数,并读取所接收到的安全数据报文中的安全比特数。
[0052] 从站根据偏移数和安全比特数分别在上一次已发送的应答数据报文和本次接收到的安全数据报文中提取关联数据,并由两个关联数据共同计算生成冗余数据。
[0053] 从站由本次接收到的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值,并与本次接收到的安全数据报文中的CRC校验值进行比较。若结果一致,则校验正确;否则校验不正确。
[0054] 所述从站重新生成CRC校验值处理步骤如下:从站在偏移数表中按顺序选择下一个数据,进行计算生成偏移数,并根据用户/控制系统需求重新选择安全比特数,将上一次接收到的安全数据报文和本次待发送的应答数据报文作为关联数据的来源,计算生成CRC校验值。
[0055] 所述主站对接收到的应答数据报文进行CRC校验包括以下过程:主站在偏移数表中按顺序选择下一个数据,进行计算生成偏移数,并读取本次收到的应答数据报文中的安全比特数,将上一次已发送的安全数据报文和本次接收到的应答数据报文作为关联数据的来源,计算生成CRC校验值并进行校验。
[0056] 如图3所示,为本发明所设计的安全数据报文,其中有效数据位中存放的有效数据属于数据域,状态位、序列号、偏移数、安全比特数以及CRC校验值中存放的控制数据属于控制域。其中,有效数据位存放从站执行操作的命令;状态位用于识别通信状态;序列号用于识别安全数据报文顺序;偏移数存放于偏移数表中,在CRC校验过程中,用于生成关联数据的起始位;安全比特数由用户/控制系统选择,用于标识关联数据选取的长度,从而控制安全强度;CRC校验值用于进行CRC校验,可发现通信过程中的传输错误。
[0057] 如图4所示,为本发明方法中起始安全数据报文传输示意图和过程安全数据报文传输示意图。
[0058] 主站和从站对偏移数和安全比特数进行初始化;
[0059] 主站计算生成起始位,同时根据用户/控制系统需求选择安全比特数。
[0060] 主站通过生成的起始位和安全比特数分别从上次接收的应答数据报文和本次待发送的安全数据报文中提取关联数据;
[0061] 由两个关联数据共同计算生成冗余数据,并主站由本次待发送的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值,并发送至从站;
[0062] 从站计算生成起始位,并读取所接收到的安全数据报文中的安全比特数;
[0063] 从站根据所生成的起始位和安全比特数分别在上一次已发送的应答数据报文和本次接收到的安全数据报文中提取关联数据;
[0064] 从站由两个关联数据共同计算生成冗余数据,并将由本次接收到的安全数据报文和冗余数据共同进行CRC计算,生成CRC校验值;
[0065] 从站将生成的CRC校验值与本次接收到的安全数据报文中的CRC校验值进行比较,如果两个校验值相等,则从站发送应答数据报文;
[0066] 从站根据接收到的安全数据报文,判断通信是否结束;如结束,终止通信;如不结束,返回到主站发送安全数据报文。
[0067] 图5A、5B为本发明方法中CRC校验值生成过程示意图和CRC校验过程示意图。其中,Swift()为偏移函数,用以按偏移数表选择偏移数;Swifti为偏移函数Swift()选择的偏移数;SBN为安全比特数,由用户/控制系统根据命令类型和需求选择;Si1和Si2为偏移数Swifti生成的二元二次不定方程的根;Sr为接收到的数据报文所使用关联数据的起始位,Ss为待发送的数据报文所使用关联数据的起始位;Sbr和Sbs为基础起始位,分别为上次传输所保存的Sr和Ss。
[0068] 如图5A所示,主站首先在偏移数表中由Swift()函数在偏移数表中按顺序选偏移数Swifti,进而得到Si1和Si2,并按照Si1<Si2的顺序排列;然后主站从缓存中读取基础起始位Sbr和Sbs,对Sbr和Si1、Sbs和Si2分别进行求和模包长计算,生成本次CRC校验值生成过程中使用的起始位Sr和Ss,并将Sr和Ss存入缓存中替换Sbr和Sbs;由用户/控制系统选择安全比特数SBN,作为关联数据的长度;然后根据起始位Sr和Ss以及SBN从接收到的应答数据和待发送的安全数据中提取关联数据,并将两个关联数据进行冗余计算得到冗余数据;最后使用本次待发送的安全数据和冗余数据共同进行CRC计算,生成CRC校验值。
[0069] 如图5B所示,从站首先读取接收到的安全数据报文中的偏移数Swifti′,并与偏移数表中标记的偏移数Swifti进行比较,若相等,则使用Swifti生成Si1和Si2,并按照Si1<Si2的顺序排列;然后从缓存中读取基础起始位Sbr和Sbs,对Sbr和Si1、Sbs和Si2分别进行求和模包长计算,生成本次CRC校验过程中使用的起始位Sr和Ss,并将Sr和Ss存入缓存中替换Sbr和Sbs;读取接收到的安全数据报文中的安全比特数SBN,作为本次校验所使用的关联数据的长度;然后根据起始位Sr和Ss以及SBN从接收到的安全数据和待发送的应答数据中提取关联数据,并将两个关联数据进行冗余计算得到冗余数据;最后使用本次待发送的应答数据和冗余数据共同进行CRC计算,生成CRC校验值,并与接收到的安全数据报文中的CRC校验值进行比较,若相同,则通过校验;否则,校验错误,请求重传。