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