一乾蛤、功能和工藝要求
1.接受常見(jiàn)的平面矢量圖形文件,如PLT捅僵,DXF家卖。
2.處理圖形加工的先后順序眨层,及加工方向。
3.能簡(jiǎn)單處理圖形度堤,如選擇蘸腾,旋轉(zhuǎn),平移又蝌,鏡像鸟焊,復(fù)制,排列等场致。
4.可手動(dòng)調(diào)試設(shè)備藕龄,及檢測(cè)輸入輸出。
5.加工控制能調(diào)節(jié)速度籍投,需要暫停削蕊,繼續(xù),中斷等控制圣烤。
6.加工需要顯示時(shí)度元丈,時(shí)間,位置等部分用戶信息
7.可設(shè)定加工工作原點(diǎn)喘建,激光開(kāi)關(guān)控制(此處不關(guān)心激光能量調(diào)節(jié))
二显驼、系統(tǒng)流程
三、使用函數(shù)
手動(dòng)調(diào)試需要完成的功能:輸入輸出測(cè)試坯临,手動(dòng)驅(qū)動(dòng)脈沖焊唬,檢測(cè)運(yùn)行狀態(tài),停止動(dòng)作看靠,找機(jī)械原點(diǎn):
對(duì)應(yīng)的函數(shù)調(diào)為:
d1000_out_bit 數(shù)字輸出函數(shù)赶促,可控制激光的開(kāi)啟或關(guān)閉
d1000_get_in_bit 讀輸入口狀態(tài)
d1000_start_tr_move 手動(dòng)發(fā)脈沖,可使用單軸點(diǎn)位運(yùn)行
d1000_check_done 檢測(cè)運(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 取得絕對(duì)位置
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 速度改變速度
[DividePage:NextPage]
四鸥滨、核心部分的編程
在實(shí)際編程當(dāng)中,有較多細(xì)節(jié)需要解決:
1.需要考慮響應(yīng)加工暫停谤祖,繼續(xù)婿滓,中斷的操作,位置顯示等
2.暫停后XY位置需要記錄泊脐,有可能XY被手動(dòng)移開(kāi)
3.加工完整個(gè)圖形空幻,需要回到一停止位置烁峭,以便取料
4.開(kāi)激光關(guān)激光容客,需要考慮激光的反應(yīng)時(shí)間
5.在實(shí)際應(yīng)用當(dāng)中,當(dāng)激光未開(kāi)啟時(shí)挤毯,為提高速度蛙途,可直接采用點(diǎn)位運(yùn)動(dòng)
6.需要需要速度的調(diào)節(jié)處理
注意:以下代碼只體現(xiàn)只實(shí)用的編程思想,不會(huì)能通過(guò)編譯器的編譯
const UINT NORUN =0x0000; //空閑,或中斷狀態(tài)
const UINT RUNNING =0x0001; //運(yùn)行狀態(tài)標(biāo)識(shí)
const UINT CONTINUE =0x0002; //繼續(xù)標(biāo)識(shí)
const UINT PAUSE =0X0003 //暫停標(biāo)識(shí)
UINT m_nWorkStatus = NORUN; //記錄加工狀態(tài)汤袭,初始化為NORUN
void OnButtonStart()
{//開(kāi)始按鈕(可當(dāng)暫停于扳,繼續(xù),開(kāi)始用席栅,在某些情況下炸穿,繼續(xù)與暫停隔開(kāi)較好一些)
if( runData.GetSize() < 1 )
{
messageBox(“無(wú)加工數(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的定義暖鬓,可參見(jiàn)[編程技術(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ù)檢測(cè)系統(tǒng)消息
const CDPoint &pt = runData[I];
if( I == 0 || bPause )
{
bPause = false;
//快速到達(dá)第一點(diǎn)或斷點(diǎn)
[DividePage:NextPage]
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 ); //開(kāi)啟激光
Sleep( ti_open ); //開(kāi)啟延時(shí)
}
continue;
}
Con_Line_move( pt.x, pt.y, fRunSpeed );
//此處用勻速麸档,因?yàn)?a target="_blank" class="mmstipl3" href="http://www.atkqc.com/laser-cutting-machine/">激光切割速度不快
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ù)]中或《編程高手》書(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)含檢測(cè)XY兩軸運(yùn)動(dòng)狀態(tài)檢測(cè)函數(shù)
五、注意事項(xiàng)
1.本程序未考慮脈沖當(dāng)量的關(guān)系缆刁,需要用戶自行處理乃沙,在此只提供一種編程思路
2.部分參數(shù)需要用戶通過(guò)設(shè)定,在此只為簡(jiǎn)單介紹
3.使用的部分結(jié)構(gòu)需要參考其它資料诗舰,或來(lái)電咨詢警儒。
4.控制操作在實(shí)際應(yīng)用當(dāng)中,需要改變按鈕的文字顯示眶根,用戶需要留意
5.完好的系統(tǒng)冷蚂,需要限定速度和限定XY范圍
6.在某些激光切割系統(tǒng)中,激光的控制較為復(fù)雜汛闸,其編程思想基本一致
聲明:本網(wǎng)站所收集的部分公開(kāi)資料來(lái)源于互聯(lián)網(wǎng)蝙茶,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)诸老,也不構(gòu)成任何其他建議隆夯。本站部分作品是由網(wǎng)友自主投稿和發(fā)布、編輯整理上傳别伏,對(duì)此類作品本站僅提供交流平臺(tái)蹄衷,不為其版權(quán)負(fù)責(zé)。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻厘肮、圖片愧口、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)第一時(shí)間告知咆杯,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容幌瓦,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn终太。
- 暫無(wú)反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力剥乍,智啟未來(lái)新篇章
- 定義制造業(yè)未來(lái)的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機(jī)床候赏,助力制造升級(jí)技術(shù)專題
- 汽車輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動(dòng)機(jī)解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題