技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > DMC1000控制卡在激光切割中的應(yīng)用

DMC1000控制卡在激光切割中的應(yīng)用

時(shí)間:2009-08-12 13:26:09來源:yangliu

導(dǎo)語:?簡單處理圖形,如選擇,旋轉(zhuǎn),平移,鏡像,復(fù)制,排列等。
一、功能和工藝要求 1.接受常見的平面矢量圖形文件,如PLT,DXF。 2.處理圖形加工的先后順序,及加工方向。 3.能簡單處理圖形,如選擇,旋轉(zhuǎn),平移,鏡像,復(fù)制,排列等。 4.可手動(dòng)調(diào)試設(shè)備,及檢測輸入輸出。 5.加工控制能調(diào)節(jié)速度,需要暫停,繼續(xù),中斷等控制。 6.加工需要顯示時(shí)度,時(shí)間,位置等部分用戶信息 7.可設(shè)定加工工作原點(diǎn),激光開關(guān)控制(此處不關(guān)心激光能量調(diào)節(jié)) 二、系統(tǒng)流程
三、使用函數(shù) 手動(dòng)調(diào)試需要完成的功能:輸入輸出測試,手動(dòng)驅(qū)動(dòng)脈沖,檢測運(yùn)行狀態(tài),停止動(dòng)作,找機(jī)械原點(diǎn): 對應(yīng)的函數(shù)調(diào)為: d1000_out_bit 數(shù)字輸出函數(shù),可控制激光的開啟或關(guān)閉 d1000_get_in_bit 讀輸入口狀態(tài) d1000_start_tr_move 手動(dòng)發(fā)脈沖,可使用單軸點(diǎn)位運(yùn)行 d1000_check_done 檢測運(yùn)動(dòng)狀態(tài)函數(shù) d1000_decel_stop 停止脈沖輸出(減速停較好) d1000_home_move 單軸找原點(diǎn)函數(shù) d1000_home_move_all 多軸找原點(diǎn)函數(shù) d1000_board_init 控制卡初始化 d1000_board_close 控制卡釋放 位置顯示及清除需要的函數(shù): d1000_get_abs_position 取得絕對位置 d1000_set_position 設(shè)定位置函數(shù),當(dāng)值為0時(shí)位置清除 加工控制需要的函數(shù): d1000_start_ta_line2 兩軸插補(bǔ)函數(shù) d1000_set_vector_profile 設(shè)定矢量插補(bǔ)速度 d1000_change_speed 速度改變速度 四、核心部分的編程 在實(shí)際編程當(dāng)中,有較多細(xì)節(jié)需要解決: 1.需要考慮響應(yīng)加工暫停,繼續(xù),中斷的操作,位置顯示等 2.暫停后XY位置需要記錄,有可能XY被手動(dòng)移開 3.加工完整個(gè)圖形,需要回到一停止位置,以便取料 4.開激光關(guān)激光,需要考慮激光的反應(yīng)時(shí)間 5.在實(shí)際應(yīng)用當(dāng)中,當(dāng)激光未開啟時(shí),為提高速度,可直接采用點(diǎn)位運(yùn)動(dòng) 6.需要需要速度的調(diào)節(jié)處理 注意:以下代碼只體現(xiàn)只實(shí)用的編程思想,不會(huì)能通過編譯器的編譯 const UINT NORUN =0x0000; //空閑,或中斷狀態(tài) const UINT RUNNING =0x0001; //運(yùn)行狀態(tài)標(biāo)識 const UINT CONTINUE =0x0002; //繼續(xù)標(biāo)識 const UINT PAUSE =0X0003 //暫停標(biāo)識 UINT m_nWorkStatus = NORUN; //記錄加工狀態(tài),初始化為NORUN void OnButtonStart() {//開始按鈕(可當(dāng)暫停,繼續(xù),開始用,在某些情況下,繼續(xù)與暫停隔開較好一些) if( runData.GetSize() < 1 ) { messageBox(“無加工數(shù)據(jù)或未生成加工路徑”,”提示”); return;, } switch( m_nWorkStatus ){ case NORUN://若空閑,直接加工 m_nWorkStatus = RUNNING; //運(yùn)行 RunData(); //調(diào)用加工核心函數(shù) Break; Case RUNNING://若在運(yùn)行,則中斷 M_nWorkStatus = PAUSE; StopMove( X,Y ); //停止XY驅(qū)動(dòng) Break; Case PAUSE://若為暫停 M_nWorkStatus = CONTINUE;//繼續(xù)處理 Break; } } void OnButtonStop() {//中斷加工處理 m_nWorkStatus = NORUN; StopMove(X,Y); } double fRunSpeed(10.0); //加工速度 void RunData() { //數(shù)據(jù)runData的定義為: CarrayrunData //CDPoint的定義,可參見[編程技術(shù)]的資料 const int nSize = runData.GetSize(); //處理進(jìn)度度 progress.SetRang(0, nSize); CDPoint pntBreak; //暫停時(shí)記錄的斷點(diǎn) BOOL bPause=false; for( int I(0); I { ::DoEvent(); //一個(gè)系統(tǒng)消息處理函數(shù) switch( m_nWorkStatus ){ case PAUSE://若為暫停,只管循檢系統(tǒng)消息 continue; case CONTINUE: m_nWorkStatus = RUNNING; case RUNNING: { if( IsMove(X,Y) ) break;//如果XY在運(yùn)行,則繼續(xù)檢測系統(tǒng)消息 const CDPoint &pt = runData[I]; if( I == 0 || bPause ) { bPause = false; //快速到達(dá)第一點(diǎn)或斷點(diǎn) I == 0? fast_moveto( pt.x, pt.y )://達(dá)到第一點(diǎn) fast_moveto( pntBreak.x, pntBreak.y);//達(dá)到斷點(diǎn) while( IsMove(X,Y) ) :: DoEvent();//等待達(dá)到位置 if( m_nWorkStatus == RUNNING ) { OpenLasert( Nio ); //開啟激光 Sleep( ti_open ); //開啟延時(shí) } continue; } Con_Line_move( pt.x, pt.y, fRunSpeed ); //此處用勻速,因?yàn)榧す馇懈钏俣炔豢? while( IsMove(X,Y) ) ::DoEvent(); if( m_nWorkStatus == PAUSE ) { CloseLasert( nIO );//關(guān)閉激光 Sleep( ti_close );//關(guān)閉延時(shí) bPause = true;//有暫停 pntBreak.x = GetX(); pntBreak.y = GetY();//記錄斷點(diǎn)位置 } else if( m_nWorkStatus == RUNNING ) {//正常完成一個(gè)數(shù)據(jù)點(diǎn) I ++; Progress.PostMessage( PM_POS, I, 0 ); //更新進(jìn)度條 } }// end case running }// end switch workstatus }// end for i CloseLasert( nIO );//關(guān)閉激光 Sleep( ti_close );//關(guān)閉延時(shí) if( m_nWorkStatus != NORUN ) {//順序加工完 Fast_moveto (stopX,stopY);//達(dá)到停止位置 //其它計(jì)數(shù)處理 } else{ //提示加工中斷 } } void OnVscrollSpeed( ) {//響應(yīng)的速度事件調(diào)節(jié) fRunSpeed += 1; 或者 fRunSpeed -=1; d1000_change_speed( fRunSpeed );//速度值更改 } 注意: ::DoEvent 函數(shù)在[編程技術(shù)]中或《編程高手》書中可找到 OpenLasert和CloseLasert函數(shù)只完成一個(gè)d1000_out_bit操作 Fast_moveto 內(nèi)含XY兩軸點(diǎn)位或插補(bǔ)驅(qū)動(dòng)函數(shù) Con_line_move 內(nèi)含XY兩軸的插補(bǔ)驅(qū)動(dòng)函數(shù)(一般為常速) GetX() 和GetY()函數(shù)內(nèi)含d1000_get_abs_position位置讀取函數(shù) IsMove函數(shù)內(nèi)含檢測XY兩軸運(yùn)動(dòng)狀態(tài)檢測函數(shù) 五、注意事項(xiàng) 1.本程序未考慮脈沖當(dāng)量的關(guān)系,需要用戶自行處理,在此只提供一種編程思路 2.部分參數(shù)需要用戶通過設(shè)定,在此只為簡單介紹 3.使用的部分結(jié)構(gòu)需要參考其它資料,或來電咨詢。 4.控制操作在實(shí)際應(yīng)用當(dāng)中,需要改變按鈕的文字顯示,用戶需要留意 5.完好的系統(tǒng),需要限定速度和限定XY范圍 6.在某些激光切割系統(tǒng)中,激光的控制較為復(fù)雜,其編程思想基本一致

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:DMC2000運(yùn)動(dòng)控制卡常見軟件問...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號