閱讀 | 訂閱
閱讀 | 訂閱
機器人

激光加工機器人通信協議及其實現

星之球科技 來源:控製工程網2011-07-26 我要評論(0 )   

機器人目前應用十分廣泛,在工業(ye) 、科研、醫學等領域發揮了重要作用。我們(men) 知道,機器人的指令需要我們(men) 來提供。目前,工業(ye) 機器人的指令一般都是通過示教盒輸入的。示教盒...

         機器人目前應用十分廣泛,在工業(ye) 、科研、醫學等領域發揮了重要作用。我們(men) 知道,機器人的指令需要我們(men) 來提供。目前,工業(ye) 機器人的指令一般都是通過示教盒輸入的。示教盒提供了簡單的人機界麵,可以幫助完成簡單的示教任務。但在許多應用中,僅(jin) 通過示教輸入是無法滿足要求的。在激光加工機器人係統中,要給機器人的指令多達幾萬(wan) 條,而且指令的參數不能示教得到,是由其他測量係統提供的。在這種情況下,需要通過上位機給機器人控製器發送指令。這就需要實現機器人控製器和上位機的實時通信。機器人指令有固定格式,機器人通信有其特殊性。為(wei) 了保證通信的可靠性,提高通信效率,可根據機器人通信特點,製定了相應的通信協議,並製作了專(zhuan) 用的、更適合於(yu) 工業(ye) 應用的上位機通信控件。

1機器人主控計算機
    機器人控製器中最重要的是主控計算機。在激光加工機器人中,主控計算機采用基於(yu) PC總線S 1
04/486DX工業(ye) 控製級嵌入式單板計算機,其核心是AMD 80486
DX微處理器。主控計算機提供串行接口,可以和它進行串口通信。主控計算機內(nei) 部的信息處理由機器人控製器操作係統來實現。整個(ge) 係統采用了實時多任務操作係統VRTXsa來實現,它具有很好的實時性和可靠性,同時具有完善的任務管理機製。

2激光加工機器人通信係統結構
   
機器人的運動指令來自通信係統。在我們(men) 的通信係統中控製工程網版權所有,主要包括上位機應用程序、串口控件、串口和機器人主控計算機(下稱下位機)。上位機應用程序產(chan) 生指令,通過控件訪問串行端口,將指令傳(chuan) 給下位機。下位機收到指令後,對指令進行分析處理。對於(yu) 下位機來說控製工程網版權所有,這些指令分兩(liang) 種:一種是解釋執行指令,需要進入命令隊列,排隊執行,占用緩存;另一種是立即執行指令,不需要進入隊列,不占用緩存。對於(yu) 解釋執行指令,下位機收到後,把指令放入隊列後馬上返回應答。對於(yu) 立即執行指令,先執行該指令,然後才返回應答。查詢指令屬於(yu) 立即執行指令,下位機除了返回命令在命令字外,還同時返回相應的數值。上位機根據返回的應答判斷通信的狀態,並進行相應的處理。

3通信協議
   我們(men) 的激光加工機器人通信係統具有以下特點:

   1)機器人隻會(hui) 按指令進行工作,如果指令有問題,將會(hui) 帶來不可預測的後果。所以對於(yu) 我們(men) 的通信係統來說,可靠性、安全性是首要的。
    2)機器人工作環境比較惡劣,各種幹擾比較大。通信的抗幹擾能力、錯誤處理的能力非常重要。
    3)為(wei) 了提高加工效率,希望機器人能以較快的速度進行工作。
    為(wei) 避免機器人出現“空指令”,通信速度要跟得上。基於(yu) 機器人通信係統自身的特點,上位機和它進行通信,必須滿足其特定的要求。我們(men) 采用如下的通信方式:
  (1)主從(cong) 方式。上位機為(wei) 主機,下位機為(wei) 從(cong) 機。一般情況下CONTROL ENGINEERING
China版權所有,下位機不能主動給上位機發送信息。隻有上位機給下位機發出指令後,下位機才能作出應答。這樣通過上位機,我們(men) 就可以很好地控製整個(ge) 通信過程。
  
(2)數據幀方式。采用數據幀的方式,有利於(yu) 保證數據包的完整性,便於(yu) 進行數據接收和處理。在我們(men) 的通信係統中控製工程網版權所有,上位機和下位機均采用相同的協議對通信數據進行打包、解包。我們(men) 自己定義(yi) 幀頭為(wei) eb
90 82,幀尾為(wei) 9082,幀標誌為(wei) f0。另外規定,有效數據中若出現90CONTROL ENGINEERING
China版權所有,則雙寫(xie) 90,用以區別幀尾中的900數據幀格式如下所示:

{幀頭一幀標誌一通信數據一幀尾一校驗字}

另外,在我們(men) 的通信過程中,要處理各種不同類型的數據,包括char' , short型、float型、byte型等,在有效數據前加入標識符來識別它們(men) 。如f0
06表示6個(ge) 浮點數,f3 05表示5個(ge) 字符。
  
(3)校驗和。這是一種簡單而實用的校驗方式。在上位機發送指令前,自動計算數據的和,並將它附在數據幀的末端,一起發送給下位機。下位機在接收到數據幀後,先解包,然後再計算一次數據和,用它與(yu) 數據幀末端的校驗和進行比較。反之亦然。使用這種方式可以檢驗數據在傳(chuan) 輸的過程中是否發生了變異。
  
(4)自動重發機製。下位機在接收到錯誤的數據幀時,將會(hui) 把該數據幀遺棄掉,同時向上位機返回錯誤碼報錯。這時候,該幀數據需要重新發送。如果把重發任務交給應用程序,程序將變得比較複雜。我們(men) 把這個(ge) 任務交給控件,可以很輕鬆的實現重發

(5)應答方式。在通信過程,下位機對上位機每一幀數據都必須做出的應答。上位機根據返回的應答判斷通信狀態,然後進行下一步動作。為(wei) 了安全起見,規定隻有在確認前一包指令正確應答之後,才可以發下一包指令。對於(yu) 非查詢指令(包括全部解釋執行指令和部分立即執行指令),下位機收到後,返回該指令的命令字;對於(yu) 查詢指令,除了返回命令字之外,同時還返回查詢數據,如機器人的位置、各軸轉角等。如果下位機檢測到數據幀有問題,如無幀頭、校驗和錯等,則返回相應的錯誤碼。上位機在發送指令的時候,同時記錄下了該指令的命令字。在接收到下位機返回的應答後,將其中的命令字與(yu) 保留的命令字比較,如果一樣,則說明發送正確,可以發送下一條指令;反之,則說明指令發送有問題,根據錯誤碼進行錯誤處理,並重發當前指令包。指令的發送和應答的接收過程如圖1所示。

 


 

 
   (6)成組指令發送方式。由於(yu) 機器人的運行速度很快,為(wei) 了能保證指令發送速度能
跟上運行速度,因此在一個(ge) 數據報裏同時發送了多條指令,而下位機隻需應答第一條指令。這樣就減少了應答時間,提高了指令的發送速度。實際應用中,我們(men) 采用7條指令一個(ge) 數據報,結果顯示,速度快了大約37。為(wei) 了安全和處理方便,控件隻允許解釋執行指令成組發送,對於(yu) 立即指令控製工程網版權所有,隻能發送單指令數據報。

4通信的實現
4.1下位機通信任務的實現

  
在實時多任務係統中,一項工作的完成往往需要通過多個(ge) 任務(中斷)共同完成的。這需要各任務及中斷協調動作,相互配合,甚至進行通信。VRTXsa提供了郵箱(mailbox),隊列(queue)、事件標誌(event
flag)、信號量(semaphore)互斥體(ti) (mutexes) 5種通信機製。在下位機通信係統中,通信工作由串口2中斷、時鍾中
斷、監控任務、顯示任務、執行任務等共同協調完成的。如圖2所示。

 

#p#分頁標題#e#
 

 

  
機器人收到上位機的指令後,串口2中斷發生,它的中斷服務程序啟動。它將設置中斷同步標誌,觸發串口2任務程序。串口2任務將處理接收到的上位機數據,將解釋指令放入命令隊列中,並設置相關(guan) 標誌。在一個(ge) 時鍾周期內(nei) (16ms),所有任務執行一遍,它們(men) 根據相關(guan) 標誌,完成相應的工作,如讀取命令隊列,執行命令,給上位機返回應答。
串口2任務程序如下:
void far com2_ task(void)
{刀初始化
刀裝載串口2中斷
sys_ load vrtx_ isr(Ox34,com- isr);
刀允許串口2中斷
n8259_ inerrupt enable(4);
while(true)
刀等待串口2中斷
ev_group=sc_ fpend(group_ id,0控製工程網版權所有,4,0控製工程網版權所有,&erro);
刀中斷到來,清中斷同步標誌
ev_group=sc_ fclear(gruop_ id,4,&err);
read_ CommData();//處理並讀取數據
刀處理各種指令,並設置各相關(guan) 標誌
process_ Comm (BYTE *Buff,BYTE *cPtr);
}

4.2上位機通信控件的實現

  
為(wei) 了便於(yu) 用戶使用,把上位機的通信功能封裝到ActiveX控件中。選擇VC++6進行通信控件的開發,串口操作使用API函數來實現。控件中采用了多線程技術。為(wei) 監控串口任務創建了一個(ge) 工作線程,以免它堵塞主線程,提高了係統的響應性。通信控件采用了異步v0方式,以提高發送、接收和處理數據的效率。異步v0操作建立後會(hui) 立即返回,即使操作還未完成。這樣把費時的v0操作放在後台進行,線程就可以幹別的事情,極大地提高了程序的運行效率。在串口通信中,有幾種讀取串口數據的方式,其中事件驅動是最有效率的方式。在監視串口的輔助線程中,當有數據到達時串口是,串口事件觸發,控件開始讀取串口輸入緩衝(chong) 區的數據。如果沒有數據到達,那麽(me) 使用WaitForMultipleObjects
0'數堵塞監測線程,把資源讓給其它線程。在使用線程堵塞技術之後控製工程網版權所有,監視串口線程占用的係統資源大大減少,同時提高了指令的發送效率。串口讀寫(xie) 和監控是通信的最主要部分,采用了異步v0操作,使得程序複雜化。異步v0操作分兩(liang) 部分:一是創建該v0操作,然後返回;二是探測操作的完成。下麵是讀串口的部分程序清單:
void CCommCtrl::ReadChar(COMSTAT comstat)
{
while (comstat.cbInQue>0)f
C1earCommError(mJWomm,&dwError,&comstat);
if(!Read

File(hcomm,&RXBuf,l,&dwReadCONTROL ENGINEERING China版權所有,&m_ ov))
f //ReadFile返回FALSE,判斷是出錯還是沒完成
if(GetLastError()==ERROR IO_PENDING) f
//沒完成,需要等待
if(!GetOverlappedResult(hComm,&m- ov,
&dwReadCONTROL ENGINEERING China版權所有,TRUE)) //等待讀操作完成
{…}刀完成讀操作,但出錯
else //正確完成讀操作
{…}//處理接收的字符
else(…}/贖操作出錯
else //讀操作在函數返回前已經完成
{…}刀處理接收的字符
}
return; //沒有字符了,返回
}
寫(xie) 串口程序和讀串口類似。監視線程的部分代碼如下:
DINT CommWatch(LPVOID pParam)
{刀清緩存
PurgeComm(hcom,PURGE_ RXCLEAR I PURGE一XCLEAR I
PURGE_ RXABORTIPURGE一XABORT);
for(;;) f
bResult2=WaitCommEvent(hcom,&dw
EvtMask,&m一 ov);
刀等待串口事件的發生
if(!bResult2)[//事件WaitCommEvent返回假
switch (dw=GetLastError(川
case ERROR-10-PENDING://異步I/O操作(WaitCommEvent)/
/進行中,正常情況
{break;}
default:[ // I/O操作出現錯誤
ProcessErrorMessage("WaitCommEvent()");
break;}}}
else{//事件WaitCommEven嶇回真,操作完成
bResult2=C1earCommError(hcom,&dw, &commstat);
if (commstat.cbInQue==0)
continue;}
刀堵塞線程,等待事件組發生。事件組包括:關(guan) 閉線程事件、
刀讀事件、寫(xie) 事件
Event=WaitForMultipleObjects(3控製工程網版權所有, m- hEventArray, FALSE,
INFINITE);
switch (Event){//判斷是哪個(ge) 事件發生
case 0:f//關(guan) 閉事件
mJbThreadAlive= FALSE;
AfxEndThread(100);//關(guan) 閉線程
break;)
case 1:f//字符到達,讀字符
bRead=TRUE;
bResult=TRUE;
GetCommMask(hcom, &CommEvent);
if(CommEvent&EV_ RXCHAR)(
刀通知控件句柄讀取字符
::SendMessage(CommWnd,WM_ COMM_ READ,0www.cechina.cn,0);)
break;)
case 2:{//寫(xie) 事件
//通知控件句柄寫(xie) 串口
::SendMessage(CommWnd,WM_ COMM_ WRITECONTROL ENGINEERING
China版權所有,0www.cechina.cn,0);)}}
刀主循環結束
return 0;}
 

5結束語
   
我們(men) 根據激光加工機器人通信的特點,製定了相應的通信協議,同時采用了多種有效的編程方法,以達到安全、高效、實用的目的。經過大量的測試以及I年多工業(ye) 運用表明,該通信協議及通信係統取得了很好的效果,完全達到了工業(ye) 機器人通信的要求。
參考文獻
1宗光華,劉海波,程君實.機器人技術手冊(ce) .北京:科學出版社,1996
2候捷.Win32多線程程序設計.武漢:華中科技大學出版社,2002
3徐軍(jun) .Visual C++5開發人員指南.北京:機械工業(ye) 出版社,1998
4 Serial Communications in Win32. 自wtech.com/serialcomm

 

 

 

 

 

 

 

 


 

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀