手机版av在线_96精品国产aⅴ在线观看_中文字幕35页_国产亚洲成AV人片在线观黄桃_全黄性色大片_免费视频h

產品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質分析|光譜儀|試驗機|試驗箱


儀表網>技術中心>應用設計>正文

歡迎聯系我

有什么可以幫您? 在線咨詢

激光加工機器人通信協議設計

   2012年03月07日 14:25  
  機器人目前應用十分廣泛,在工業、科研、醫學等領域發揮了重要作用。我們知道,機器人的指令需要我們來提供。目前,工業機器人的指令一般都是通過示教盒輸入的。示教盒提供了簡單的人機界面,可以幫助完成簡單的示教任務。但在許多應用中,僅通過示教輸入是無法滿足要求的。在激光加工機器人系統中,要給機器人的指令多達幾萬條,而且指令的參數不能示教得到,是由其他測量系統提供的。在這種情況下,需要通過上位機給機器人控制器發送指令。這就需要實現機器人控制器和上位機的實時通信。機器人指令有固定格式,機器人通信有其特殊性。為了保證通信的可靠性,提高通信效率,可根據機器人通信特點,制定了相應的通信協議,并制作了的、更適合于工業應用的上位機通信控件。
  
  1、機器人主控計算機
  
  機器人控制器中zui重要的是主控計算機。在激光加工機器人中,主控計算機采用基于PC總線S104/486DX工業控制級嵌入式單板計
  
  算機,其核心是AMD80486DX微處理器。主控計算機提供串行接口,可以和它進行串口通信。主控計算機內部的信息處理由機器人控制器操作系統來實現。整個系統采用了實時多任務操作系統VRTXsa來實現,它具有很好的實時性和可靠性,同時具有完善的任務管理機制。
  
  2、激光加工機器人通信系統結構
  
  機器人的運動指令來自通信系統。在我們的通信系統中,主要包括上位機應用程序、串口控件、串口和機器人主控計算機(下稱下位機)。上位機應用程序產生指令,通過控件訪問串行端口,將指令傳給下位機。下位機收到指令后,對指令進行分析處理。對于下位機來說,這些指令分兩種:一種是解釋執行指令,需要進入命令隊列,排隊執行,占用緩存;另一種是立即執行指令,不需要進入隊列,不占用緩存。對于解釋執行指令,下位機收到后,把指令放入隊列后馬上返回應答。對于立即執行指令,先執行該指令,然后才返回應答。查詢指令屬于立即執行指令,下位機除了返回命令在命令字外,還同時返回相應的數值。上位機根據返回的應答判斷通信的狀態,并進行相應的處理。
  
  3、通信協議
  
  我們的激光加工機器人通信系統具有以下特點:
  
  1)機器人只會按指令進行工作,如果指令有問題,將會帶來不可預測的后果。所以對于我們的通信系統來說,可靠性、安全性是首要的。
  
  2)機器人工作環境比較惡劣,各種干擾比較大。通信的抗*力、錯誤處理的能力非常重要。
  
  3)為了提高加工效率,希望機器人能以較快的速度進行工作。
  
  為避免機器人出現“空指令”,通信速度要跟得上。基于機器人通信系統自身的特點,上位機和它進行通信,必須滿足其特定的要求。我們采用如下的通信方式:
  
  (1)主從方式。上位機為主機,下位機為從機。一般情況下,下位機不能主動給上位機發送信息。只有上位機給下位機發出指令后,下位機才能作出應答。這樣通過上位機,我們就可以很好地控制整個通信過程。
  
  (2)數據幀方式。采用數據幀的方式,有利于保證數據包的完整性,便于進行數據接收和處理。在我們的通信系統中,上位機和下位機均采用相同的協議對通信數據進行打包、解包。我們自己定義幀頭為eb9082,幀尾為9082,幀標志為f0。另外規定,有效數據中若出現90,則雙寫90,用以區別幀尾中的900數據幀格式如下所示:
  
  {幀頭一幀標志一通信數據一幀尾一校驗字}
  
  另外,在我們的通信過程中,要處理各種不同類型的數據,包括char',short型、float型、byte型等,在有效數據前加入標識符來識別它們。如f006表示6個浮點數,f305表示5個字符。
  
  (3)校驗和。這是一種簡單而實用的校驗方式。在上位機發送指令前,自動計算數據的和,并將它附在數據幀的末端,一起發送給下位機。下位機在接收到數據幀后,先解包,然后再計算一次數據和,用它與數據幀末端的校驗和進行比較。反之亦然。使用這種方式可以檢驗數據在傳輸的過程中是否發生了變異。
  
  (4)自動重發機制。下位機在接收到錯誤的數據幀時,將會把該數據幀遺棄掉,同時向上位機返回錯誤碼報錯。這時候,該幀數據需要重新發送。如果把重發任務交給應用程序,程序將變得比較復雜。我們把這個任務交給控件,可以很輕松的實現重發功能。在控件內部,當新的數據發送之前,都將數據做一個備份,直到確認接收正確了,才將其消除。如果發現有錯誤,將其再次發出去。
  
  (5)應答方式。在通信過程,下位機對上位機每一幀數據都必須做出的應答。上位機根據返回的應答判斷通信狀態,然后進行下一步動作。為了安全起見,規定只有在確認前一包指令正確應答之后,才可以發下一包指令。對于非查詢指令(包括全部解釋執行指令和部分立即執行指令),下位機收到后,返回該指令的命令字;對于查詢指令,除了返回命令字之外,同時還返回查詢數據,如機器人的位置、各軸轉角等。如果下位機檢測到數據幀有問題,如無幀頭、校驗和錯等,則返回相應的錯誤碼。上位機在發送指令的時候,同時記錄下了該指令的命令字。在接收到下位機返回的應答后,將其中的命令字與保留的命令字比較,如果一樣,則說明發送正確,可以發送下一條指令;反之,則說明指令發送有問題,根據錯誤碼進行錯誤處理,并重發當前指令包。指令的發送和應答的接收過程如圖1所示。
  
  (6)成組指令發送方式。由于機器人的運行速度很快,為了能保證指令發送速度能跟上運行速度,因此在一個數據報里同時發送了多條指令,而下位機只需應答*條指令。這樣就減少了應答時間,提高了指令的發送速度。實際應用中,我們采用7條指令一個數據報,結果顯示,速度快了大約37。為了安全和處理方便,控件只允許解釋執行指令成組發送,對于立即指令,只能發送單指令數據報。
  
  4、通信的實現
  
  4.1下位機通信任務的實現
  
  在實時多任務系統中,一項工作的完成往往需要通過多個任務(中斷)共同完成的。這需要各任務及中斷協調動作,相互配合,甚至進行通信。VRTXsa提供了(mailbox),隊列(queue)、事件標志(eventflag)、信號量(semaphore)互斥體(mutexes)5種通信機制。在下位機通信系統中,通信工作由串口2中斷、時鐘中斷、監控任務、顯示任務、執行任務等共同協調完成的。如圖2所示。
  
  機器人收到上位機的指令后,串口2中斷發生,它的中斷服務程序啟動。它將設置中斷同步標志,觸發串口2任務程序。串口2任務將處理接收到的上位機數據,將解釋指令放入命令隊列中,并設置相關標志。在一個時鐘周期內(16ms),所有任務執行一遍,它們根據相關標志,完成相應的工作,如讀取命令隊列,執行命令,給上位機返回應答。
  
  串口2任務程序如下:
  
  voidfarcom2_task(void)
  
  {刀初始化
  
  刀裝載串口2中斷
  
  sys_loadvrtx_isr(Ox34,com-isr);
  
  刀允許串口2中斷
  
  n8259_inerruptenable(4);
  
  while(true)
  
  刀等待串口2中斷
  
  ev_group=sc_fpend(group_id,0,4,0,&erro);
  
  刀中斷到來,清中斷同步標志
  
  ev_group=sc_fclear(gruop_id,4,&err);
  
  read_CommData();//處理并讀取數據
  
  刀處理各種指令,并設置各相關標志
  
  process_Comm(BYTE*Buff,BYTE*cPtr);
  
  4.2上位機通信控件的實現
  
  為了便于用戶使用,把上位機的通信功能封裝到ActiveX控件中。選擇VC++6進行通信控件的開發,串口操作使用API函數來實現。控件中采用了多線程技術。為監控串口任務創建了一個工作線程,以免它堵塞主線程,提高了系統的響應性。通信控件采用了異步v0方式,以提高發送、接收和處理數據的效率。異步v0操作建立后會立即返回,即使操作還未完成。這樣把費時的v0操作放在后臺進行,線程就可以干別的事情,極大地提高了程序的運行效率。在串口通信中,有
  
  幾種讀取串口數據的方式,其中事件驅動是zui有效率的方式。在監視串口的輔助線程中,當有數據到達時串口是,串口事件觸發,控件開始讀取串口輸入緩沖區的數據。如果沒有數據到達,那么使用WaitForMultipleObjects0'數堵塞監測線程,把資源讓給其它線程。在使用線程堵塞技術之后,監視串口線程占用的系統資源大大減少,同時提高了指令的發送效率。串口讀寫和監控是通信的zui主要部分,采用了異步v0操作,使得程序復雜化。異步v0操作分兩部分:一是創建該v0操作,然后返回;二是探測操作的完成。下面是讀串口的部分程序清單:
  
  voidCCommCtrl::ReadChar(COMSTATcomstat)
  
  {
  
  while(comstat.cbInQue>0)f
  
  C1earCommERROR(mJWomm,&dwError,&comstat);
  
  if(!ReadFile(hcomm,&RXBuf,l,&dwRead,&m_ov))
  
  f//ReadFile返回FALSE,判斷是出錯還是沒完成
  
  if(GetLastError()==ERRORIO_PENDING)f
  
  //沒完成,需要等待
  
  if(!GetOverlappedResult(hComm,&m-ov,
  
  &dwRead,TRUE))//等待讀操作完成
  
  {…}刀完成讀操作,但出錯
  
  else//正確完成讀操作
  
  {…}//處理接收的字符
  
  else(…}/贖操作出錯
  
  else//讀操作在函數返回前已經完成
  
  {…}刀處理接收的字符
  
  }
  
  return;//沒有字符了,返回
  
  }
  
  寫串口程序和讀串口類似。監視線程的部分代碼如下:
  
  DINTCommWatch(LPVOIDpParam)
  
  {刀清緩存
  
  PurgeComm(hcom,PURGE_RXCLEARIPURGE一XCLEARI
  
  PURGE_RXABORTIPURGE一XABORT);
  
  for(;;)f
  
  bResult2=WaitCommEvent(hcom,&dwEvtMask,&m一ov);
  
  刀等待串口事件的發生
  
  if(!bResult2)[//事件WaitCommEvent返回假
  
  switch(dw=GetLastError(川
  
  caseERROR-10-PENDING://異步I/O操作(WaitCommEvent)/
  
  /進行中,正常情況
  
  {break;}
  
  default:[//I/O操作出現錯誤
  
  ProcESSErrorMessage("WaitCommEvent()");
  
  break;}}}
  
  else{//事件WaitCommEven嶇回真,操作完成
  
  bResult2=C1earCommError(hcom,&dw,&commstat);
  
  if(commstat.cbInQue==0)
  
  continue;}
  
  刀堵塞線程,等待事件組發生。事件組包括:關閉線程事件、
  
  刀讀事件、寫事件
  
  Event=WaitForMultipleObjects(3,m-hEventArray,FALSE,
  
  INFINITE);
  
  switch(Event){//判斷是哪個事件發生
  
  case0:f//關閉事件
  
  mJbThreadAlive=FALSE;
  
  AfxEndThread(100);//關閉線程
  
  break;)
  
  case1:f//字符到達,讀字符
  
  bRead=TRUE;
  
  bResult=TRUE;
  
  GetCommMask(hcom,&CommEvent);
  
  if(CommEvent&EV_RXCHAR)(
  
  刀通知控件句柄讀取字符
  
  ::SendMessage(CommWnd,WM_COMM_READ,0,0);)
  
  break;)
  
  case2:{//寫事件
  
  //通知控件句柄寫串口
  
  ::SendMessage(CommWnd,WM_COMM_WRITE,0,0);)}}
  
  刀主循環結束
  
  return0;}
  
  5、結束語
  
  我們根據激光加工機器人通信的特點,制定了相應的通信協議,同時采用了多種有效的編程方法,以達到安全、、實用的目的。經過大量的測試以及I年多工業運用表明,該通信協議及通信系統取得了很好的效果,*達到了工業機器人通信的要求。

免責聲明

  • 凡本網注明“來源:儀表網”的所有作品,均為浙江興旺寶明通網絡有限公司-儀表網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:儀表網”。違反上述聲明者,本網將追究其相關法律責任。
  • 本網轉載并注明自其它來源(非儀表網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
  • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
聯系我們

客服熱線: 13199863987

加盟熱線: 13199863987

媒體合作: 0571-87759945

投訴熱線: 0571-87759942

關注我們
  • 下載儀表站APP

  • Ybzhan手機版

  • Ybzhan公眾號

  • Ybzhan小程序

企業未開通此功能
詳詢客服 : 0571-87759942
主站蜘蛛池模板: 每日更新在线观看 | 国产无区一区二区三麻豆 | 狼人无码中文在线观看 | 无限看片的视频高清在线 | 一区二区三区亚洲精品国 | 欧美成人午夜 | 免费A级毛片无码A∨中文字幕 | av国产传媒精品免费 | 丁香五月色情婷婷在线观看 | 488成人啪啪片 | 狠狠噜天天噜日日噜视频麻豆 | 亚瑟在线精品视频 | 日韩亚洲区字幕 | 国产美女精品福利一区二区 | 国产成人无遮挡在线视频 | 亚洲欧美日韩人成在线播放 | 色悠久久久久综合网国产 | 人人爱人人乐免费 | 久久久久久国产精品无码超碰 | 亚洲熟妇久久精品 | 欧美视频亚洲视频 | 国产男女乱淫视频高清免费 | 极品嫩模被黑人20厘米 | 色噜国产高清视频 | 岛国av在线免费观看 | 亚洲国产黄色 | 精品久久久国产 | 影音先锋亚洲AV少妇熟女 | 蜜芽国产成人精品区 | 国产高中美女福利剧情简介 | 国产成人无码一二三区视频 | 欧美精欧美乱码一二三四区 | 视频分类国内精品 | 欧美在线视频一区二区 | 亚洲国产精品毛片AV不卡在线 | 国产色爱综合网 | 最新精品国偷自产在线美女足 | 午夜男女爽爽影院网站 | 国产成人综合激情视频在线观看 | 精品国产肉丝袜久久 | 成人水多啪啪片 |