• COMIZOA/COMI-LX系列運(yùn)動(dòng)控制卡在激光切割中的應(yīng)用———COMIZOA/COMI-LX系列運(yùn)動(dòng)控制卡在激光切割中的應(yīng)用
    廣州博瑋伺服科技有限公司

    一、功能和工藝要求
    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í)間,位置等部分用戶(hù)信息
    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 速度改變速度


    四、核心部分的編程
    在實(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)
    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)榧す馇懈钏俣炔豢?
    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)系,需要用戶(hù)自行處理,在此只提供一種編程思路
    2.部分參數(shù)需要用戶(hù)通過(guò)設(shè)定,在此只為簡(jiǎn)單介紹
    3.使用的部分結(jié)構(gòu)需要參考其它資料,或來(lái)電咨詢(xún)。
    4.控制操作在實(shí)際應(yīng)用當(dāng)中,需要改變按鈕的文字顯示,用戶(hù)需要留意
    5.完好的系統(tǒng),需要限定速度和限定XY范圍
    6.在某些激光切割系統(tǒng)中,激光的控制較為復(fù)雜,其編程思想基本一致

     

     

     
     
    網(wǎng)站首頁(yè)  |  關(guān)于我們  |  聯(lián)系我們  |  廣告服務(wù)  |  版權(quán)隱私  |  友情鏈接  |  站點(diǎn)導(dǎo)航
     
    日韩精品无码人成视频手机 | 91精品啪在线观看国产线免费| 久久频这里精品99香蕉久| 午夜亚洲国产精品福利| 人妻少妇精品视中文字幕国语| 国产精品国产三级国快看| 无码久久精品国产亚洲Av影片| 国产精品第一页第一页| 久久亚洲精品无码播放| 国产精品18久久久久久vr| 国产精品国产三级国产| 久久九九精品国产av片国产 | 99热这里有精品| 国产精品久久久99| 亚洲中文字幕久久精品无码A| 亚洲精品色午夜无码专区日韩| 69精品人人人人人人人人人 | 亚洲国产精品特色大片观看完整版| 精品国产一区二区三区免费看 | 久久久无码精品亚洲日韩软件| 国产精品视频一区国模私拍| 无码国内精品人妻少妇蜜桃视频| 人妻精品久久久久中文字幕| 四虎精品视频在线永久免费观看| 国产99视频精品免费专区| 国产日韩久久久精品影院首页 | 久久夜色精品国产网站| 精品久久久久久中文字幕| 亚洲AV无码乱码精品国产| 精品69久久久久久99| 亚洲高清国产拍精品熟女| 国产福利91精品一区二区| 99久久久国产精品免费牛牛四川| 久久亚洲精品视频| 99热婷婷国产精品综合| 久久亚洲AV永久无码精品| 国产精品内射婷婷一级二| 亚洲精品高清在线| 2048亚洲精品国产| 四虎国产精品免费久久影院| 国产精品久久久久国产精品|