《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > COMIZOA/COMI-LX系列運動控制卡在激光切割中的應用
COMIZOA/COMI-LX系列運動控制卡在激光切割中的應用
摘要: COMIZOA/COMI-LX系列運動控制卡在激光切割中的應用
Abstract:
Key words :

一、功能和工藝要求
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.在某些激光切割系統中,激光的控制較為復雜,其編程思想基本一致

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 久久99精品久久久久久hb无码| 亚洲精品自在在线观看| 两个人看的www免费视频中文| 成人区人妻精品一区二区不卡网站| 亚洲国产精品久久网午夜| 精品国产欧美精品v| 国产欧美日韩综合精品一区二区| gogo全球大胆专业女高清视频| 日本毛茸茸的丰满熟妇| 亚洲大尺度无码无码专区| 精品国产乱码久久久久久1区2区| 国产拍拍拍无码视频免费| 99久久99久久精品国产片果冻 | 日韩美女片视频| 人体大胆做受大胆视频一| 色偷偷人人澡久久天天| 国产男女猛烈无遮挡免费网站 | 91全国探花精品正在播放| 工棚里的换爱系列小说| 久久国产中文字幕| 欧美乱大交xxxxx在线观看| 亚洲黄色在线视频| 精品欧美一区二区三区精品久久| 国产在线视频网| 怡红院视频在线| 大荫蒂女人毛茸茸图片| 两根硕大一起挤进小h| 日韩一区二区三| 亚洲中文字幕在线观看| 波多野结衣大片| 免费观看国产网址你懂的| 色偷偷成人网免费视频男人的天堂| 国产成人亚洲精品大帝| 2018国产大陆天天弄| 多人交换伦交视频| 一本一道波多野结衣大战黑人 | 亚洲综合一二三| 精品人人妻人人澡人人爽牛牛| 国产一级做a爱片久久毛片a| 91丁香亚洲综合社区| 国产精品毛片完整版视频|