技術頻道

      DMC1000控制卡在激光切割中的應用

      一、功能和工藝要求
      1.接受常見的平面矢量圖形文件,如PLT,DXF。
      2.處理圖形加工的先后順序,及加工方向。
      3.能簡單處理圖形,如選擇,旋轉,平移,鏡像,復制,排列等。
      4.可手動調試設備,及檢測輸入輸出。
      5.加工控制能調節速度,需要暫停,繼續,中斷等控制。
      6.加工需要顯示時度,時間,位置等部分用戶信息
      7.可設定加工工作原點,激光開關控制(此處不關心激光能量調節)

      二、系統流程

      三、使用函數
      手動調試需要完成的功能:輸入輸出測試,手動驅動脈沖,檢測運行狀態,停止動作,找機械原點:
      對應的函數調為:
      d1000_out_bit 數字輸出函數,可控制激光的開啟或關閉
      d1000_get_in_bit 讀輸入口狀態
      d1000_start_tr_move 手動發脈沖,可使用單軸點位運行
      d1000_check_done 檢測運動狀態函數
      d1000_decel_stop 停止脈沖輸出(減速停較好)
      d1000_home_move 單軸找原點函數
      d1000_home_move_all 多軸找原點函數
      d1000_board_init 控制卡初始化
      d1000_board_close 控制卡釋放

      位置顯示及清除需要的函數:
      d1000_get_abs_position 取得絕對位置
      d1000_set_position 設定位置函數,當值為0時位置清除

      加工控制需要的函數:
      d1000_start_ta_line2 兩軸插補函數
      d1000_set_vector_profile 設定矢量插補速度
      d1000_change_speed 速度改變速度


      四、核心部分的編程
      在實際編程當中,有較多細節需要解決:
      1.需要考慮響應加工暫停,繼續,中斷的操作,位置顯示等
      2.暫停后XY位置需要記錄,有可能XY被手動移開
      3.加工完整個圖形,需要回到一停止位置,以便取料
      4.開激光關激光,需要考慮激光的反應時間
      5.在實際應用當中,當激光未開啟時,為提高速度,可直接采用點位運動
      6.需要需要速度的調節處理

      注意:以下代碼只體現只實用的編程思想,不會能通過編譯器的編譯

      const UINT NORUN =0x0000; //空閑,或中斷狀態
      const UINT RUNNING =0x0001; //運行狀態標識
      const UINT CONTINUE =0x0002; //繼續標識
      const UINT PAUSE =0X0003 //暫停標識

      UINT m_nWorkStatus = NORUN; //記錄加工狀態,初始化為NORUN

      void OnButtonStart()
      {//開始按鈕(可當暫停,繼續,開始用,在某些情況下,繼續與暫停隔開較好一些)
      if( runData.GetSize() < 1 )

      messageBox(“無加工數據或未生成加工路徑”,”提示”);
      return;,

      switch( m_nWorkStatus ){
      case NORUN://若空閑,直接加工
      m_nWorkStatus = RUNNING; //運行
      RunData(); //調用加工核心函數
      Break;
      Case RUNNING://若在運行,則中斷
      M_nWorkStatus = PAUSE;
      StopMove( X,Y ); //停止XY驅動
      Break;
      Case PAUSE://若為暫停
      M_nWorkStatus = CONTINUE;//繼續處理
      Break;

      void OnButtonStop()
      {//中斷加工處理
      m_nWorkStatus = NORUN;
      StopMove(X,Y);

      double fRunSpeed(10.0); //加工速度

      void RunData()

      //數據runData的定義為: CarrayrunData
      //CDPoint的定義,可參見[編程技術]的資料
      const int nSize = runData.GetSize();
      //處理進度度
      progress.SetRang(0, nSize);

      CDPoint pntBreak; //暫停時記錄的斷點
      BOOL bPause=false;
      for( int I(0); I

      ::DoEvent(); //一個系統消息處理函數
      switch( m_nWorkStatus ){
      case PAUSE://若為暫停,只管循檢系統消息
      continue;
      case CONTINUE:
      m_nWorkStatus = RUNNING;
      case RUNNING:

      if( IsMove(X,Y) ) break;//如果XY在運行,則繼續檢測系統消息
      const CDPoint &pt = runData[I];
      if( I == 0 || bPause )

      bPause = false;
      //快速到達第一點或斷點
      I == 0?
      fast_moveto( pt.x, pt.y )://達到第一點
      fast_moveto( pntBreak.x, pntBreak.y);//達到斷點
      while( IsMove(X,Y) ) :: DoEvent();//等待達到位置
      if( m_nWorkStatus == RUNNING )

      OpenLasert( Nio ); //開啟激光
      Sleep( ti_open ); //開啟延時

      continue;

      Con_Line_move( pt.x, pt.y, fRunSpeed );
      //此處用勻速,因為激光切割速度不快
      while( IsMove(X,Y) ) ::DoEvent();
      if( m_nWorkStatus == PAUSE )

      CloseLasert( nIO );//關閉激光
      Sleep( ti_close );//關閉延時
      bPause = true;//有暫停
      pntBreak.x = GetX(); pntBreak.y = GetY();//記錄斷點位置

      else
      if( m_nWorkStatus == RUNNING )
      {//正常完成一個數據點
      I ++;
      Progress.PostMessage( PM_POS, I, 0 ); //更新進度條

      }// end case running
      }// end switch workstatus
      }// end for i
      CloseLasert( nIO );//關閉激光
      Sleep( ti_close );//關閉延時
      if( m_nWorkStatus != NORUN )
      {//順序加工完
      Fast_moveto (stopX,stopY);//達到停止位置
      //其它計數處理

      else{
      //提示加工中斷

      void OnVscrollSpeed( )
      {//響應的速度事件調節
      fRunSpeed += 1;
      或者
      fRunSpeed -=1;
      d1000_change_speed( fRunSpeed );//速度值更改

      注意:
      ::DoEvent 函數在[編程技術]中或《編程高手》書中可找到
      OpenLasert和CloseLasert函數只完成一個d1000_out_bit操作

      Fast_moveto 內含XY兩軸點位或插補驅動函數
      Con_line_move 內含XY兩軸的插補驅動函數(一般為常速)

      GetX() 和GetY()函數內含d1000_get_abs_position位置讀取函數
      IsMove函數內含檢測XY兩軸運動狀態檢測函數

      五、注意事項
      1.本程序未考慮脈沖當量的關系,需要用戶自行處理,在此只提供一種編程思路
      2.部分參數需要用戶通過設定,在此只為簡單介紹
      3.使用的部分結構需要參考其它資料,或來電咨詢。
      4.控制操作在實際應用當中,需要改變按鈕的文字顯示,用戶需要留意
      5.完好的系統,需要限定速度和限定XY范圍
      6.在某些激光切割系統中,激光的控制較為復雜,其編程思想基本一致

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 国产主播福利一区二区| 好湿好大硬得深一点动态图91精品福利一区二区 | 国产伦精品一区二区三区免.费| 国产另类TS人妖一区二区| 韩日午夜在线资源一区二区 | 无码一区二区三区亚洲人妻| 免费一区二区无码视频在线播放| 中文字幕一区精品| 国产对白精品刺激一区二区| 国产麻豆媒一区一区二区三区| 老鸭窝毛片一区二区三区| 精品无码一区二区三区爱欲 | 日韩视频免费一区二区三区| 日本不卡一区二区视频a| 日韩精品一区二区三区老鸦窝| 久久毛片免费看一区二区三区| 亚洲av日韩综合一区二区三区| 国产精品一区二区三区免费| 日本免费电影一区| 夜夜精品视频一区二区| 久久久久人妻一区精品色 | 中文字幕日韩人妻不卡一区| 日本精品高清一区二区2021| 国产精品分类视频分类一区| 国产福利电影一区二区三区| 日韩精品在线一区二区| 无码精品一区二区三区| 91久久精品午夜一区二区| 国产精品女同一区二区| 国产在线精品一区二区三区不卡| 精产国品一区二区三产区| 精品久久久久久无码中文字幕一区| 日本免费电影一区二区| 日韩精品区一区二区三VR| 乱子伦一区二区三区| 亚洲综合av一区二区三区| 国产乱人伦精品一区二区在线观看 | 中文字幕一区日韩在线视频| 成人无码AV一区二区| 日韩精品无码中文字幕一区二区| 日本高清不卡一区|