激光加工機(jī)器人通信協(xié)議設(shè)計
機(jī)器人目前應(yīng)用十分廣泛,在工業(yè)、科研、醫(yī)學(xué)等領(lǐng)域發(fā)揮了重要作用。我們知道,機(jī)器人的指令需要我們來提供。目前,工業(yè)機(jī)器人的指令一般都是通過示教盒輸入的。示教盒提供了簡單的人機(jī)界面,可以幫助完成簡單的示教任務(wù)。但在許多應(yīng)用中,僅通過示教輸入是無法滿足要求的。在激光加工機(jī)器人系統(tǒng)中,要給機(jī)器人的指令多達(dá)幾萬條,而且指令的參數(shù)不能示教得到,是由其他測量系統(tǒng)提供的。在這種情況下,需要通過上位機(jī)給機(jī)器人控制器發(fā)送指令。這就需要實現(xiàn)機(jī)器人控制器和上位機(jī)的實時通信。機(jī)器人指令有固定格式,機(jī)器人通信有其特殊性。為了保證通信的可靠性,提高通信效率,可根據(jù)機(jī)器人通信特點,制定了相應(yīng)的通信協(xié)議,并制作了專用的、更適合于工業(yè)應(yīng)用的上位機(jī)通信控件。
本文引用地址:http://m.butianyuan.cn/article/155576.htm1 機(jī)器人主控計算機(jī)
機(jī)器人控制器中最重要的是主控計算機(jī)。在激光加工機(jī)器人中,主控計算機(jī)采用基于PC總線S 104/486DX工業(yè)控制級嵌入式單板計
算機(jī),其核心是AMD 80486 DX微處理器。主控計算機(jī)提供串行接口,可以和它進(jìn)行串口通信。主控計算機(jī)內(nèi)部的信息處理由機(jī)器人控制器操作系統(tǒng)來實現(xiàn)。整個系統(tǒng)采用了實時多任務(wù)操作系統(tǒng)VRTXsa來實現(xiàn),它具有很好的實時性和可靠性,同時具有完善的任務(wù)管理機(jī)制。
2 激光加工機(jī)器人通信系統(tǒng)結(jié)構(gòu)
機(jī)器人的運(yùn)動指令來自通信系統(tǒng)。在我們的通信系統(tǒng)中,主要包括上位機(jī)應(yīng)用程序、串口控件、串口和機(jī)器人主控計算機(jī)(下稱下位機(jī))。上位機(jī)應(yīng)用程序產(chǎn)生指令,通過控件訪問串行端口,將指令傳給下位機(jī)。下位機(jī)收到指令后,對指令進(jìn)行分析處理。對于下位機(jī)來說,這些指令分兩種:一種是解釋執(zhí)行指令,需要進(jìn)入命令隊列,排隊執(zhí)行,占用緩存;另一種是立即執(zhí)行指令,不需要進(jìn)入隊列,不占用緩存。對于解釋執(zhí)行指令,下位機(jī)收到后,把指令放入隊列后馬上返回應(yīng)答。對于立即執(zhí)行指令,先執(zhí)行該指令,然后才返回應(yīng)答。查詢指令屬于立即執(zhí)行指令,下位機(jī)除了返回命令在命令字外,還同時返回相應(yīng)的數(shù)值。上位機(jī)根據(jù)返回的應(yīng)答判斷通信的狀態(tài),并進(jìn)行相應(yīng)的處理。
3 通信協(xié)議
我們的激光加工機(jī)器人通信系統(tǒng)具有以下特點:
1)機(jī)器人只會按指令進(jìn)行工作,如果指令有問題,將會帶來不可預(yù)測的后果。所以對于我們的通信系統(tǒng)來說,可靠性、安全性是首要的。
2)機(jī)器人工作環(huán)境比較惡劣,各種干擾比較大。通信的抗干擾能力、錯誤處理的能力非常重要。
3)為了提高加工效率,希望機(jī)器人能以較快的速度進(jìn)行工作。
為避免機(jī)器人出現(xiàn)“空指令”,通信速度要跟得上。基于機(jī)器人通信系統(tǒng)自身的特點,上位機(jī)和它進(jìn)行通信,必須滿足其特定的要求。我們采用如下的通信方式:
(1)主從方式。上位機(jī)為主機(jī),下位機(jī)為從機(jī)。一般情況下,下位機(jī)不能主動給上位機(jī)發(fā)送信息。只有上位機(jī)給下位機(jī)發(fā)出指令后,下位機(jī)才能作出應(yīng)答。這樣通過上位機(jī),我們就可以很好地控制整個通信過程。
(2)數(shù)據(jù)幀方式。采用數(shù)據(jù)幀的方式,有利于保證數(shù)據(jù)包的完整性,便于進(jìn)行數(shù)據(jù)接收和處理。在我們的通信系統(tǒng)中,上位機(jī)和下位機(jī)均采用相同的協(xié)議對通信數(shù)據(jù)進(jìn)行打包、解包。我們自己定義幀頭為eb 90 82,幀尾為9082,幀標(biāo)志為f0。另外規(guī)定,有效數(shù)據(jù)中若出現(xiàn)90,則雙寫90,用以區(qū)別幀尾中的900數(shù)據(jù)幀格式如下所示:
{幀頭一幀標(biāo)志一通信數(shù)據(jù)一幀尾一校驗字}
另外,在我們的通信過程中,要處理各種不同類型的數(shù)據(jù),包括char' , short型、float型、byte型等,在有效數(shù)據(jù)前加入標(biāo)識符來識別它們。如f0 06表示6個浮點數(shù),f3 05表示5個字符。
(3)校驗和。這是一種簡單而實用的校驗方式。在上位機(jī)發(fā)送指令前,自動計算數(shù)據(jù)的和,并將它附在數(shù)據(jù)幀的末端,一起發(fā)送給下位機(jī)。下位機(jī)在接收到數(shù)據(jù)幀后,先解包,然后再計算一次數(shù)據(jù)和,用它與數(shù)據(jù)幀末端的校驗和進(jìn)行比較。反之亦然。使用這種方式可以檢驗數(shù)據(jù)在傳輸?shù)倪^程中是否發(fā)生了變異。
(4)自動重發(fā)機(jī)制。下位機(jī)在接收到錯誤的數(shù)據(jù)幀時,將會把該數(shù)據(jù)幀遺棄掉,同時向上位機(jī)返回錯誤碼報錯。這時候,該幀數(shù)據(jù)需要重新發(fā)送。如果把重發(fā)任務(wù)交給應(yīng)用程序,程序?qū)⒆兊帽容^復(fù)雜。我們把這個任務(wù)交給控件,可以很輕松的實現(xiàn)重發(fā)功能。在控件內(nèi)部,當(dāng)新的數(shù)據(jù)發(fā)送之前,都將數(shù)據(jù)做一個備份,直到確認(rèn)接收正確了,才將其消除。如果發(fā)現(xiàn)有錯誤,將其再次發(fā)出去。
(5)應(yīng)答方式。在通信過程,下位機(jī)對上位機(jī)每一幀數(shù)據(jù)都必須做出的應(yīng)答。上位機(jī)根據(jù)返回的應(yīng)答判斷通信狀態(tài),然后進(jìn)行下一步動作。為了安全起見,規(guī)定只有在確認(rèn)前一包指令正確應(yīng)答之后,才可以發(fā)下一包指令。對于非查詢指令(包括全部解釋執(zhí)行指令和部分立即執(zhí)行指令),下位機(jī)收到后,返回該指令的命令字;對于查詢指令,除了返回命令字之外,同時還返回查詢數(shù)據(jù),如機(jī)器人的位置、各軸轉(zhuǎn)角等。如果下位機(jī)檢測到數(shù)據(jù)幀有問題,如無幀頭、校驗和錯等,則返回相應(yīng)的錯誤碼。上位機(jī)在發(fā)送指令的時候,同時記錄下了該指令的命令字。在接收到下位機(jī)返回的應(yīng)答后,將其中的命令字與保留的命令字比較,如果一樣,則說明發(fā)送正確,可以發(fā)送下一條指令;反之,則說明指令發(fā)送有問題,根據(jù)錯誤碼進(jìn)行錯誤處理,并重發(fā)當(dāng)前指令包。指令的發(fā)送和應(yīng)答的接收過程如圖1所示。
(6)成組指令發(fā)送方式。由于機(jī)器人的運(yùn)行速度很快,為了能保證指令發(fā)送速度能跟上運(yùn)行速度,因此在一個數(shù)據(jù)報里同時發(fā)送了多條指令,而下位機(jī)只需應(yīng)答第一條指令。這樣就減少了應(yīng)答時間,提高了指令的發(fā)送速度。實際應(yīng)用中,我們采用7條指令一個數(shù)據(jù)報,結(jié)果顯示,速度快了大約37。為了安全和處理方便,控件只允許解釋執(zhí)行指令成組發(fā)送,對于立即指令,只能發(fā)送單指令數(shù)據(jù)報。
評論