色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 激光加工機器人通信協(xié)議設計

          激光加工機器人通信協(xié)議設計

          作者: 時間:2011-10-28 來源:網(wǎng)絡 收藏
          4 的實現(xiàn)

          本文引用地址:http://cafeforensic.com/article/155576.htm

          4.1 下位機任務的實現(xiàn)


          在實時多任務系統(tǒng)中,一項工作的完成往往需要通過多個任務(中斷)共同完成的。這需要各任務及中斷協(xié)調(diào)動作,相互配合,甚至進行。VRTXsa提供了郵箱(mailbox),隊列(queue)、事件標志(event flag)、信號量(semaphore)互斥體(mutexes) 5種通信機制。在下位機通信系統(tǒng)中,通信工作由串口2中斷、時鐘中斷、監(jiān)控任務、顯示任務、執(zhí)行任務等共同協(xié)調(diào)完成的。如圖2所示。

          收到上位機的指令后,串口2中斷發(fā)生,它的中斷服務程序啟動。它將設置中斷同步標志,觸發(fā)串口2任務程序。串口2任務將處理接收到的上位機數(shù)據(jù),將解釋指令放入命令隊列中,并設置相關標志。在一個時鐘周期內(nèi)(16ms),所有任務執(zhí)行一遍,它們根據(jù)相關標志,完成相應的工作,如讀取命令隊列,執(zhí)行命令,給上位機返回應答。

            串口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();//處理并讀取數(shù)據(jù)
          刀處理各種指令,并設置各相關標志
          process_ Comm (BYTE *Buff,BYTE *cPtr);

            4.2 上位機通信控件的實現(xiàn)

          為了便于用戶使用,把上位機的通信功能封裝到ActiveX控件中。選擇VC++6進行通信控件的開發(fā),串口操作使用API函數(shù)來實現(xiàn)??丶胁捎昧硕嗑€程技術。為監(jiān)控串口任務創(chuàng)建了一個工作線程,以免它堵塞主線程,提高了系統(tǒng)的響應性。通信控件采用了異步v0方式,以提高發(fā)送、接收和處理數(shù)據(jù)的效率。異步v0操作建立后會立即返回,即使操作還未完成。這樣把費時的v0操作放在后臺進行,線程就可以干別的事情,極大地提高了程序的運行效率。在串口通信中,有
          幾種讀取串口數(shù)據(jù)的方式,其中事件驅(qū)動是最有效率的方式。在監(jiān)視串口的輔助線程中,當有數(shù)據(jù)到達時串口是,串口事件觸發(fā),控件開始讀取串口輸入緩沖區(qū)的數(shù)據(jù)。如果沒有數(shù)據(jù)到達,那么使用WaitForMultipleObjects 0'數(shù)堵塞監(jiān)測線程,把資源讓給其它線程。在使用線程堵塞技術之后,監(jiān)視串口線程占用的系統(tǒng)資源大大減少,同時提高了指令的發(fā)送效率。串口讀寫和監(jiān)控是通信的最主要部分,采用了異步v0操作,使得程序復雜化。異步v0操作分兩部分:一是創(chuàng)建該v0操作,然后返回;二是探測操作的完成。下面是讀串口的部分程序清單:

          void CCommCtrl::ReadChar(COMSTAT comstat)
          {
          while (comstat.cbInQue>0)f
          C1earCommERROR(mJWomm,dwError,comstat);
          if(!ReadFile(hcomm,RXBuf,l,dwRead,m_ ov))
          f //ReadFile返回FALSE,判斷是出錯還是沒完成
          if(GetLastError()==ERROR IO_PENDING) f
          //沒完成,需要等待
          if(!GetOverlappedResult(hComm,m- ov,
          dwRead,TRUE)) //等待讀操作完成
          {…}刀完成讀操作,但出錯
          else //正確完成讀操作
          {…}//處理接收的字符
          else(…}/贖操作出錯
          else //讀操作在函數(shù)返回前已經(jīng)完成
          {…}刀處理接收的字符
          }
          return; //沒有字符了,返回
          }
          寫串口程序和讀串口類似。監(jiān)視線程的部分代碼如下:
          DINT CommWatch(LPVOID pParam)
          {刀清緩存
          PurgeComm(hcom,PURGE_ RXCLEAR I PURGE一XCLEAR I
          PURGE_ RXABORTIPURGE一XABORT);
          for(;;) f
          bResult2=WaitCommEvent(hcom,dwEvtMask,m一 ov);
          刀等待串口事件的發(fā)生
          if(!bResult2)[//事件WaitCommEvent返回假
          switch (dw=GetLastError(川
          case ERROR-10-PENDING://異步I/O操作(WaitCommEvent)/
          /進行中,正常情況
          {break;}
          default:[ // I/O操作出現(xiàn)錯誤
          ProcESSErrorMessage(WaitCommEvent());
          break;}}}
          else{//事件WaitCommEven嶇回真,操作完成
          bResult2=C1earCommError(hcom,dw, commstat);
          if (commstat.cbInQue==0)
          continue;}
          刀堵塞線程,等待事件組發(fā)生。事件組包括:關閉線程事件、
          刀讀事件、寫事件
          Event=WaitForMultipleObjects(3, m- hEventArray, FALSE,
          INFINITE);
          switch (Event){//判斷是哪個事件發(fā)生
          case 0:f//關閉事件
          mJbThreadAlive= FALSE;
          AfxEndThread(100);//關閉線程
          break;)
          case 1:f//字符到達,讀字符
          bRead=TRUE;
          bResult=TRUE;
          GetCommMask(hcom, CommEvent);
          if(CommEventEV_ RXCHAR)(
          刀通知控件句柄讀取字符
          ::SendMessage(CommWnd,WM_ COMM_ READ,0,0);)
          break;)

          case 2:{//寫事件
          //通知控件句柄寫串口
          ::SendMessage(CommWnd,WM_ COMM_ WRITE,0,0);)}}
          刀主循環(huán)結束
          return 0;}


            5 結束語

          我們根據(jù)通信的特點,制定了相應的通信,同時采用了多種有效的編程方法,以達到安全、高效、實用的目的。經(jīng)過大量的測試以及I年多工業(yè)運用表明,該通信及通信系統(tǒng)取得了很好的效果,完全達到了工業(yè)機通信的要求。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉