一种用于数控总线的消息安全传输方法

文档序号:7723721阅读:148来源:国知局
专利名称:一种用于数控总线的消息安全传输方法
技术领域
本发明涉及通信技术领域,具体的说是一种用于数控总线的消息安全传输方法。
背景技术
基于总线的控制系统在通信过程中通常会有通信错误发生且会带来连锁反应,最 初可能由于硬软件系统性错误、外界干扰等一些基本错误,引发通信过程中消息错误的产 生,主要包括消息重复、删除、插入、不正确序列、破坏、延时及伪装等,其可能进一步导致系 统错误,从而影响到控制系统的正常通信。通信的基础是消息传输,错误的消息会给控制系 统带来危害。因此,通信安全性重点在于消息的安全传输。解决此问题的一种有效方法是在现有总线协议基础上增加安全通信层以增强通 信安全性,安全通信层首先对需传输的消息数据进行校验,然后将该消息数据与校验值一 起封装成消息数据报文发送给接收端。接收端通过计算消息数据报文中消息数据的校验值 并与接收到的校验值进行比较,据此判断该消息数据报文在传输过程中是否出错。目前国 内外相关研究领域对消息数据进行校验主要采用两种方法,一种方法是采用传统CRC校验 方式,因此通信过程中如果存在连续多个相同的消息数据,则可能会产生连续多个相同的 CRC校验值,这可能使接收端无法判断新接收到的这些消息数据报文是否有效。另一种方法 是在计算CRC校验值时增加起始值以解决连续相同消息数据问题,但获得起始值的通常方 式是发送端和接收端都必须利用所接收到的上一次消息数据报文中的CRC校验值。因此这 种方法使得发送端和接收端的校验存在严重依赖关系,每次发送端要发送新消息数据报文 时必须等待接收到的上一个消息数据报文中的CRC校验值,经计算产生新的CRC校验值后 方能继续发送。而数控总线作为一种面向特殊领域应用的控制总线,要求总线系统满足对周期 性、实时性、同步性、可靠性、安全性及开放性的要求。总线通信协议由物理层、数据链路层、 应用层与用户层行规组成。用户层行规里定义了两种命令,异步命令和同步命令。异步命 令用于数控总线系统的定位及快移等操作,同步命令则用于数控总线系统的多轴联动插补 操作。因此,两种不同的需求要求数控总线要同时支持异步及同步通信。其中异步通信是 指当主站有控制的需求时才向从站发送新消息,在发送新消息时主站需确认所发送的上一 条消息的反馈已经回来,异步通信与数控系统的通信周期没有直接关系;同步通信则是指 主站在每个通信周期到来时,都必须要向从站发送下一个新消息。同步通信不用考虑主站 所发送的上一个消息是否已经反馈回来,在每个周期都必须要发送新的消息,不能等待。据 此可知,现存的进行CRC校验值计算的几种消息传输方法都难以满足数控总线的异步及同 步通信要求,特别是同步通信。

发明内容
针对现有技术中存在的上述不足之处,本发明要解决的技术问题是提出一种在数 控总线主站和从站之间以保证数控总线系统中异步及同步通信要求的数控总线的消息安全传输方法。为实现上述目的,本发明采用以下技术方案本发明一种用于数控总线的消息安全传输方法,包括以下步骤
将发送双方分别作为主站及从站;在主站中计算产生CRC校验值,封装入消息安全报文中,并将该消息安全报文发 送给从站;从站对接收到的消息安全报文进行CRC校验;如果正确,则从站重新计算CRC校 验值,封装入新消息安全报文中,并向主站发送该新消息安全报文;主站对接收到的新消息安全报文进行CRC校验;如果正确,则判断通信是否结束, 如果没有结束,则主站继续向从站发送下一个消息安全报文;否则,结束此次通信。如果从站对接收到的消息安全报文进行CRC校验不正确,则要求主站重新发送该 消息安全报文,转至在主站中计算产生CRC校验值步骤。如果主站对接收到的新消息安全报文进行CRC校验不正确,则要求从站重新发送 该新消息安全报文,转至从站重新计算CRC校验值步骤。所述在主站中计算产生CRC校验值包括以下过程以从站站点的地址编号作为主站所使用的第一个动态起始值;以主站上一次计算所产生的CRC校验值作为主站本次所使用的动态起始值;使用动态起始值与本次发送的消息安全报文中的有效数据共同计算产生本次消 息安全报文中的CRC校验值。所述消息安全报文包括有效数据位、状态位、序列号位以及动态CRC位,其中,有 效数据位存放的是从站执行操作的命令,状态位用于识别通信状态;序列号位用于识别消 息安全报文顺序;动态CRC位用于进行CRC校验。所述从站对接收到的消息安全报文进行CRC校验包括以下步骤通过使用上次主站产生的CRC校验值与从站本次接收到的消息安全报文中的有 效数据共同进行CRC计算;将计算结果与从站本次接收到的消息安全报文中的CRC校验值进行比较,如果计 算结果与从站本次接收到的消息安全报文中的CRC校验值一致,则校验正确;否则校验不 正确。所述从站重新计算CRC校验值为从站使用本次接收到的消息安全报文中的CRC 校验值作为起始值,与新消息安全报文中的有效数据共同进行CRC计算,所得结果即为新 消息安全报文中的CRC校验值。所述主站对接收到的新消息安全报文进行CRC校验包括以下步骤通过使用上次主站产生的CRC校验值与主站本次接收到的新消息安全报文中的 有效数据共同进行CRC计算;将计算结果与主站本次接收到的新消息安全报文中的CRC校验值进行比较,如果 计算结果与主站本次接收到的新消息安全报文中的CRC校验值一致,则校验正确;否则校 验不正确。所述主站向从站发送下一个消息安全报文包括以下步骤主站所发送下一个消息安全报文中的CRC校验值由主站上一次产生的CRC校验值 与下一个消息安全报文中的有效数据共同进行CRC计算而得;
将该CRC校验值封装入下一个消息安全报文中,并将完整的下一个消息安全报文 发送给从站。本发明具有以下有益效果及优点1.能够同时满足数控总线通信领域异步及同步通信要求。由于本发明方法采用了 动态CRC校验方法,其中CRC校验值由一动态产生的起始值与消息安全报文中的有效数据 共同进行CRC计算而得,并且起始值均只由主站产生,因此能够同时满足数控总线异步及 同步通信要求。2.剩余错误率低。由于本发明方法中,主站(或从站)本次用于传输的CRC校验 值是由主站上一次计算产生的CRC校验值与主站(或从站)本次用于传输的有效数据共同 进行CRC计算产生的,并且主站(或从站)本次的CRC校验也是由主站上一次计算产生的 CRC校验值和主站(或从站)本次接收到的有效数据共同进行CRC计算完成的,所以当主站 上一次计算产生的CRC校验值发生传输错误但却未被检测出来时,一般都会造成主站(或 从站)本次CRC校验无法通过,可以通过CRC校验的可能性非常小;因此根据本发明所述方 法,这种情况下需要主站重传上一个消息安全报文,因而在很大程度上降低了剩余错误率。


图1为本发明方法应用的数控总线系统结构图;图2为本发明方法流程图;图3为本发明方法中数控总线消息安全报文内容示意图;图4A为本发明方法中起始消息安全报文传输示意图;图4B为本发明方法中过程消息安全报文传输示意图;图5为本发明方法中数控总线的同步通信机制示意图;图6为本发明方法中数控总线消息安全报文重发机制示意图;图7为使用本发明方法所得的剩余错误率比较图。
具体实施例方式如图1所示,为本发明方法所涉及的数控总线系统结构图。该图中数控装置作为 发送端,是数控总线系统的主站;伺服驱动装置、主轴驱动装置、传感器装置和I/O装置等 作为n个接收端分别是数控总线系统的n个从站;主站与n个从站之间通过数控总线进行 消息安全报文的传输。如图2所示,本发明方法应用于数控总线系统结构中,包括以下步骤将发送双方分别作为主站及从站;在主站中计算产生CRC (Cyclic Redundancy Check,循环冗余校验)校验值,封装 入消息安全报文中,并将该消息安全报文发送给从站;从站对接收到的消息安全报文进行CRC校验;如果正确,则从站重新计算CRC校验 值,封装入新消息安全报文中,并向主站发送该新消息安全报文;主站对接收到的新消息安全报文进行CRC校验;如果正确,则判断通信是否结束, 如果没有结束,则主站继续向从站发送下一个消息安全报文;否则,结束此次通信。
6
上述步骤中,如果从站对接收到的消息安全报文进行CRC校验不正确,则要求主 站重新发送该消息安全报文,转至在主站中计算产生CRC校验值步骤;如果主站对接收到 的新消息安全报文进行CRC校验不正确,则要求从站重新发送该新消息安全报文,转至从 站重新计算CRC校验值步骤。所述在主站中计算CRC校验值包括以下过程以从站站点的地址编号做为主站所使用的第一个动态起始值;以主站上一次计算所产生的CRC校验值做为主站本次所使用的动态起始值;由本次发送的消息安全报文中的有效数据与动态起始值共同计算产生本次CRC 校验值。所述从站对接收到的消息安全报文进行CRC校验包括以下步骤通过使用上次主站产生的CRC校验值与本次接收到的消息安全报文中的有效数 据共同进行CRC计算;将计算结果与本次接收到的消息安全报文中的CRC校验值进行比较,如果计算结 果与本次接收到的消息安全报文中的CRC校验值一致,则校验正确;否则校验不正确。所述从站重新计算CRC校验值为从站使用本次接收到的消息安全报文中的CRC 校验值做为起始值,与新消息安全报文中的有效数据共同进行CRC计算。所述主站对该新消息安全报文进行CRC校验包括以下步骤通过使用上次主站产生的CRC校验值与新消息安全报文中的有效数据共同进行 CRC计算;将计算结果与新消息安全报文中的CRC校验值进行比较,如果计算结果与本次接 收到的新消息安全报文中的CRC校验值一致,则校验正确;否则校验不正确。主站所发送下一个消息安全报文中的CRC校验值由主站上一次产生的CRC校验值 与下一个消息安全报文中的有效数据共同进行CRC计算而得;将该CRC校验值封装入下一个消息安全报文中,并将完整的下一个消息安全报文 发送给从站。如图3所示,为本发明所设计的消息安全报文,其中有效数据位中存放的有效数 据属于数据域,状态位、序列号位以及动态CRC位中存放的控制数据属于控制域。有效数 据来自用户层行规的异步及同步命令,是从站所需要的有用数据,主站用其与起始值共同 计算动态产生新的CRC校验值,用于安全校验;状态位用于存放所传输消息安全报文的状 态;序列号位用于存放主站和从站在产生新消息安全报文的同时所产生的序列顺序号;动 态CRC位用于存放由起始值和有效数据共同计算动态产生的CRC校验值。如图4A、4B所示,为本发明方法中起始消息安全报文传输示意图及过程消息安全 报文传输示意图。其中,CRC_ST_ADDR指每个从站的地址编号;有效数据Mi指主站发送的 第i个有效数据;有效数据Si指从站发送的第i个有效数据;CRC_Mi指主站发送第i个 消息安全报文时所动态生成的CRC校验值,也是产生下一个消息安全报文中的CRC校验值 即CRC_M(i+l)所需要的起始值,同时也是从站用于校验第i个消息安全报文所需要的起始 值;CRC_Si指从站所产生的第i个消息安全报文的校验值,主站通过计算CRC_Mi与Si — 起产生的校验值与CRC_Si进行比较,判断是否有错。通信开始时,主站采用与其通信的从站的地址编号CRC_ST_ADDR值作为主站和从站进行动态CRC计算的起始值,因为每个从站的CRC_ST_ADDR值在整个通信系统中都是唯 一的。通信过程中,主站负责动态生成CRC_Mi校验值,从站只需要利用主站所产生的CRC_ Mi值即可进行校验,同时主站也只利用CRC_Mi值进行校验。如图4A所示,主站首先发起连接,当主站与从站的连接建立后,主站开始向从站 发送第一个消息安全报文,该消息安全报文依次封装有有效数据Ml、表示消息安全报文状 态为正常发送状态的状态位、表示消息安全报文序列的序列号1和由从站的地址编号CRC_ ST_ADDR与消息安全报文中的有效数据Ml共同进行CRC计算得到的校验值CRC_M1。该消 息安全报文通过数控总线传输给从站;从站接收到该消息安全报文后,将消息安全报文中 的有效数据Ml、状态、序列号1以及校验值CRC_M1分别提取出来,先对序列号和状态进行 判断,再根据判断结果使用自身地址的地址编号CRC_ST_ADDR与消息安全报文中的有效数 据Ml共同进行CRC计算,将计算结果与提取出的校验值CRC_M1进行比较,由此完成校验处 理。从站在CRC校验通过以后,向主站发送新消息安全报文,该新消息安全报文依次封装有 有效数据S1、状态、序列号1和CRC_S1,其中CRC_S1是由刚刚提取出来的CRC_M1与有效数 据S1共同进行CRC计算得来的。从站发送的新消息安全报文经数控总线传输给主站,主站 接收到以后,将有效数据S1、状态、序列号1和校验值CRC_S1分别提取出来,先对序列号和 状态分别进行判断,再根据判断结果使用CRC_M1与新消息安全报文中的有效数据S1共同 进行CRC计算,将计算结果与提取出的校验值CRC_S1进行比较,由此完成校验处理。如此, 报文序列1的发送便已完成,校验值CRC_M1被存储,用于报文序列2的发送。报文序列2的发送与报文序列1类似,此时,主站所发送下一个消息安全报文中的 状态保持不变,序列号增加1,校验值CRC_M2是由CRC_M1与有效数据M2共同进行CRC计算 得到的;从站在接收到该下一个消息安全报文后,使用CRC_M1与该下一个消息安全报文中 的有效数据M2共同进行CRC计算,将计算结果同该下一个消息安全报文中的CRC_M2进行 比较,完成校验处理。从站发送下一个新消息安全报文时,该下一个新消息安全报文中的校 验值CRC_S2是由CRC_M2与该下一个新消息安全报文中的有效数据S2共同进行CRC计算 得到的;主站接收到该下一个新消息安全报文后,使用CRC_M2与该下一个新消息安全报文 中的有效数据S2共同进行CRC计算,将计算结果同该下一个新消息安全报文中的CRC_S2 进行比较,完成校验处理。如此,报文序列2的发送便已完成,校验值CRC_M2被存储,用于 报文序列3的发送。如图4B所示,可由报文序列1的发送过程和报文序列2的发送过程类推到报文序 列i的发送过程。此时,消息安全报文中依次封装有有效数据Mi、状态、序列号i和校验值 CRC_Mi,其中CRC_Mi是由校验值CRC_M(i-l)与消息安全报文中的有效数据Mi共同进行 CRC计算得到的;从站接收到该消息安全报文后,使用CRC_M(i-l)与该消息安全报文中的 有效数据Mi共同进行CRC计算,将计算结果同该消息安全报文中的CRC_Mi进行比较,完成 校验处理。从站发送新消息安全报文时,校验值CRC_Si是由CRC_Mi与该新消息安全报文 中的有效数据Si共同进行CRC计算得到的;主站接收到该新消息安全报文后,使用CRC_Mi 与该新消息安全报文息中的有效数据Si进行CRC计算,将计算结果同该新消息安全报文中 的CRC_S2进行比较,完成校验处理。如此,报文序列i的发送便已完成,校验值CRC_Mi被 存储,用于报文序列(i+1)的发送。本发明方法同时支持异步通信与同步通信,主站对即将发送的每一个消息安全报文的类型进行判断,如果是异步类型的消息安全报文,则将该消息安全报文发送出去以后, 等待从站对该消息安全报文的反馈后再发送下一个消息安全报文;如果是同步类型的消息 安全报文,则发送出去以后不用等待从站对该消息安全报文的反馈,在下一个周期继续发 送下一个消息安全报文。如图5所示,为同步通信过程,主站发送序列号为i的消息安全报文给从站后,接 收到的是从站反馈的序列号为i_n的新消息安全报文,主站没有等待从站反馈的序列号 为i的新消息安全报文,而是在通信周期T后继续向从站发送下一个消息安全报文i+1 ; 由此继续,主站发送序列号为i+m的消息安全报文给从站后,接收到的是从站反馈的序列 号为i+m-n的新消息安全报文,主站在通信周期T后继续向从站发送下一个消息安全报文 i+m+l0主站对接收到的消息安全报文的校验处理方法使用的起始值是主站发送的具有 相同序列号消息安全报文中的CRC校验值,从站对所接收消息安全报文中的校验处理方法 使用的起始值是主站发送的上一序列号消息安全报文中的CRC校验值,因此,主站与从站 的校验处理使用的起始值均为主站所产生的CRC校验值,从站产生的CRC校验值不需存储。 所以,主站每隔一个通信周期T,都可以发送一个消息安全报文,该消息安全报文的序列号 从i到i+m+1,是按序增长的;从站每隔一个通信周期T反馈一个新消息安全报文。因此,本发明方法可同时支持数控总线系统的异步通信与同步通信。主站根据所 发送消息安全报文的同步性或者异步性,来决定是否需要等待其新消息安全报文;从站按 序接收主站所发送的消息安全报文,并且进行相应的反馈。如图6所示,在消息安全报文重发机制中,主站发送序列号为i的消息安全报文给 从站,从站接收到以后对其进行CRC校验处理,发现校验不能通过,则向主站第1次发送消 息安全报文i的重发请求;主站收到第1次重发请求以后,重新发送消息安全报文i,从站 收到以后对其再一次进行CRC校验处理,发现校验仍然不能通过,则第2次向主站发送消息 安全报文i的重发请求;如此继续,主站统计消息安全报文i的重发次数,如果该次数大于 最大允许次数N,则主站认为是序列号为(i-1)的消息安全报文在传输过程中出现了错误, 但未被校验出来,所以主站向从站发送消息安全报文(i_l),并等待反馈。此为本发明方法 中消息安全报文重发机制的主要过程。为测试本发明方法的性能,在SSB(SynChr0n0uS-Serial-BuS,同步串行总线)数 控总线上进行了实验,使用MATLAB软件工具对本发明所述方法进行数据采集,并统计本发 明所述通信方法的剩余错误率PM。其中剩余错误率指在解码校验之后仍然没有被检测 到的已经被破坏的传输消息所占的比例,即没有被检测出的错误位的数量与所有传输位的 总数的比值。通常来讲,剩余错误率与消息长度1、生成多项式g(x)以及位错误率P有 关。位错误率P表示通信过程中发生错误的位的数量与所有传输的位的数量的比值。对 于传统的CRC校验,无法检测的错误主要分为两种情况,第一种是只有有效数据发生错误, 而CRC校验值却没有发生错误;第二种是有效数据和CRC校验值都发生了错误。而对于本 发明所述方法,由于即将用于传输的CRC_Mi校验值是由上一个CRC_M(i-l)校验值与即将 用于传输的有效数据Mi共同产生的,而CRC_Mi的校验也是由上一个CRC_M(i-l)和有效数 据Mi共同完成的,所以当CRC_M(i-l)校验值发生传输错误但却未被检测出来时,一般都会 造成CRC_Mi校验无法通过,CRC_Mi可以通过校验的可能性非常小;因此根据本发明所述方法,这种情况下需要重传有效数据M(i-l)与上一个CRC_M(i-l)校验值,因而在很大程度上 降低了剩余错误率PM。本发明方法的测试环境SSB(SynChr0n0uS-Serial-BuS,同步串行总线)数控 总线;工控机硬件平台为Intel Pentium 4双核3. 00GHz CPU,512MB内存,操作系统为 Microsoftffindows XP Professional ;数据采集软件为 MATLAB 7.0。实验主要用于测试本发明方法和传统方法之间的消息安全通信性能对比,评价指 标为剩余错误率Pre。本发明所使用的实验方法使用了实际测试加MATLAB仿真计算相结合 以采集数据与分析性能。如图7所示,黑色实线和黑色虚线分别为对本发明方法和传统方法进行安全性能 测试结果曲线。当位错误率P的取值在(0,0. 5]情况下,传统方法产生的剩余错误率在 10_9到10_5之间,而本发明所述方法产生的剩余错误率P,e在10_16到10_12之间,剩余错误率
有了大幅度的降低。这意味着本发明所述方法能够检测出更多的错误位。因此,本发明 方法能保证数控总线的异步及同步消息安全传输。
权利要求
一种用于数控总线的消息安全传输方法,其特征在于包括以下步骤将发送双方分别作为主站及从站;在主站中计算产生CRC校验值,封装入消息安全报文中,并将该消息安全报文发送给从站;从站对接收到的消息安全报文进行CRC校验;如果正确,则从站重新计算CRC校验值,封装入新消息安全报文中,并向主站发送该新消息安全报文;主站对接收到的新消息安全报文进行CRC校验;如果正确,则判断通信是否结束,如果没有结束,则主站继续向从站发送下一个消息安全报文;否则,结束此次通信。
2.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于如果从站对 接收到的消息安全报文进行CRC校验不正确,则要求主站重新发送该消息安全报文,转至 在主站中计算产生CRC校验值步骤。
3.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于如果主站对 接收到的新消息安全报文进行CRC校验不正确,则要求从站重新发送该新消息安全报文, 转至从站重新计算CRC校验值步骤。
4.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于所述在主站 中计算产生CRC校验值包括以下过程以从站站点的地址编号作为主站所使用的第一个动态起始值;以主站上一次计算所产生的CRC校验值作为主站本次所使用的动态起始值;使用动态起始值与本次发送的消息安全报文中的有效数据共同计算产生本次消息安 全报文中的CRC校验值。
5.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于所述消息安 全报文包括有效数据位、状态位、序列号位以及动态CRC位,其中,有效数据位存放的是从 站执行操作的命令,状态位用于识别通信状态;序列号位用于识别消息安全报文顺序;动 态CRC位用于进行CRC校验。
6.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于所述从站对 接收到的消息安全报文进行CRC校验包括以下步骤通过使用上次主站产生的CRC校验值与从站本次接收到的消息安全报文中的有效数 据共同进行CRC计算;将计算结果与从站本次接收到的消息安全报文中的CRC校验值进行比较,如果计算结 果与从站本次接收到的消息安全报文中的CRC校验值一致,则校验正确;否则校验不正确。
7.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于所述从站重 新计算CRC校验值为从站使用本次接收到的消息安全报文中的CRC校验值作为起始值,与 新消息安全报文中的有效数据共同进行CRC计算,所得结果即为新消息安全报文中的CRC 校验值。
8.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于所述主站对 接收到的新消息安全报文进行CRC校验包括以下步骤通过使用上次主站产生的CRC校验值与主站本次接收到的新消息安全报文中的有效 数据共同进行CRC计算;将计算结果与主站本次接收到的新消息安全报文中的CRC校验值进行比较,如果计算结果与主站本次接收到的新消息安全报文中的CRC校验值一致,则校验正确;否则校验不 正确。
9.按权利要求1所述的用于数控总线的消息安全传输方法,其特征在于所述主站向 从站发送下一个消息安全报文包括以下步骤主站所发送下一个消息安全报文中的CRC校验值由主站上一次产生的CRC校验值与下 一个消息安全报文中的有效数据共同进行CRC计算而得;将该CRC校验值封装入下一个消息安全报文中,并将完整的下一个消息安全报文发送 给从站。
全文摘要
本发明公开一种用于数控总线的消息安全传输方法,包括以下步骤将发送双方分别作为主站及从站;在主站中计算产生CRC校验值,封装入消息安全报文中,并将该消息安全报文发送给从站;从站对接收到的消息安全报文进行CRC校验;如果正确,则从站重新计算CRC校验值,封装入新消息安全报文中,并向主站发送该新消息安全报文;主站对接收到的新消息安全报文进行CRC校验;如果正确,则判断通信是否结束,如果没有结束,则主站继续向从站发送下一个消息安全报文;否则,结束此次通信。本发明方法采用了动态CRC校验方法,起始值均只由主站产生,能够同时满足数控总线异步及同步通信要求,剩余错误率低。
文档编号H04L12/56GK101841388SQ200910300940
公开日2010年9月22日 申请日期2009年3月18日 优先权日2009年3月18日
发明者于东, 尹震宇, 岳东峰, 张晓辉, 杜少华, 盖荣丽, 胡毅 申请人:中国科学院沈阳计算技术研究所有限公司;沈阳高精数控技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1