本發(fā)明涉及一種基于雙冗余CAN總線通信的多智能單機(jī)伺服控制系統(tǒng),特別是一種基于雙冗余CAN總線通信的多智能單機(jī)伺服控制系統(tǒng),用于伺服控制系統(tǒng)內(nèi)部多智能單機(jī)的通信,屬于伺服系統(tǒng)的控制領(lǐng)域。
背景技術(shù):
:大型伺服系統(tǒng)中要完成復(fù)雜的動(dòng)作控制,需要多個(gè)智能單機(jī)協(xié)調(diào)工作,而更高級(jí)系統(tǒng)對(duì)伺服系統(tǒng)要求是唯一節(jié)點(diǎn)和接口,對(duì)應(yīng)一個(gè)上位機(jī)1553B的總線站點(diǎn)。在這種背景下,伺服系統(tǒng)內(nèi)部需要設(shè)計(jì)高可靠冗余通信網(wǎng)絡(luò),解決分布式控制要求。CAN(ControllerAreaNetwork)總線是一種串行多主站控制器局域網(wǎng)總線。它具有很高的網(wǎng)絡(luò)安全性、通訊可靠性和實(shí)時(shí)性,簡(jiǎn)單實(shí)用,網(wǎng)絡(luò)成本低。特別適用于汽車計(jì)算機(jī)控制系統(tǒng)和環(huán)境溫度惡劣、電磁輻射強(qiáng)和振動(dòng)大的工業(yè)環(huán)境。通訊媒體可以是雙絞線、同軸電纜或光導(dǎo)纖維,數(shù)據(jù)傳輸速率可達(dá)1Mbits/s。現(xiàn)有的CAN總線通信技術(shù)一般都采用單總線。其缺點(diǎn)在于:(1)、只有一路總線進(jìn)行通信,存在單點(diǎn)環(huán)節(jié),一旦出現(xiàn)軟件通信故障不能恢復(fù)就會(huì)出現(xiàn)通信失敗,影響系統(tǒng)可靠性。(2)、不具備自診斷和自恢復(fù)功能,即當(dāng)兩個(gè)通信節(jié)點(diǎn)通信失敗時(shí),沒有任何補(bǔ)救措施,導(dǎo)致系統(tǒng)癱瘓。(3)、由于CAN總線本身屬于串行總線,且只有一路,相互之間通信所有數(shù)據(jù)幀均通過該路總線順次傳輸,受到硬件傳輸速度制約,對(duì)指令相應(yīng)延遲較大,制約了系統(tǒng)對(duì)指令的響應(yīng)性能。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供一種高性能、高可靠性和魯棒性的基于雙冗余CAN總線通信的多智能單機(jī)伺服控制系統(tǒng),用于火箭飛行控制的伺服系統(tǒng)不同智能單機(jī)的通信,用相對(duì)低廉的成本實(shí)現(xiàn)了高可靠通信,且具有自診斷和自恢復(fù)功能,確保了火箭等飛行控制系統(tǒng)的高可靠性。本發(fā)明的技術(shù)解決方案是:一種基于雙冗余CAN總線通信的多智能單機(jī)伺服控制系統(tǒng),該系統(tǒng)包括上位機(jī)、主伺服控制驅(qū)動(dòng)器、從伺服控制驅(qū)動(dòng)器,其中,上位機(jī),發(fā)送指令信息給主伺服控制驅(qū)動(dòng)器,所述指令信息包括自檢指令、時(shí)序指令及控制指令;接收主伺服控制驅(qū)動(dòng)器發(fā)送的自檢結(jié)果、時(shí)序操作結(jié)果和測(cè)量數(shù)據(jù),對(duì)多智能單機(jī)伺服控制系統(tǒng)進(jìn)行狀態(tài)監(jiān)測(cè);主伺服控制驅(qū)動(dòng)器,接收上位機(jī)發(fā)送的自檢、時(shí)序指令信息,進(jìn)行自檢、時(shí)序操作;接收上位機(jī)發(fā)送的控制指令,采集主伺服機(jī)構(gòu)測(cè)量信息,按照控制計(jì)算周期,進(jìn)行主伺服機(jī)構(gòu)擺角閉環(huán)控制計(jì)算,控制主伺服機(jī)構(gòu)到達(dá)指定的位置,同時(shí),轉(zhuǎn)發(fā)送控制指令至從伺服控制驅(qū)動(dòng)器;接收從伺服控制驅(qū)動(dòng)器發(fā)送的自檢結(jié)果、時(shí)序響應(yīng)結(jié)果和測(cè)量信息,合并本地自檢結(jié)果、時(shí)序操作結(jié)果和測(cè)量數(shù)據(jù)發(fā)送到上位機(jī);從伺服控制驅(qū)動(dòng)器,接收主伺服控制驅(qū)動(dòng)器發(fā)送的自檢指令,執(zhí)行自檢操作,將自檢結(jié)果發(fā)送至主伺服控制驅(qū)動(dòng)器;接收時(shí)序指令,驅(qū)動(dòng)從伺服機(jī)構(gòu)完成相應(yīng)的時(shí)序操作,并將時(shí)序響應(yīng)結(jié)果發(fā)送至主伺服控制驅(qū)動(dòng)器;接收主伺服控制驅(qū)動(dòng)器發(fā)送的控制指令、采集從伺服機(jī)構(gòu)測(cè)量信息,按照控制計(jì)算周期,進(jìn)行閉環(huán)控制計(jì)算,得到從伺服機(jī)構(gòu)擺角,控制從伺服機(jī)構(gòu)到達(dá)指定的位置,并將從伺服機(jī)構(gòu)測(cè)量信息發(fā)送主伺服控制驅(qū)動(dòng)器;主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器采用地位對(duì)等的雙冗余CAN總線進(jìn)行通信,在不增加額外數(shù)據(jù)傳輸?shù)那闆r下,實(shí)時(shí)對(duì)雙冗余CAN總線進(jìn)行總線錯(cuò)誤自診斷和總線狀態(tài)自診斷,且自診斷發(fā)現(xiàn)通信總線異常時(shí),采用相應(yīng)的自恢復(fù)措施進(jìn)行自恢復(fù)。所述總線狀態(tài)自診斷的診斷方法為:從伺服控制驅(qū)動(dòng)器在預(yù)定的N個(gè)控制計(jì)算周期以上的時(shí)間段內(nèi)未能通過指定CAN總線接收到主伺服控制驅(qū)動(dòng)器發(fā)送的控制指令,則認(rèn)為該CAN總線故障,對(duì)該CAN總線采取總線狀態(tài)自恢復(fù)措施進(jìn)行自恢復(fù),否則,認(rèn)為該CAN總線正常,不作處理;主伺服控制驅(qū)動(dòng)器在預(yù)定的N個(gè)控制計(jì)算周期以上的時(shí)間段內(nèi)未能通過指定CAN總線接收到從伺服控制驅(qū)動(dòng)器發(fā)送的測(cè)量數(shù)據(jù),則認(rèn)為該CAN總線故障,對(duì)該CAN總線采取總線狀態(tài)自恢復(fù)措施進(jìn)行自恢復(fù),否則,認(rèn)為該CAN總線正常,不作處理,所述N≥2。所述總線狀態(tài)自恢復(fù)措施為:主伺服控制驅(qū)動(dòng)器或從伺服控制驅(qū)動(dòng)器復(fù)位出現(xiàn)故障CAN總線所對(duì)應(yīng)的控制芯片,并重新初始化該CAN總線的配置寄存器。所述總線錯(cuò)誤診斷方法為:設(shè)置CAN總線控制芯片均通過錯(cuò)誤計(jì)數(shù)器實(shí)時(shí)監(jiān)測(cè)總線傳輸錯(cuò)誤數(shù),當(dāng)傳輸錯(cuò)誤數(shù)超過預(yù)設(shè)的門限時(shí),總線會(huì)自動(dòng)進(jìn)入總線關(guān)閉狀態(tài),主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器循環(huán)檢測(cè)總線是否進(jìn)入關(guān)閉狀態(tài),一旦檢測(cè)到某總線進(jìn)入關(guān)閉狀態(tài),采取總線錯(cuò)誤恢復(fù)措施對(duì)該總線進(jìn)行自恢復(fù)處理。所述總線錯(cuò)誤自恢復(fù)措施為:將出現(xiàn)故障的CAN總線控制芯片內(nèi)部寄存器中自動(dòng)恢復(fù)使能位置為1,使CAN總線控制芯片從總線關(guān)閉狀態(tài)恢復(fù)到正常工作狀態(tài)。系統(tǒng)中數(shù)據(jù)發(fā)送方采用冗余方式發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)幀包含消息序號(hào)和功能定義,功能定義用來標(biāo)識(shí)發(fā)送數(shù)據(jù)的內(nèi)容,不同內(nèi)容的數(shù)據(jù)幀采用不同功能定義標(biāo)識(shí),每條相同功能的消息均通過互為冗余的第一CAN總線和第二CAN總線同時(shí)發(fā)送,消息序號(hào)相同,消息序號(hào)從0開始累加,每發(fā)送一條消息增加1;相應(yīng)地,數(shù)據(jù)接收方同時(shí)接收第一CAN總線和第二CAN總線的消息,判斷消息序號(hào)是否與最近接收到的n條消息的消息序號(hào)相同,如果相同則認(rèn)為消息為重復(fù)的消息,將后一條消息舍棄;如果沒有相同的消息序號(hào),則認(rèn)為消息為有效的新消息,將消息保存并且存儲(chǔ)該消息序號(hào),以備與下一條消息比較使用,n≥2。所述發(fā)送數(shù)據(jù)幀結(jié)構(gòu)如下所示:序號(hào)消息序號(hào)數(shù)據(jù)區(qū)功能定義字節(jié)數(shù)本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:(1)、本發(fā)明創(chuàng)造性地設(shè)計(jì)了一種“一拖二”的主從式多智能單機(jī)伺服控制系統(tǒng),主機(jī)對(duì)應(yīng)一個(gè)上位機(jī)1553B的總線站點(diǎn),在伺服系統(tǒng)內(nèi)部設(shè)計(jì)高可靠冗余通信網(wǎng)絡(luò),解決分布式控制需求難題,實(shí)現(xiàn)多路伺服機(jī)構(gòu)的控制驅(qū)動(dòng)及協(xié)調(diào)工作;(2)、本發(fā)明采用雙路實(shí)時(shí)冗余CAN總線實(shí)現(xiàn)多智能單機(jī)內(nèi)部通信,兩條總線指令及數(shù)據(jù)實(shí)時(shí)對(duì)等傳輸,任何一路故障均不影響系統(tǒng)通信,且判斷和恢復(fù)可交替互補(bǔ),無判斷周期和恢復(fù)時(shí)間,實(shí)時(shí)性高,可靠性大大提高;(3)、本發(fā)明采用了雙冗余CAN總線實(shí)現(xiàn)多智能單機(jī)內(nèi)部通信,通信速率加倍,不同指令和數(shù)據(jù)可交錯(cuò)傳輸,對(duì)指令響應(yīng)延遲明顯降低,大大提高了系統(tǒng)對(duì)指令的響應(yīng)快速性;(4)、本發(fā)明雙路CAN總線均具有自診斷和自恢復(fù)功能,實(shí)時(shí)監(jiān)測(cè)總線狀態(tài),任何一路總線由于軟件運(yùn)行異常、寄存器狀態(tài)改變及通信錯(cuò)誤等故障模式導(dǎo)致的通信異常均可自行修復(fù),可靠性更上一層;(5)、本發(fā)明自診斷過程利用了控制指令和測(cè)量數(shù)據(jù)傳輸作為自診斷的依據(jù),在數(shù)據(jù)通信同時(shí)完成自診斷,且不增加通信負(fù)擔(dān);(6)、本發(fā)明同時(shí)采用了兩種不同的自診斷和自恢復(fù)方法并行進(jìn)行處理,分別針對(duì)總線狀態(tài)異常和總線出錯(cuò)關(guān)閉兩種故障模式分別進(jìn)行了自修復(fù),增加了可靠性。附圖說明圖1為本發(fā)明基于雙冗余CAN總線通信的多智能單機(jī)伺服控制系統(tǒng)組成框圖;圖2為本發(fā)明實(shí)施例自檢指令通信流程圖;圖3為本發(fā)明實(shí)施例時(shí)序指令通信流程;圖4為本發(fā)明實(shí)施例控制指令通信流程;圖5為本發(fā)明實(shí)施例測(cè)量數(shù)據(jù)通信流程圖;圖6為本發(fā)明實(shí)施例總線狀態(tài)自診斷功能示意圖;圖7為本發(fā)明實(shí)施例總線狀態(tài)自恢復(fù)狀態(tài)轉(zhuǎn)換圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行說明。如圖1所示,一種基于雙冗余CAN總線通信的多智能單機(jī)伺服控制系統(tǒng)包括上位機(jī)、主伺服控制驅(qū)動(dòng)器、從伺服控制驅(qū)動(dòng)器。主伺服控制驅(qū)動(dòng)器與上位機(jī)通過1553B總線A和B進(jìn)行通信,主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器通過地位對(duì)等的雙冗余CAN總線進(jìn)行通信。主伺服控制驅(qū)動(dòng)器用來驅(qū)動(dòng)系統(tǒng)中安裝于Ⅰ、Ⅱ象限的伺服機(jī)構(gòu)Ⅰ和伺服機(jī)構(gòu)Ⅱ,從伺服控制驅(qū)動(dòng)器用來驅(qū)動(dòng)系統(tǒng)中安裝于Ⅲ、Ⅳ象限的伺服機(jī)構(gòu)Ⅲ和伺服機(jī)構(gòu)Ⅳ。這種“一拖二”的主從式多智能單機(jī)伺服控制系統(tǒng),由主伺服控制驅(qū)動(dòng)器對(duì)應(yīng)一個(gè)上位機(jī)1553B的總線站點(diǎn),在伺服系統(tǒng)內(nèi)部設(shè)計(jì)高可靠冗余通信網(wǎng)絡(luò),解決分布式控制需求難題,實(shí)現(xiàn)多路伺服機(jī)構(gòu)的控制驅(qū)動(dòng)及協(xié)調(diào)工作。上位機(jī),發(fā)送指令信息給主伺服控制驅(qū)動(dòng)器,所述指令信息包括自檢指令、時(shí)序指令及控制指令;接收主伺服控制驅(qū)動(dòng)器發(fā)送的自檢結(jié)果、時(shí)序操作結(jié)果和測(cè)量數(shù)據(jù),對(duì)多智能單機(jī)伺服控制系統(tǒng)進(jìn)行狀態(tài)監(jiān)測(cè);主伺服控制驅(qū)動(dòng)器,通過1553B總線A和B接收上位機(jī)的指令,根據(jù)地址數(shù)據(jù)排序進(jìn)行解析,從前往后依次為Ⅰ、Ⅱ、Ⅲ、Ⅳ通道指令,根據(jù)指令進(jìn)行相應(yīng)的操作,如接收上位機(jī)發(fā)送的自檢、時(shí)序指令信息,進(jìn)行自檢、時(shí)序操作;接收上位機(jī)發(fā)送的控制指令,采集伺服機(jī)構(gòu)Ⅰ和伺服機(jī)構(gòu)Ⅱ線位移信號(hào)和永磁同步伺服電機(jī)狀態(tài)等測(cè)量數(shù)據(jù),按照控制計(jì)算周期,進(jìn)行伺服機(jī)構(gòu)擺角閉環(huán)控制計(jì)算,控制驅(qū)動(dòng)伺服機(jī)構(gòu)Ⅰ和伺服機(jī)構(gòu)Ⅱ按系統(tǒng)指令動(dòng)作,使之到達(dá)指定的位置,并將主伺服控制驅(qū)動(dòng)器連同從伺服控制驅(qū)動(dòng)器測(cè)量數(shù)據(jù)反饋至上位機(jī);同時(shí)將在上位機(jī)接收的指令通過地位對(duì)等的第一CAN總線和第二CAN總線分別冗余地將指令轉(zhuǎn)發(fā)給從伺服控制驅(qū)動(dòng)器。接收從伺服控制驅(qū)動(dòng)器發(fā)送的自檢結(jié)果、時(shí)序響應(yīng)結(jié)果和測(cè)量信息,合并本地自檢結(jié)果、時(shí)序操作結(jié)果和測(cè)量數(shù)據(jù)發(fā)送到上位機(jī)。從伺服控制驅(qū)動(dòng)器,通過第一CAN總線和第二CAN總線接收主伺服控制驅(qū)動(dòng)器發(fā)送的自檢指令,執(zhí)行自檢操作,將自檢結(jié)果發(fā)送至主伺服控制驅(qū)動(dòng)器;接收時(shí)序指令,驅(qū)動(dòng)從伺服機(jī)構(gòu)完成相應(yīng)的時(shí)序操作,并將時(shí)序響應(yīng)結(jié)果發(fā)送至主伺服控制驅(qū)動(dòng)器;接收主伺服控制驅(qū)動(dòng)器發(fā)送的控制指令、采集伺服機(jī)構(gòu)Ⅲ和伺服機(jī)構(gòu)Ⅳ線位移信號(hào)和永磁同步伺服電機(jī)狀態(tài)數(shù)據(jù)等測(cè)量信息,按照控制計(jì)算周期,進(jìn)行閉環(huán)控制計(jì)算,得到伺服機(jī)構(gòu)擺角,控制驅(qū)動(dòng)伺服機(jī)構(gòu)Ⅲ和伺服機(jī)構(gòu)Ⅳ按系統(tǒng)指令動(dòng)作,并將從伺服控制驅(qū)動(dòng)器的測(cè)量數(shù)據(jù)通過第一CAN總線和第二CAN總線發(fā)送至主伺服控制驅(qū)動(dòng)器。上述一種多智能單機(jī)伺服控制系統(tǒng)包括自檢流程、時(shí)序指令流程、控制指令流程、測(cè)量數(shù)據(jù)傳送流程、總線狀態(tài)自診斷流程、總線狀態(tài)自恢復(fù)流程、總線錯(cuò)誤自診斷流程、總線錯(cuò)誤自恢復(fù)流程。控制指令流程在主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器之間為定時(shí)發(fā)送,自檢流程、時(shí)序指令流程根據(jù)上位機(jī)指令隨機(jī)發(fā)送,控制指令流程和測(cè)量數(shù)據(jù)傳送流程周期性進(jìn)行,自診斷流程在主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器內(nèi)部獨(dú)立運(yùn)行和實(shí)時(shí)判斷,不需要主機(jī)額外發(fā)送指令,自恢復(fù)流程由主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器的CAN總線控制芯片實(shí)時(shí)完成。以下分別介紹這幾個(gè)流程:1、自檢流程主伺服控制驅(qū)動(dòng)器接收上位機(jī)發(fā)送的自檢指令,隨即將自檢指令通過第一CAN總線和第二CAN總線發(fā)送到從伺服控制驅(qū)動(dòng)器,然后完成自身自檢,并等待從伺服控制驅(qū)動(dòng)器反饋的自檢應(yīng)答,超過500ms未收到自檢應(yīng)答,認(rèn)為通信失敗,直接置自檢異常,收到自檢應(yīng)答后,將主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器自檢結(jié)果合并為一個(gè)狀態(tài)字,并將自檢結(jié)果發(fā)送給上位機(jī)。如圖2所示,自檢流程如下:(1)、主伺服控制驅(qū)動(dòng)器收到上位機(jī)發(fā)送的自檢指令之后,進(jìn)行指令解析,判斷該指令是自檢、時(shí)序還是控制指令,如果是自檢指令,進(jìn)行后續(xù)操作。(2)、主伺服控制驅(qū)動(dòng)器通過第一CAN總線和第二CAN總線將自檢指令發(fā)送到從伺服控制驅(qū)動(dòng)器,然后采集主伺服控制驅(qū)動(dòng)器電參數(shù)進(jìn)行量值判斷,在自檢判據(jù)范圍內(nèi)為正常,超出自檢判據(jù)范圍為異常,然后存儲(chǔ)自身自檢結(jié)果,并等待從伺服控制驅(qū)動(dòng)器反饋?zhàn)詸z結(jié)果。(3)、從伺服控制驅(qū)動(dòng)器如果收到第一CAN總線/第二CAN總線的自檢命令,則執(zhí)行從伺服控制驅(qū)動(dòng)器自檢,并將自檢結(jié)果分別通過第一CAN總線或第二CAN總線返回自檢應(yīng)答;(4)、主伺服控制驅(qū)動(dòng)器判斷在200ms內(nèi)是否能接收到自檢應(yīng)答,如果在200ms內(nèi)接收到第一CAN總線或第二CAN總線的自檢應(yīng)答后,分別置第一CAN總線、第二CAN總線的自檢狀態(tài)位正常,如果不能在200ms內(nèi)接收到第一CAN總線/第二CAN總線的自檢應(yīng)答,則分別置第一CAN總線、第二CAN總線的自檢狀態(tài)位異常。(5)主伺服控制驅(qū)動(dòng)器在接收到第一CAN總線或者第二CAN總線的自檢應(yīng)答后,解析判斷主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器均自檢正常后,向控制系統(tǒng)返回自檢正常標(biāo)志;若主伺服控制驅(qū)動(dòng)器或從伺服控制驅(qū)動(dòng)器存在異常后,向控制系統(tǒng)返回異常狀態(tài)字標(biāo)志。2、時(shí)序指令流程時(shí)序指令是指使伺服系統(tǒng)完成某項(xiàng)特定工作的指令,如起機(jī)指令、停機(jī)指令,這些指令發(fā)送時(shí)間不固定,主伺服控制驅(qū)動(dòng)器接收上位機(jī)發(fā)送的時(shí)序指令,隨即將時(shí)序指令通過第一CAN總線和第二CAN總線發(fā)送到從伺服控制驅(qū)動(dòng)器,然后完成時(shí)序指令規(guī)定的啟動(dòng)、停止動(dòng)作,并等待從伺服控制驅(qū)動(dòng)器反饋的時(shí)序應(yīng)答,收到時(shí)序應(yīng)答后,將主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器時(shí)序應(yīng)答加以綜合,并將總的時(shí)序應(yīng)答發(fā)送給上位機(jī)。如圖3所示,時(shí)序指令流程如下:(1)、主伺服控制驅(qū)動(dòng)器收到上位機(jī)發(fā)送的時(shí)序指令之后,進(jìn)行指令解析判斷,主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器執(zhí)行啟動(dòng)、停止動(dòng)作。(2)、主伺服控制驅(qū)動(dòng)器通過第一CAN總線和第二CAN總線將時(shí)序指令發(fā)送到從伺服控制驅(qū)動(dòng)器,然后執(zhí)行時(shí)序動(dòng)作,存儲(chǔ)自身時(shí)序結(jié)果,并等待從伺服控制驅(qū)動(dòng)器反饋時(shí)序結(jié)果。(3)、從伺服控制驅(qū)動(dòng)器如果收到第一CAN總線/第二CAN總線的時(shí)序命令,則執(zhí)行從伺服控制驅(qū)動(dòng)器時(shí)序,成功完成動(dòng)作為正常,未成功完成動(dòng)作為異常,并將時(shí)序響應(yīng)結(jié)果,分別通過第一CAN總線/第二CAN總線返回至主伺服控制驅(qū)動(dòng)器;(4)、主伺服控制驅(qū)動(dòng)器判斷在1s內(nèi)是否能接收到時(shí)序應(yīng)答,如果在1s內(nèi)接收到第一CAN總線/第二CAN總線的時(shí)序應(yīng)答后,分別置第一CAN總線、第二CAN總線的時(shí)序狀態(tài)位正常,如果不能在1s內(nèi)接收到第一CAN總線/第二CAN總線的時(shí)序應(yīng)答,則分別置第一CAN總線、第二CAN總線的時(shí)序狀態(tài)位異常。(5)、主伺服控制驅(qū)動(dòng)器在接收到第一CAN總線或者第二CAN總線的時(shí)序應(yīng)答后,解析判斷主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器均執(zhí)行時(shí)序正常后,向上位機(jī)返回時(shí)序正常標(biāo)志;若主伺服控制驅(qū)動(dòng)器或從伺服控制驅(qū)動(dòng)器存在異常,向上位機(jī)返回異常狀態(tài)標(biāo)志。3、控制指令流程控制指令是四臺(tái)伺服機(jī)構(gòu)需要擺動(dòng)的位置角度值。主伺服控制驅(qū)動(dòng)器接收上位機(jī)發(fā)送的控制指令,采集主伺服機(jī)構(gòu)測(cè)量信息,按照系統(tǒng)控制計(jì)算周期,進(jìn)行伺服機(jī)構(gòu)擺角閉環(huán)控制計(jì)算,控制主伺服機(jī)構(gòu)到達(dá)指定的位置,并將控制指令通過第一CAN總線,第二CAN總線發(fā)送到從伺服控制驅(qū)動(dòng)器。如圖4所示,控制指令流程為:(1)、主伺服控制驅(qū)動(dòng)器每1ms收到一次上位機(jī)發(fā)送的控制指令,進(jìn)行指令解析,指令中前兩個(gè)字為伺服機(jī)構(gòu)Ⅰ和伺服機(jī)構(gòu)Ⅱ指令,后兩個(gè)字為伺服機(jī)構(gòu)Ⅲ和伺服機(jī)構(gòu)Ⅳ指令,主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器需要分別執(zhí)行。(2)、主伺服控制驅(qū)動(dòng)器每個(gè)計(jì)算周期通過第一CAN總線和第二CAN總線將伺服機(jī)構(gòu)Ⅲ和伺服機(jī)構(gòu)Ⅳ的動(dòng)作指令發(fā)送到從伺服控制驅(qū)動(dòng)器,然后完成對(duì)伺服機(jī)構(gòu)Ⅰ和伺服機(jī)構(gòu)Ⅱ的閉環(huán)控制,未收到新的上位機(jī)控制指令時(shí),發(fā)送上一個(gè)控制周期的控制指令;(3)、從伺服控制驅(qū)動(dòng)器使用定時(shí)中斷的方式查看是否接收到控制指令,如果0.1ms查詢周期內(nèi)同時(shí)收到第一CAN總線和第二CAN總線的控制指令,則在接收到下一幀指令之前使用第一CAN總線或者第二CAN總線的控制指令參與控制伺服機(jī)構(gòu)擺角的閉環(huán)運(yùn)算;如果在0.1ms查詢周期內(nèi)只收到第一CAN總線控制指令,則使用第一CAN總線的控制指令參與閉環(huán)運(yùn)算;如果在0.1ms查詢周期內(nèi)只收到第二CAN總線控制指令,則使用第二CAN總線的控制指令參與閉環(huán)運(yùn)算。如果在0.1ms查詢周期內(nèi)未收到第一CAN總線和第二CAN總線的控制指令,則按照最近收到的指令參與閉環(huán)運(yùn)算。4、測(cè)量數(shù)據(jù)發(fā)送流程從伺服控制驅(qū)動(dòng)器按照系統(tǒng)控制計(jì)算周期,將從伺服機(jī)構(gòu)測(cè)量信息發(fā)送主伺服控制驅(qū)動(dòng)器;主伺服控制驅(qū)動(dòng)器接收從伺服控制驅(qū)動(dòng)器發(fā)送的測(cè)量信息,合并本地測(cè)量數(shù)據(jù)發(fā)送到上位機(jī),用于多智能單機(jī)伺服控制系統(tǒng)狀態(tài)監(jiān)測(cè)。如圖5所示,測(cè)量數(shù)據(jù)發(fā)送流程為:(1)、從伺服控制驅(qū)動(dòng)器每1ms通過第一CAN總線和第二CAN總線向主伺服控制驅(qū)動(dòng)器發(fā)送伺服機(jī)構(gòu)Ⅲ和伺服機(jī)構(gòu)Ⅳ采集的測(cè)量數(shù)據(jù)幀1、測(cè)量數(shù)據(jù)幀2。(2)、主伺服控制驅(qū)動(dòng)器如果在0.1ms查詢周期內(nèi)收到第一CAN總線和第二CAN總線的測(cè)量數(shù)據(jù),則使用第一CAN總線或第二CAN總線的測(cè)量數(shù)據(jù)返回上位機(jī);如果在查詢周期內(nèi)只收到第一CAN總線測(cè)量數(shù)據(jù),則接收到下一拍測(cè)量數(shù)據(jù)之前使用第一CAN總線的測(cè)量數(shù)據(jù)返回控制系統(tǒng);如果在查詢周期內(nèi)只收到第二CAN總線測(cè)量數(shù)據(jù),則接收到下一拍測(cè)量數(shù)據(jù)之前使用第二CAN總線的測(cè)量數(shù)據(jù)返回控制系統(tǒng)。系統(tǒng)開機(jī)之后,主伺服控制驅(qū)動(dòng)器始終按照控制計(jì)算周期與從伺服控制驅(qū)動(dòng)器進(jìn)行控制指令和測(cè)量數(shù)據(jù)的交互。5、總線狀態(tài)自診斷流程從控制指令流程和測(cè)量數(shù)據(jù)發(fā)送流程可以看出,主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器在每個(gè)控制計(jì)算周期都會(huì)進(jìn)行一次控制指令和測(cè)量數(shù)據(jù)的傳輸:1)、主伺服控制驅(qū)動(dòng)器每1ms周期性分別向從伺服控制驅(qū)動(dòng)器通過第一CAN總線和第二CAN總線發(fā)送一幀控制指令幀,未收到指令前發(fā)送零指令;2)、從伺服控制驅(qū)動(dòng)器每1ms通過第一CAN總線和第二CAN總線的周期發(fā)送測(cè)量數(shù)據(jù)幀。利用這些規(guī)律性特點(diǎn),主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器內(nèi)設(shè)計(jì)了定時(shí)握手診斷機(jī)制,在通信和工作過程中實(shí)時(shí)對(duì)雙冗余CAN總線狀態(tài)進(jìn)行狀態(tài)監(jiān)測(cè),對(duì)CAN總線的狀態(tài)進(jìn)行自診斷。診斷流程如下:1)如果主伺服控制驅(qū)動(dòng)器在5ms內(nèi)第一CAN總線收到一次測(cè)量數(shù)據(jù)幀,證明第一CAN總線狀態(tài)通信正常,本次第一CAN總線自診斷通過;否則,如果主伺服控制驅(qū)動(dòng)器在5ms內(nèi)第一CAN總線未收到測(cè)量數(shù)據(jù)幀,證明第一CAN總線通信異常,主伺服控制驅(qū)動(dòng)器會(huì)置第一CAN總線通信異常標(biāo)志,采取相應(yīng)的自恢復(fù)措施。如果主伺服控制驅(qū)動(dòng)器在5ms內(nèi)第二CAN總線收到一次數(shù)據(jù)幀應(yīng)答,證明第二CAN總線狀態(tài)通信正常,本次第二CAN總線自診斷通過;否則,如果主伺服控制驅(qū)動(dòng)器在5ms內(nèi)第二CAN總線未收到測(cè)量數(shù)據(jù)幀,證明第二CAN總線通信異常,主伺服控制驅(qū)動(dòng)器會(huì)置第二CAN總線通信異常標(biāo)志,采取相應(yīng)的自恢復(fù)措施。2)、如果從伺服控制驅(qū)動(dòng)器在5ms內(nèi)第一CAN總線收到一幀控制指令,證明第一CAN總線狀態(tài)通信正常,本次第一CAN總線自診斷通過;否則,如果從伺服控制驅(qū)動(dòng)器在5ms內(nèi)第一CAN總線未收到測(cè)量數(shù)據(jù)幀,證明第一CAN總線通信異常,從伺服控制驅(qū)動(dòng)器會(huì)置第一CAN總線通信異常標(biāo)志,采取相應(yīng)的自恢復(fù)措施。如果從伺服控制驅(qū)動(dòng)器在5ms內(nèi)第二CAN總線收到一幀控制指令,證明第二CAN總線狀態(tài)通信正常,本次第二CAN總線自診斷通過;否則,如果從伺服控制驅(qū)動(dòng)器在5ms內(nèi)第二CAN總線未收到控制指令幀,證明第二CAN總線通信異常,從伺服控制驅(qū)動(dòng)器會(huì)置第二CAN總線通信異常標(biāo)志,采取相應(yīng)的自恢復(fù)措施。6、總線自恢復(fù)流程主伺服控制驅(qū)動(dòng)器檢測(cè)到第一CAN總線/總線2故障后,主伺服控制驅(qū)動(dòng)器立即復(fù)位出現(xiàn)故障CAN總線所對(duì)應(yīng)的控制芯片,并重新初始化第一CAN總線/總線2的配置寄存器,整個(gè)初始化過程小于0.5ms,不會(huì)影響CAN總線通訊過程的實(shí)時(shí)性。該自恢復(fù)措施可以對(duì)CAN總線的大部分故障模式起到自恢復(fù)保護(hù)作用。從伺服控制驅(qū)動(dòng)器檢測(cè)到第一CAN總線/總線2故障后,從伺服控制驅(qū)動(dòng)器軟件立即復(fù)位出現(xiàn)故障CAN總線所對(duì)應(yīng)的控制芯片,并重新初始化第一CAN總線/總線2的配置寄存器,整個(gè)初始化過程小于0.5ms,該自恢復(fù)措施可以對(duì)CAN總線的大部分故障模式起到自恢復(fù)保護(hù)作用。7、總線錯(cuò)誤自診斷流程主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器的第一CAN總線和第二CAN總線對(duì)應(yīng)的CAN總線控制芯片均通過一個(gè)錯(cuò)誤計(jì)數(shù)器實(shí)時(shí)監(jiān)測(cè)總線傳輸錯(cuò)誤數(shù),當(dāng)傳輸錯(cuò)誤超過255時(shí),總線會(huì)自動(dòng)進(jìn)入總線關(guān)閉狀態(tài),通信會(huì)出現(xiàn)中斷,同時(shí)錯(cuò)誤寄存器置位。8、總線錯(cuò)誤自恢復(fù)路程主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器內(nèi)專門設(shè)置自動(dòng)恢復(fù)使能位(ABO),通信過程中不斷檢測(cè)錯(cuò)誤狀態(tài)寄存器,當(dāng)檢測(cè)到錯(cuò)誤狀態(tài)寄存器BO位置1時(shí),說明總線進(jìn)入關(guān)閉狀態(tài),將自動(dòng)恢復(fù)使能位置為1,該位可使CAN總線從閉鎖狀態(tài)自動(dòng)恢復(fù)到通信狀態(tài),保證使主伺服控制驅(qū)動(dòng)器的第一CAN總線/第二CAN總線總線重新切換到開啟模式,通信恢復(fù)正常。由于采用雙總線,并且總線會(huì)出現(xiàn)一定幾率的阻塞和延時(shí),為了準(zhǔn)確無誤地判斷接收到數(shù)據(jù)的先后順序,防止時(shí)序等重復(fù)處理或遺漏處理,保證對(duì)指令的可靠執(zhí)行,通信數(shù)據(jù)幀均采用消息序號(hào)編碼發(fā)送和接收采用特別的通信協(xié)議和冗余處理方式進(jìn)行。每幀CAN總線消息具有消息序號(hào),占用消息的一個(gè)字節(jié)。例如消息定義如下注:消息序號(hào)Flag1、Flag2的取值范圍0~255,字節(jié)數(shù)X1、X2取值范圍1~7。1)主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器發(fā)送某功能的消息時(shí),每條相同功能的消息均通過第一CAN總線和第二CAN總線分別發(fā)送,消息序號(hào)相同。消息序號(hào)從0開始累加,每發(fā)送一條消息增加1,累加到255后自動(dòng)清0;2)主伺服控制驅(qū)動(dòng)器和從伺服控制驅(qū)動(dòng)器在接收某功能的消息時(shí),同時(shí)接收第一CAN總線和CAN總線的消息,判斷消息序號(hào)是否與最近接收到的n(n<127)條消息的消息序號(hào)相同。如果相同則認(rèn)為消息為重復(fù)的消息,將該條消息舍棄;如果沒有相同的消息序號(hào),則認(rèn)為消息為有效的新消息,將消息保存并且記錄該消息序號(hào)。系統(tǒng)設(shè)計(jì)時(shí)根據(jù)實(shí)時(shí)性的不同要求設(shè)計(jì)合理的消息門限n,同時(shí)兼顧消息的時(shí)實(shí)性和完整性要求。舉例說明,連續(xù)將功能1的消息通過第一CAN總線、第二CAN總線各發(fā)送4條,n取5,消息的時(shí)間分布如下。本發(fā)明說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員的公知技術(shù)。當(dāng)前第1頁1 2 3