專利名稱:一種用于數(shù)控總線的消息安全傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,具體的說(shuō)是一種用于數(shù)控總線的消息安全傳輸方法。
背景技術(shù):
基于總線的控制系統(tǒng)在通信過(guò)程中通常會(huì)有通信錯(cuò)誤發(fā)生且會(huì)帶來(lái)連鎖反應(yīng),最 初可能由于硬軟件系統(tǒng)性錯(cuò)誤、外界干擾等一些基本錯(cuò)誤,引發(fā)通信過(guò)程中消息錯(cuò)誤的產(chǎn) 生,主要包括消息重復(fù)、刪除、插入、不正確序列、破壞、延時(shí)及偽裝等,其可能進(jìn)一步導(dǎo)致系 統(tǒng)錯(cuò)誤,從而影響到控制系統(tǒng)的正常通信。通信的基礎(chǔ)是消息傳輸,錯(cuò)誤的消息會(huì)給控制系 統(tǒng)帶來(lái)危害。因此,通信安全性重點(diǎn)在于消息的安全傳輸。解決此問(wèn)題的一種有效方法是在現(xiàn)有總線協(xié)議基礎(chǔ)上增加安全通信層以增強(qiáng)通 信安全性,安全通信層首先對(duì)需傳輸?shù)南?shù)據(jù)進(jìn)行校驗(yàn),然后將該消息數(shù)據(jù)與校驗(yàn)值一 起封裝成消息數(shù)據(jù)報(bào)文發(fā)送給接收端。接收端通過(guò)計(jì)算消息數(shù)據(jù)報(bào)文中消息數(shù)據(jù)的校驗(yàn)值 并與接收到的校驗(yàn)值進(jìn)行比較,據(jù)此判斷該消息數(shù)據(jù)報(bào)文在傳輸過(guò)程中是否出錯(cuò)。目前國(guó) 內(nèi)外相關(guān)研究領(lǐng)域?qū)ο?shù)據(jù)進(jìn)行校驗(yàn)主要采用兩種方法,一種方法是采用傳統(tǒng)CRC校驗(yàn) 方式,因此通信過(guò)程中如果存在連續(xù)多個(gè)相同的消息數(shù)據(jù),則可能會(huì)產(chǎn)生連續(xù)多個(gè)相同的 CRC校驗(yàn)值,這可能使接收端無(wú)法判斷新接收到的這些消息數(shù)據(jù)報(bào)文是否有效。另一種方法 是在計(jì)算CRC校驗(yàn)值時(shí)增加起始值以解決連續(xù)相同消息數(shù)據(jù)問(wèn)題,但獲得起始值的通常方 式是發(fā)送端和接收端都必須利用所接收到的上一次消息數(shù)據(jù)報(bào)文中的CRC校驗(yàn)值。因此這 種方法使得發(fā)送端和接收端的校驗(yàn)存在嚴(yán)重依賴關(guān)系,每次發(fā)送端要發(fā)送新消息數(shù)據(jù)報(bào)文 時(shí)必須等待接收到的上一個(gè)消息數(shù)據(jù)報(bào)文中的CRC校驗(yàn)值,經(jīng)計(jì)算產(chǎn)生新的CRC校驗(yàn)值后 方能繼續(xù)發(fā)送。而數(shù)控總線作為一種面向特殊領(lǐng)域應(yīng)用的控制總線,要求總線系統(tǒng)滿足對(duì)周期 性、實(shí)時(shí)性、同步性、可靠性、安全性及開放性的要求。總線通信協(xié)議由物理層、數(shù)據(jù)鏈路層、 應(yīng)用層與用戶層行規(guī)組成。用戶層行規(guī)里定義了兩種命令,異步命令和同步命令。異步命 令用于數(shù)控總線系統(tǒng)的定位及快移等操作,同步命令則用于數(shù)控總線系統(tǒng)的多軸聯(lián)動(dòng)插補(bǔ) 操作。因此,兩種不同的需求要求數(shù)控總線要同時(shí)支持異步及同步通信。其中異步通信是 指當(dāng)主站有控制的需求時(shí)才向從站發(fā)送新消息,在發(fā)送新消息時(shí)主站需確認(rèn)所發(fā)送的上一 條消息的反饋已經(jīng)回來(lái),異步通信與數(shù)控系統(tǒng)的通信周期沒(méi)有直接關(guān)系;同步通信則是指 主站在每個(gè)通信周期到來(lái)時(shí),都必須要向從站發(fā)送下一個(gè)新消息。同步通信不用考慮主站 所發(fā)送的上一個(gè)消息是否已經(jīng)反饋回來(lái),在每個(gè)周期都必須要發(fā)送新的消息,不能等待。據(jù) 此可知,現(xiàn)存的進(jìn)行CRC校驗(yàn)值計(jì)算的幾種消息傳輸方法都難以滿足數(shù)控總線的異步及同 步通信要求,特別是同步通信。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的上述不足之處,本發(fā)明要解決的技術(shù)問(wèn)題是提出一種在數(shù) 控總線主站和從站之間以保證數(shù)控總線系統(tǒng)中異步及同步通信要求的數(shù)控總線的消息安全傳輸方法。為實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案本發(fā)明一種用于數(shù)控總線的消息安全傳輸方法,包括以下步驟
將發(fā)送雙方分別作為主站及從站;在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值,封裝入消息安全報(bào)文中,并將該消息安全報(bào)文發(fā) 送給從站;從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則從站重新計(jì)算CRC校 驗(yàn)值,封裝入新消息安全報(bào)文中,并向主站發(fā)送該新消息安全報(bào)文;主站對(duì)接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則判斷通信是否結(jié)束, 如果沒(méi)有結(jié)束,則主站繼續(xù)向從站發(fā)送下一個(gè)消息安全報(bào)文;否則,結(jié)束此次通信。如果從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn)不正確,則要求主站重新發(fā)送該 消息安全報(bào)文,轉(zhuǎn)至在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值步驟。如果主站對(duì)接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn)不正確,則要求從站重新發(fā)送 該新消息安全報(bào)文,轉(zhuǎn)至從站重新計(jì)算CRC校驗(yàn)值步驟。所述在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值包括以下過(guò)程以從站站點(diǎn)的地址編號(hào)作為主站所使用的第一個(gè)動(dòng)態(tài)起始值;以主站上一次計(jì)算所產(chǎn)生的CRC校驗(yàn)值作為主站本次所使用的動(dòng)態(tài)起始值;使用動(dòng)態(tài)起始值與本次發(fā)送的消息安全報(bào)文中的有效數(shù)據(jù)共同計(jì)算產(chǎn)生本次消 息安全報(bào)文中的CRC校驗(yàn)值。所述消息安全報(bào)文包括有效數(shù)據(jù)位、狀態(tài)位、序列號(hào)位以及動(dòng)態(tài)CRC位,其中,有 效數(shù)據(jù)位存放的是從站執(zhí)行操作的命令,狀態(tài)位用于識(shí)別通信狀態(tài);序列號(hào)位用于識(shí)別消 息安全報(bào)文順序;動(dòng)態(tài)CRC位用于進(jìn)行CRC校驗(yàn)。所述從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn)包括以下步驟通過(guò)使用上次主站產(chǎn)生的CRC校驗(yàn)值與從站本次接收到的消息安全報(bào)文中的有 效數(shù)據(jù)共同進(jìn)行CRC計(jì)算;將計(jì)算結(jié)果與從站本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值進(jìn)行比較,如果計(jì) 算結(jié)果與從站本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值一致,則校驗(yàn)正確;否則校驗(yàn)不 正確。所述從站重新計(jì)算CRC校驗(yàn)值為從站使用本次接收到的消息安全報(bào)文中的CRC 校驗(yàn)值作為起始值,與新消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算,所得結(jié)果即為新 消息安全報(bào)文中的CRC校驗(yàn)值。所述主站對(duì)接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn)包括以下步驟通過(guò)使用上次主站產(chǎn)生的CRC校驗(yàn)值與主站本次接收到的新消息安全報(bào)文中的 有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算;將計(jì)算結(jié)果與主站本次接收到的新消息安全報(bào)文中的CRC校驗(yàn)值進(jìn)行比較,如果 計(jì)算結(jié)果與主站本次接收到的新消息安全報(bào)文中的CRC校驗(yàn)值一致,則校驗(yàn)正確;否則校 驗(yàn)不正確。所述主站向從站發(fā)送下一個(gè)消息安全報(bào)文包括以下步驟主站所發(fā)送下一個(gè)消息安全報(bào)文中的CRC校驗(yàn)值由主站上一次產(chǎn)生的CRC校驗(yàn)值 與下一個(gè)消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算而得;
將該CRC校驗(yàn)值封裝入下一個(gè)消息安全報(bào)文中,并將完整的下一個(gè)消息安全報(bào)文 發(fā)送給從站。本發(fā)明具有以下有益效果及優(yōu)點(diǎn)1.能夠同時(shí)滿足數(shù)控總線通信領(lǐng)域異步及同步通信要求。由于本發(fā)明方法采用了 動(dòng)態(tài)CRC校驗(yàn)方法,其中CRC校驗(yàn)值由一動(dòng)態(tài)產(chǎn)生的起始值與消息安全報(bào)文中的有效數(shù)據(jù) 共同進(jìn)行CRC計(jì)算而得,并且起始值均只由主站產(chǎn)生,因此能夠同時(shí)滿足數(shù)控總線異步及 同步通信要求。2.剩余錯(cuò)誤率低。由于本發(fā)明方法中,主站(或從站)本次用于傳輸?shù)腃RC校驗(yàn) 值是由主站上一次計(jì)算產(chǎn)生的CRC校驗(yàn)值與主站(或從站)本次用于傳輸?shù)挠行?shù)據(jù)共同 進(jìn)行CRC計(jì)算產(chǎn)生的,并且主站(或從站)本次的CRC校驗(yàn)也是由主站上一次計(jì)算產(chǎn)生的 CRC校驗(yàn)值和主站(或從站)本次接收到的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算完成的,所以當(dāng)主站 上一次計(jì)算產(chǎn)生的CRC校驗(yàn)值發(fā)生傳輸錯(cuò)誤但卻未被檢測(cè)出來(lái)時(shí),一般都會(huì)造成主站(或 從站)本次CRC校驗(yàn)無(wú)法通過(guò),可以通過(guò)CRC校驗(yàn)的可能性非常?。灰虼烁鶕?jù)本發(fā)明所述方 法,這種情況下需要主站重傳上一個(gè)消息安全報(bào)文,因而在很大程度上降低了剩余錯(cuò)誤率。
圖1為本發(fā)明方法應(yīng)用的數(shù)控總線系統(tǒng)結(jié)構(gòu)圖;圖2為本發(fā)明方法流程圖;圖3為本發(fā)明方法中數(shù)控總線消息安全報(bào)文內(nèi)容示意圖;圖4A為本發(fā)明方法中起始消息安全報(bào)文傳輸示意圖;圖4B為本發(fā)明方法中過(guò)程消息安全報(bào)文傳輸示意圖;圖5為本發(fā)明方法中數(shù)控總線的同步通信機(jī)制示意圖;圖6為本發(fā)明方法中數(shù)控總線消息安全報(bào)文重發(fā)機(jī)制示意圖;圖7為使用本發(fā)明方法所得的剩余錯(cuò)誤率比較圖。
具體實(shí)施例方式如圖1所示,為本發(fā)明方法所涉及的數(shù)控總線系統(tǒng)結(jié)構(gòu)圖。該圖中數(shù)控裝置作為 發(fā)送端,是數(shù)控總線系統(tǒng)的主站;伺服驅(qū)動(dòng)裝置、主軸驅(qū)動(dòng)裝置、傳感器裝置和I/O裝置等 作為n個(gè)接收端分別是數(shù)控總線系統(tǒng)的n個(gè)從站;主站與n個(gè)從站之間通過(guò)數(shù)控總線進(jìn)行 消息安全報(bào)文的傳輸。如圖2所示,本發(fā)明方法應(yīng)用于數(shù)控總線系統(tǒng)結(jié)構(gòu)中,包括以下步驟將發(fā)送雙方分別作為主站及從站;在主站中計(jì)算產(chǎn)生CRC (Cyclic Redundancy Check,循環(huán)冗余校驗(yàn))校驗(yàn)值,封裝 入消息安全報(bào)文中,并將該消息安全報(bào)文發(fā)送給從站;從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則從站重新計(jì)算CRC校驗(yàn) 值,封裝入新消息安全報(bào)文中,并向主站發(fā)送該新消息安全報(bào)文;主站對(duì)接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則判斷通信是否結(jié)束, 如果沒(méi)有結(jié)束,則主站繼續(xù)向從站發(fā)送下一個(gè)消息安全報(bào)文;否則,結(jié)束此次通信。
6
上述步驟中,如果從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn)不正確,則要求主 站重新發(fā)送該消息安全報(bào)文,轉(zhuǎn)至在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值步驟;如果主站對(duì)接收到 的新消息安全報(bào)文進(jìn)行CRC校驗(yàn)不正確,則要求從站重新發(fā)送該新消息安全報(bào)文,轉(zhuǎn)至從 站重新計(jì)算CRC校驗(yàn)值步驟。所述在主站中計(jì)算CRC校驗(yàn)值包括以下過(guò)程以從站站點(diǎn)的地址編號(hào)做為主站所使用的第一個(gè)動(dòng)態(tài)起始值;以主站上一次計(jì)算所產(chǎn)生的CRC校驗(yàn)值做為主站本次所使用的動(dòng)態(tài)起始值;由本次發(fā)送的消息安全報(bào)文中的有效數(shù)據(jù)與動(dòng)態(tài)起始值共同計(jì)算產(chǎn)生本次CRC 校驗(yàn)值。所述從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn)包括以下步驟通過(guò)使用上次主站產(chǎn)生的CRC校驗(yàn)值與本次接收到的消息安全報(bào)文中的有效數(shù) 據(jù)共同進(jìn)行CRC計(jì)算;將計(jì)算結(jié)果與本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值進(jìn)行比較,如果計(jì)算結(jié) 果與本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值一致,則校驗(yàn)正確;否則校驗(yàn)不正確。所述從站重新計(jì)算CRC校驗(yàn)值為從站使用本次接收到的消息安全報(bào)文中的CRC 校驗(yàn)值做為起始值,與新消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算。所述主站對(duì)該新消息安全報(bào)文進(jìn)行CRC校驗(yàn)包括以下步驟通過(guò)使用上次主站產(chǎn)生的CRC校驗(yàn)值與新消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行 CRC計(jì)算;將計(jì)算結(jié)果與新消息安全報(bào)文中的CRC校驗(yàn)值進(jìn)行比較,如果計(jì)算結(jié)果與本次接 收到的新消息安全報(bào)文中的CRC校驗(yàn)值一致,則校驗(yàn)正確;否則校驗(yàn)不正確。主站所發(fā)送下一個(gè)消息安全報(bào)文中的CRC校驗(yàn)值由主站上一次產(chǎn)生的CRC校驗(yàn)值 與下一個(gè)消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算而得;將該CRC校驗(yàn)值封裝入下一個(gè)消息安全報(bào)文中,并將完整的下一個(gè)消息安全報(bào)文 發(fā)送給從站。如圖3所示,為本發(fā)明所設(shè)計(jì)的消息安全報(bào)文,其中有效數(shù)據(jù)位中存放的有效數(shù) 據(jù)屬于數(shù)據(jù)域,狀態(tài)位、序列號(hào)位以及動(dòng)態(tài)CRC位中存放的控制數(shù)據(jù)屬于控制域。有效數(shù) 據(jù)來(lái)自用戶層行規(guī)的異步及同步命令,是從站所需要的有用數(shù)據(jù),主站用其與起始值共同 計(jì)算動(dòng)態(tài)產(chǎn)生新的CRC校驗(yàn)值,用于安全校驗(yàn);狀態(tài)位用于存放所傳輸消息安全報(bào)文的狀 態(tài);序列號(hào)位用于存放主站和從站在產(chǎn)生新消息安全報(bào)文的同時(shí)所產(chǎn)生的序列順序號(hào);動(dòng) 態(tài)CRC位用于存放由起始值和有效數(shù)據(jù)共同計(jì)算動(dòng)態(tài)產(chǎn)生的CRC校驗(yàn)值。如圖4A、4B所示,為本發(fā)明方法中起始消息安全報(bào)文傳輸示意圖及過(guò)程消息安全 報(bào)文傳輸示意圖。其中,CRC_ST_ADDR指每個(gè)從站的地址編號(hào);有效數(shù)據(jù)Mi指主站發(fā)送的 第i個(gè)有效數(shù)據(jù);有效數(shù)據(jù)Si指從站發(fā)送的第i個(gè)有效數(shù)據(jù);CRC_Mi指主站發(fā)送第i個(gè) 消息安全報(bào)文時(shí)所動(dòng)態(tài)生成的CRC校驗(yàn)值,也是產(chǎn)生下一個(gè)消息安全報(bào)文中的CRC校驗(yàn)值 即CRC_M(i+l)所需要的起始值,同時(shí)也是從站用于校驗(yàn)第i個(gè)消息安全報(bào)文所需要的起始 值;CRC_Si指從站所產(chǎn)生的第i個(gè)消息安全報(bào)文的校驗(yàn)值,主站通過(guò)計(jì)算CRC_Mi與Si — 起產(chǎn)生的校驗(yàn)值與CRC_Si進(jìn)行比較,判斷是否有錯(cuò)。通信開始時(shí),主站采用與其通信的從站的地址編號(hào)CRC_ST_ADDR值作為主站和從站進(jìn)行動(dòng)態(tài)CRC計(jì)算的起始值,因?yàn)槊總€(gè)從站的CRC_ST_ADDR值在整個(gè)通信系統(tǒng)中都是唯 一的。通信過(guò)程中,主站負(fù)責(zé)動(dòng)態(tài)生成CRC_Mi校驗(yàn)值,從站只需要利用主站所產(chǎn)生的CRC_ Mi值即可進(jìn)行校驗(yàn),同時(shí)主站也只利用CRC_Mi值進(jìn)行校驗(yàn)。如圖4A所示,主站首先發(fā)起連接,當(dāng)主站與從站的連接建立后,主站開始向從站 發(fā)送第一個(gè)消息安全報(bào)文,該消息安全報(bào)文依次封裝有有效數(shù)據(jù)Ml、表示消息安全報(bào)文狀 態(tài)為正常發(fā)送狀態(tài)的狀態(tài)位、表示消息安全報(bào)文序列的序列號(hào)1和由從站的地址編號(hào)CRC_ ST_ADDR與消息安全報(bào)文中的有效數(shù)據(jù)Ml共同進(jìn)行CRC計(jì)算得到的校驗(yàn)值CRC_M1。該消 息安全報(bào)文通過(guò)數(shù)控總線傳輸給從站;從站接收到該消息安全報(bào)文后,將消息安全報(bào)文中 的有效數(shù)據(jù)Ml、狀態(tài)、序列號(hào)1以及校驗(yàn)值CRC_M1分別提取出來(lái),先對(duì)序列號(hào)和狀態(tài)進(jìn)行 判斷,再根據(jù)判斷結(jié)果使用自身地址的地址編號(hào)CRC_ST_ADDR與消息安全報(bào)文中的有效數(shù) 據(jù)Ml共同進(jìn)行CRC計(jì)算,將計(jì)算結(jié)果與提取出的校驗(yàn)值CRC_M1進(jìn)行比較,由此完成校驗(yàn)處 理。從站在CRC校驗(yàn)通過(guò)以后,向主站發(fā)送新消息安全報(bào)文,該新消息安全報(bào)文依次封裝有 有效數(shù)據(jù)S1、狀態(tài)、序列號(hào)1和CRC_S1,其中CRC_S1是由剛剛提取出來(lái)的CRC_M1與有效數(shù) 據(jù)S1共同進(jìn)行CRC計(jì)算得來(lái)的。從站發(fā)送的新消息安全報(bào)文經(jīng)數(shù)控總線傳輸給主站,主站 接收到以后,將有效數(shù)據(jù)S1、狀態(tài)、序列號(hào)1和校驗(yàn)值CRC_S1分別提取出來(lái),先對(duì)序列號(hào)和 狀態(tài)分別進(jìn)行判斷,再根據(jù)判斷結(jié)果使用CRC_M1與新消息安全報(bào)文中的有效數(shù)據(jù)S1共同 進(jìn)行CRC計(jì)算,將計(jì)算結(jié)果與提取出的校驗(yàn)值CRC_S1進(jìn)行比較,由此完成校驗(yàn)處理。如此, 報(bào)文序列1的發(fā)送便已完成,校驗(yàn)值CRC_M1被存儲(chǔ),用于報(bào)文序列2的發(fā)送。報(bào)文序列2的發(fā)送與報(bào)文序列1類似,此時(shí),主站所發(fā)送下一個(gè)消息安全報(bào)文中的 狀態(tài)保持不變,序列號(hào)增加1,校驗(yàn)值CRC_M2是由CRC_M1與有效數(shù)據(jù)M2共同進(jìn)行CRC計(jì)算 得到的;從站在接收到該下一個(gè)消息安全報(bào)文后,使用CRC_M1與該下一個(gè)消息安全報(bào)文中 的有效數(shù)據(jù)M2共同進(jìn)行CRC計(jì)算,將計(jì)算結(jié)果同該下一個(gè)消息安全報(bào)文中的CRC_M2進(jìn)行 比較,完成校驗(yàn)處理。從站發(fā)送下一個(gè)新消息安全報(bào)文時(shí),該下一個(gè)新消息安全報(bào)文中的校 驗(yàn)值CRC_S2是由CRC_M2與該下一個(gè)新消息安全報(bào)文中的有效數(shù)據(jù)S2共同進(jìn)行CRC計(jì)算 得到的;主站接收到該下一個(gè)新消息安全報(bào)文后,使用CRC_M2與該下一個(gè)新消息安全報(bào)文 中的有效數(shù)據(jù)S2共同進(jìn)行CRC計(jì)算,將計(jì)算結(jié)果同該下一個(gè)新消息安全報(bào)文中的CRC_S2 進(jìn)行比較,完成校驗(yàn)處理。如此,報(bào)文序列2的發(fā)送便已完成,校驗(yàn)值CRC_M2被存儲(chǔ),用于 報(bào)文序列3的發(fā)送。如圖4B所示,可由報(bào)文序列1的發(fā)送過(guò)程和報(bào)文序列2的發(fā)送過(guò)程類推到報(bào)文序 列i的發(fā)送過(guò)程。此時(shí),消息安全報(bào)文中依次封裝有有效數(shù)據(jù)Mi、狀態(tài)、序列號(hào)i和校驗(yàn)值 CRC_Mi,其中CRC_Mi是由校驗(yàn)值CRC_M(i-l)與消息安全報(bào)文中的有效數(shù)據(jù)Mi共同進(jìn)行 CRC計(jì)算得到的;從站接收到該消息安全報(bào)文后,使用CRC_M(i-l)與該消息安全報(bào)文中的 有效數(shù)據(jù)Mi共同進(jìn)行CRC計(jì)算,將計(jì)算結(jié)果同該消息安全報(bào)文中的CRC_Mi進(jìn)行比較,完成 校驗(yàn)處理。從站發(fā)送新消息安全報(bào)文時(shí),校驗(yàn)值CRC_Si是由CRC_Mi與該新消息安全報(bào)文 中的有效數(shù)據(jù)Si共同進(jìn)行CRC計(jì)算得到的;主站接收到該新消息安全報(bào)文后,使用CRC_Mi 與該新消息安全報(bào)文息中的有效數(shù)據(jù)Si進(jìn)行CRC計(jì)算,將計(jì)算結(jié)果同該新消息安全報(bào)文中 的CRC_S2進(jìn)行比較,完成校驗(yàn)處理。如此,報(bào)文序列i的發(fā)送便已完成,校驗(yàn)值CRC_Mi被 存儲(chǔ),用于報(bào)文序列(i+1)的發(fā)送。本發(fā)明方法同時(shí)支持異步通信與同步通信,主站對(duì)即將發(fā)送的每一個(gè)消息安全報(bào)文的類型進(jìn)行判斷,如果是異步類型的消息安全報(bào)文,則將該消息安全報(bào)文發(fā)送出去以后, 等待從站對(duì)該消息安全報(bào)文的反饋后再發(fā)送下一個(gè)消息安全報(bào)文;如果是同步類型的消息 安全報(bào)文,則發(fā)送出去以后不用等待從站對(duì)該消息安全報(bào)文的反饋,在下一個(gè)周期繼續(xù)發(fā) 送下一個(gè)消息安全報(bào)文。如圖5所示,為同步通信過(guò)程,主站發(fā)送序列號(hào)為i的消息安全報(bào)文給從站后,接 收到的是從站反饋的序列號(hào)為i_n的新消息安全報(bào)文,主站沒(méi)有等待從站反饋的序列號(hào) 為i的新消息安全報(bào)文,而是在通信周期T后繼續(xù)向從站發(fā)送下一個(gè)消息安全報(bào)文i+1 ; 由此繼續(xù),主站發(fā)送序列號(hào)為i+m的消息安全報(bào)文給從站后,接收到的是從站反饋的序列 號(hào)為i+m-n的新消息安全報(bào)文,主站在通信周期T后繼續(xù)向從站發(fā)送下一個(gè)消息安全報(bào)文 i+m+l0主站對(duì)接收到的消息安全報(bào)文的校驗(yàn)處理方法使用的起始值是主站發(fā)送的具有 相同序列號(hào)消息安全報(bào)文中的CRC校驗(yàn)值,從站對(duì)所接收消息安全報(bào)文中的校驗(yàn)處理方法 使用的起始值是主站發(fā)送的上一序列號(hào)消息安全報(bào)文中的CRC校驗(yàn)值,因此,主站與從站 的校驗(yàn)處理使用的起始值均為主站所產(chǎn)生的CRC校驗(yàn)值,從站產(chǎn)生的CRC校驗(yàn)值不需存儲(chǔ)。 所以,主站每隔一個(gè)通信周期T,都可以發(fā)送一個(gè)消息安全報(bào)文,該消息安全報(bào)文的序列號(hào) 從i到i+m+1,是按序增長(zhǎng)的;從站每隔一個(gè)通信周期T反饋一個(gè)新消息安全報(bào)文。因此,本發(fā)明方法可同時(shí)支持?jǐn)?shù)控總線系統(tǒng)的異步通信與同步通信。主站根據(jù)所 發(fā)送消息安全報(bào)文的同步性或者異步性,來(lái)決定是否需要等待其新消息安全報(bào)文;從站按 序接收主站所發(fā)送的消息安全報(bào)文,并且進(jìn)行相應(yīng)的反饋。如圖6所示,在消息安全報(bào)文重發(fā)機(jī)制中,主站發(fā)送序列號(hào)為i的消息安全報(bào)文給 從站,從站接收到以后對(duì)其進(jìn)行CRC校驗(yàn)處理,發(fā)現(xiàn)校驗(yàn)不能通過(guò),則向主站第1次發(fā)送消 息安全報(bào)文i的重發(fā)請(qǐng)求;主站收到第1次重發(fā)請(qǐng)求以后,重新發(fā)送消息安全報(bào)文i,從站 收到以后對(duì)其再一次進(jìn)行CRC校驗(yàn)處理,發(fā)現(xiàn)校驗(yàn)仍然不能通過(guò),則第2次向主站發(fā)送消息 安全報(bào)文i的重發(fā)請(qǐng)求;如此繼續(xù),主站統(tǒng)計(jì)消息安全報(bào)文i的重發(fā)次數(shù),如果該次數(shù)大于 最大允許次數(shù)N,則主站認(rèn)為是序列號(hào)為(i-1)的消息安全報(bào)文在傳輸過(guò)程中出現(xiàn)了錯(cuò)誤, 但未被校驗(yàn)出來(lái),所以主站向從站發(fā)送消息安全報(bào)文(i_l),并等待反饋。此為本發(fā)明方法 中消息安全報(bào)文重發(fā)機(jī)制的主要過(guò)程。為測(cè)試本發(fā)明方法的性能,在SSB(SynChr0n0uS-Serial-BuS,同步串行總線)數(shù) 控總線上進(jìn)行了實(shí)驗(yàn),使用MATLAB軟件工具對(duì)本發(fā)明所述方法進(jìn)行數(shù)據(jù)采集,并統(tǒng)計(jì)本發(fā) 明所述通信方法的剩余錯(cuò)誤率PM。其中剩余錯(cuò)誤率指在解碼校驗(yàn)之后仍然沒(méi)有被檢測(cè) 到的已經(jīng)被破壞的傳輸消息所占的比例,即沒(méi)有被檢測(cè)出的錯(cuò)誤位的數(shù)量與所有傳輸位的 總數(shù)的比值。通常來(lái)講,剩余錯(cuò)誤率與消息長(zhǎng)度1、生成多項(xiàng)式g(x)以及位錯(cuò)誤率P有 關(guān)。位錯(cuò)誤率P表示通信過(guò)程中發(fā)生錯(cuò)誤的位的數(shù)量與所有傳輸?shù)奈坏臄?shù)量的比值。對(duì) 于傳統(tǒng)的CRC校驗(yàn),無(wú)法檢測(cè)的錯(cuò)誤主要分為兩種情況,第一種是只有有效數(shù)據(jù)發(fā)生錯(cuò)誤, 而CRC校驗(yàn)值卻沒(méi)有發(fā)生錯(cuò)誤;第二種是有效數(shù)據(jù)和CRC校驗(yàn)值都發(fā)生了錯(cuò)誤。而對(duì)于本 發(fā)明所述方法,由于即將用于傳輸?shù)腃RC_Mi校驗(yàn)值是由上一個(gè)CRC_M(i-l)校驗(yàn)值與即將 用于傳輸?shù)挠行?shù)據(jù)Mi共同產(chǎn)生的,而CRC_Mi的校驗(yàn)也是由上一個(gè)CRC_M(i-l)和有效數(shù) 據(jù)Mi共同完成的,所以當(dāng)CRC_M(i-l)校驗(yàn)值發(fā)生傳輸錯(cuò)誤但卻未被檢測(cè)出來(lái)時(shí),一般都會(huì) 造成CRC_Mi校驗(yàn)無(wú)法通過(guò),CRC_Mi可以通過(guò)校驗(yàn)的可能性非常?。灰虼烁鶕?jù)本發(fā)明所述方法,這種情況下需要重傳有效數(shù)據(jù)M(i-l)與上一個(gè)CRC_M(i-l)校驗(yàn)值,因而在很大程度上 降低了剩余錯(cuò)誤率PM。本發(fā)明方法的測(cè)試環(huán)境SSB(SynChr0n0uS-Serial-BuS,同步串行總線)數(shù)控 總線;工控機(jī)硬件平臺(tái)為Intel Pentium 4雙核3. 00GHz CPU,512MB內(nèi)存,操作系統(tǒng)為 Microsoftffindows XP Professional ;數(shù)據(jù)采集軟件為 MATLAB 7.0。實(shí)驗(yàn)主要用于測(cè)試本發(fā)明方法和傳統(tǒng)方法之間的消息安全通信性能對(duì)比,評(píng)價(jià)指 標(biāo)為剩余錯(cuò)誤率Pre。本發(fā)明所使用的實(shí)驗(yàn)方法使用了實(shí)際測(cè)試加MATLAB仿真計(jì)算相結(jié)合 以采集數(shù)據(jù)與分析性能。如圖7所示,黑色實(shí)線和黑色虛線分別為對(duì)本發(fā)明方法和傳統(tǒng)方法進(jìn)行安全性能 測(cè)試結(jié)果曲線。當(dāng)位錯(cuò)誤率P的取值在(0,0. 5]情況下,傳統(tǒng)方法產(chǎn)生的剩余錯(cuò)誤率在 10_9到10_5之間,而本發(fā)明所述方法產(chǎn)生的剩余錯(cuò)誤率P,e在10_16到10_12之間,剩余錯(cuò)誤率
有了大幅度的降低。這意味著本發(fā)明所述方法能夠檢測(cè)出更多的錯(cuò)誤位。因此,本發(fā)明 方法能保證數(shù)控總線的異步及同步消息安全傳輸。
權(quán)利要求
一種用于數(shù)控總線的消息安全傳輸方法,其特征在于包括以下步驟將發(fā)送雙方分別作為主站及從站;在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值,封裝入消息安全報(bào)文中,并將該消息安全報(bào)文發(fā)送給從站;從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則從站重新計(jì)算CRC校驗(yàn)值,封裝入新消息安全報(bào)文中,并向主站發(fā)送該新消息安全報(bào)文;主站對(duì)接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則判斷通信是否結(jié)束,如果沒(méi)有結(jié)束,則主站繼續(xù)向從站發(fā)送下一個(gè)消息安全報(bào)文;否則,結(jié)束此次通信。
2.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于如果從站對(duì) 接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn)不正確,則要求主站重新發(fā)送該消息安全報(bào)文,轉(zhuǎn)至 在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值步驟。
3.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于如果主站對(duì) 接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn)不正確,則要求從站重新發(fā)送該新消息安全報(bào)文, 轉(zhuǎn)至從站重新計(jì)算CRC校驗(yàn)值步驟。
4.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于所述在主站 中計(jì)算產(chǎn)生CRC校驗(yàn)值包括以下過(guò)程以從站站點(diǎn)的地址編號(hào)作為主站所使用的第一個(gè)動(dòng)態(tài)起始值;以主站上一次計(jì)算所產(chǎn)生的CRC校驗(yàn)值作為主站本次所使用的動(dòng)態(tài)起始值;使用動(dòng)態(tài)起始值與本次發(fā)送的消息安全報(bào)文中的有效數(shù)據(jù)共同計(jì)算產(chǎn)生本次消息安 全報(bào)文中的CRC校驗(yàn)值。
5.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于所述消息安 全報(bào)文包括有效數(shù)據(jù)位、狀態(tài)位、序列號(hào)位以及動(dòng)態(tài)CRC位,其中,有效數(shù)據(jù)位存放的是從 站執(zhí)行操作的命令,狀態(tài)位用于識(shí)別通信狀態(tài);序列號(hào)位用于識(shí)別消息安全報(bào)文順序;動(dòng) 態(tài)CRC位用于進(jìn)行CRC校驗(yàn)。
6.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于所述從站對(duì) 接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn)包括以下步驟通過(guò)使用上次主站產(chǎn)生的CRC校驗(yàn)值與從站本次接收到的消息安全報(bào)文中的有效數(shù) 據(jù)共同進(jìn)行CRC計(jì)算;將計(jì)算結(jié)果與從站本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值進(jìn)行比較,如果計(jì)算結(jié) 果與從站本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值一致,則校驗(yàn)正確;否則校驗(yàn)不正確。
7.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于所述從站重 新計(jì)算CRC校驗(yàn)值為從站使用本次接收到的消息安全報(bào)文中的CRC校驗(yàn)值作為起始值,與 新消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算,所得結(jié)果即為新消息安全報(bào)文中的CRC 校驗(yàn)值。
8.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于所述主站對(duì) 接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn)包括以下步驟通過(guò)使用上次主站產(chǎn)生的CRC校驗(yàn)值與主站本次接收到的新消息安全報(bào)文中的有效 數(shù)據(jù)共同進(jìn)行CRC計(jì)算;將計(jì)算結(jié)果與主站本次接收到的新消息安全報(bào)文中的CRC校驗(yàn)值進(jìn)行比較,如果計(jì)算結(jié)果與主站本次接收到的新消息安全報(bào)文中的CRC校驗(yàn)值一致,則校驗(yàn)正確;否則校驗(yàn)不 正確。
9.按權(quán)利要求1所述的用于數(shù)控總線的消息安全傳輸方法,其特征在于所述主站向 從站發(fā)送下一個(gè)消息安全報(bào)文包括以下步驟主站所發(fā)送下一個(gè)消息安全報(bào)文中的CRC校驗(yàn)值由主站上一次產(chǎn)生的CRC校驗(yàn)值與下 一個(gè)消息安全報(bào)文中的有效數(shù)據(jù)共同進(jìn)行CRC計(jì)算而得;將該CRC校驗(yàn)值封裝入下一個(gè)消息安全報(bào)文中,并將完整的下一個(gè)消息安全報(bào)文發(fā)送 給從站。
全文摘要
本發(fā)明公開一種用于數(shù)控總線的消息安全傳輸方法,包括以下步驟將發(fā)送雙方分別作為主站及從站;在主站中計(jì)算產(chǎn)生CRC校驗(yàn)值,封裝入消息安全報(bào)文中,并將該消息安全報(bào)文發(fā)送給從站;從站對(duì)接收到的消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則從站重新計(jì)算CRC校驗(yàn)值,封裝入新消息安全報(bào)文中,并向主站發(fā)送該新消息安全報(bào)文;主站對(duì)接收到的新消息安全報(bào)文進(jìn)行CRC校驗(yàn);如果正確,則判斷通信是否結(jié)束,如果沒(méi)有結(jié)束,則主站繼續(xù)向從站發(fā)送下一個(gè)消息安全報(bào)文;否則,結(jié)束此次通信。本發(fā)明方法采用了動(dòng)態(tài)CRC校驗(yàn)方法,起始值均只由主站產(chǎn)生,能夠同時(shí)滿足數(shù)控總線異步及同步通信要求,剩余錯(cuò)誤率低。
文檔編號(hào)H04L12/56GK101841388SQ200910300940
公開日2010年9月22日 申請(qǐng)日期2009年3月18日 優(yōu)先權(quán)日2009年3月18日
發(fā)明者于東, 尹震宇, 岳東峰, 張曉輝, 杜少華, 蓋榮麗, 胡毅 申請(qǐng)人:中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所有限公司;沈陽(yáng)高精數(shù)控技術(shù)有限公司