中國(guó)自動(dòng)化學(xué)會(huì)專家咨詢工作委員會(huì)指定宣傳媒體
文摘詳情
gkongbbs

開(kāi)放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下CAD圖形標(biāo)刻

http://casecurityhq.com 2024-09-18 11:26 深圳市正運(yùn)動(dòng)技術(shù)有限公司

001.gif

 

前面課程我們講述了如何通過(guò)Ubuntu+Qt進(jìn)行振鏡校正(詳情點(diǎn)擊→開(kāi)放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下的激光振鏡校正),本節(jié)CAD圖形標(biāo)刻是在振鏡校正的前提下實(shí)現(xiàn)的。在正式學(xué)習(xí)之前,我們先了解一下正運(yùn)動(dòng)技術(shù)的ZMC408SCAN-V22運(yùn)動(dòng)控制器,ZMC408SCAN-V22支持在Linux環(huán)境進(jìn)行開(kāi)發(fā)使用。

01 ZMC408SCAN-V22硬件介紹

ZMC408SCAN-V22是正運(yùn)動(dòng)技術(shù)推出的高性能雙振鏡運(yùn)動(dòng)控制器,集成了2個(gè)百兆以太網(wǎng)口,支持EtherCAT、EtherNET、CAN、RS232、RS485、24路通用數(shù)字輸入、20路通用數(shù)字輸出、2路通用模擬量輸出、2路通用模擬量輸入、4個(gè)本地差分脈沖軸接口、1個(gè)MPG手輪編碼器接口、2個(gè)帶反饋振鏡接口、1個(gè)LASER激光專用接口、1個(gè)FIBER激光器接口。開(kāi)放式系統(tǒng)框圖如下所示:

001.png

ZMC408SCAN-V22總線控制器支持EtherCAT總線連接,支持最快500μs的刷新周期,支持最多達(dá)16軸運(yùn)動(dòng)控制,支持直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實(shí)現(xiàn)實(shí)時(shí)的運(yùn)動(dòng)控制。

002.png

ZMC408SCAN-V22通過(guò)CAN、EtherCAT總線可以連接各個(gè)擴(kuò)展模塊,從而擴(kuò)展數(shù)字量、模擬量或運(yùn)動(dòng)軸??梢栽赪indows,Linux,Mac,Android,Wince各種操作系統(tǒng)下開(kāi)發(fā),提供vc,c#,vb.net,labview等各種環(huán)境的dll庫(kù)。上位機(jī)軟件編程參考《ZMotion PC函數(shù)庫(kù)編程手冊(cè)》。

003.png

02 Ubuntu+Qt進(jìn)行CAD圖形標(biāo)刻項(xiàng)目的開(kāi)發(fā)

1.在Qt Creator菜單選擇“文件”→“新建文件或項(xiàng)目...”,打開(kāi)創(chuàng)建項(xiàng)目向?qū)?。選擇Application項(xiàng)目集,創(chuàng)建Qt Widgets Application項(xiàng)目,設(shè)置項(xiàng)目名稱和保存位置。

004.png

2.導(dǎo)入廠家提供的相關(guān)函數(shù)庫(kù)及頭文件。

(1)將zmotion.h和zmcaux.h、zmcaux.cpp、ZmotionCad3.h以及l(fā)ibzmotion.so和libZmotionCAD3.so庫(kù)復(fù)制到新建的項(xiàng)目文件夾中。

005.png

(2)在Qt Creator選擇新建的Qt項(xiàng)目右擊選擇“添加庫(kù)...”→“外部庫(kù)”點(diǎn)擊下一步,將剛才復(fù)制到項(xiàng)目文件夾上的libzmotion.so和libZmotionCAD3.so庫(kù)文件導(dǎo)入到項(xiàng)目中。

006.png

(3)在Qt Creator下右擊新建的Qt項(xiàng)目,選擇“添加現(xiàn)有文件...”,將之前復(fù)制到項(xiàng)目文件下的頭文件zmotion.h和ZScancorrect.h以及zmcaux.cpp和zmcaux.h添加到項(xiàng)目中。

007.png

(4)函數(shù)庫(kù)添加成功后,打開(kāi)pro文件可以看到相關(guān)的函數(shù)庫(kù)和頭文件信息。此時(shí)已經(jīng)將例程需要用到的函數(shù)庫(kù)和頭文件都加入到項(xiàng)目中了,接下來(lái)開(kāi)始實(shí)現(xiàn)例程。

008.png

03 CAD圖形標(biāo)刻流程以及相關(guān)函數(shù)介紹

1.CAD圖形標(biāo)刻流程圖

009.png

2.相關(guān)函數(shù)介紹

(1)連接控制器。

016.png

(2)導(dǎo)入CAD圖形。

017.png

(3)取消CAD圖形導(dǎo)入,釋放整個(gè)圖層鏈表。

018.png

(4)獲取CAD圖形的范圍。

019.png

(5)CAD圖形解析后的鏈表結(jié)構(gòu),CAD庫(kù)通過(guò)雙向循環(huán)鏈表來(lái)存放具體的圖形數(shù)據(jù)以及解析后的坐標(biāo)數(shù)據(jù)。

typedef struct Struct_ZCad_VectGroup
{
    int m_itemtype; //類型
    struct Struct_ZCad_VectGroup *m_prev;
    struct Struct_ZCad_VectGroup *m_pnext;
    int     m_GroupNum;       //組號(hào)
    uint32  m_ColorPen;       //顏色 DWORD
    Struct_ZCad_Vect *m_pVect; //曲線列表    
}Struct_ZCad_VectGroup;

(6)下載三次文件。

020.png

(7)通用命令執(zhí)行接口。

021.png

(8)獲取輸出口的狀態(tài)。

022.png

04 CAD圖形標(biāo)刻的實(shí)現(xiàn)例程

CAD圖形標(biāo)刻例程主要是使用CAD庫(kù)對(duì)CAD圖形進(jìn)行解析,將圖形數(shù)據(jù)解析為鏈表結(jié)構(gòu),通過(guò)對(duì)鏈表的遍歷,獲取圖形的坐標(biāo)數(shù)據(jù),將所有坐標(biāo)點(diǎn)數(shù)據(jù)生成三次文件字符串,下載到控制器中,即可實(shí)現(xiàn)CAD圖形的標(biāo)刻。

1.導(dǎo)入CAD圖形。

void MainWindow::on_import_2_clicked()
{
    data_Load();  //獲取界面的設(shè)置參數(shù)
    strFile3.clear();
    LaserScan_z3p_Init();  //三次文件字符串初始化
    QString qstr = ui->file_route->text();  //獲取CAD圖形的路徑和文件名
    QByteArray byteArray = qstr.toUtf8();
    const char* cstr = byteArray.constData();
    m_pGraph = ZMotionCad3_ImportVectGraph(cstr,1016,0,0.001,0); // 導(dǎo)入圖形生成軌跡
    update();  //更新界面圖形
}

2.遍歷鏈表,生成三次文件字符串,首先獲取CAD圖形 數(shù)據(jù),開(kāi)始遍歷鏈表,通過(guò)內(nèi)部實(shí)現(xiàn)的空移、開(kāi)光、標(biāo)刻、關(guān)光函數(shù)接口生成三次文件字符串。以下是部分實(shí)現(xiàn)代碼。

if (m_pGraph !=NULL)
{
    Struct_ZCad_VectGroup *ps = m_pGraph;
    do
    {
        Struct_ZCad_Vect * pVect = ps->m_pVect;
        do
        {
            Struct_ZCad_Seg * pSeg = pVect->m_pLine;
            //空移到起點(diǎn)
            LaserScan_z3p_EmptyMove(strFile3,pSeg->x1,pSeg->y1,markPara.JumpSpeed,markPara.JumpDelay);
            //開(kāi)光
            LaserScan_z3p_OpenLight(strFile3,io_value.emit_io,markPara.OpenDelay,markPara.MarkSpeed);
            int i = 0;
            do
            {
                if(!pSeg->m_Param1)
                {
                    // 運(yùn)動(dòng)
                    strFile3 += QString("MOVESCANABS(%1,%2)\n").arg(pSeg->x2).arg(pSeg->y2);
                }
                i++;
                pSeg = pSeg->m_pnext;
            }while(pSeg != pVect->m_pLine);
            //關(guān)光
            LaserScan_z3p_CloseLight(strFile3,io_value.emit_io,markPara.CloseDelay,markPara.JumpDelay);
            pVect = pVect->m_pnext;
        }while(pVect != ps->m_pVect);
        ps = ps->m_pnext;
    }while(ps != m_pGraph);
}

3.取消圖形導(dǎo)入,清空?qǐng)D形鏈表,調(diào)用接口函數(shù),清空鏈表,同時(shí)更新界面即可。

void MainWindow::on_cancel_clicked()
{
    ZMotionCad3_DeleteChain((Struct_ZCad_Item *)m_pGraph);
    m_pGraph = NULL;
    update();
}

4.將三次文件字符串下載到控制器中。

void MainWindow::on_create_File3_clicked()
{
    ZMC_DownMem3File(g_handle,strFile3.toLatin1().data(),strFile3.length(),"Zmc_CAD.z3p");
    QString filePath = "Zmc_CAD.z3p";
    QFile file(filePath);
    if (file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        QTextStream stream(&file);
        stream << strFile3;
        file.close();
        qDebug() << "File saved successfully:" << filePath;
    }
    else
    {
        qDebug() << "Failed to open file for writing:" << filePath;
    }
}

5.使用在線命令執(zhí)行三次文件,標(biāo)刻CAD圖形。

void MainWindow::on_but_Mark_clicked()
{
    if( 0 == g_handle)
    {
        QMessageBox::warning(this,"提示","控制器未連接!");
        return;
    }
    char Response[1024];
    ZMC_Execute(g_handle,"FILE3_RUN  \"Zmc_CAD.z3p\",7 ",500,Response,1024);
}

05 CAD圖形標(biāo)刻的實(shí)現(xiàn)效果

1.連接控制器,設(shè)置激光器以及工藝參數(shù)。

010.png

2.選擇CAD圖形導(dǎo)入,繪制圖形。

011.png

3.生成三次文件,標(biāo)刻CAD圖形。

012.png

4.使用示波器抓取標(biāo)刻的CAD圖形。

013.png

5.CAD圖形標(biāo)刻效果演示視頻請(qǐng)點(diǎn)擊→開(kāi)放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下CAD圖形標(biāo)刻查看。

完整代碼獲取地址


014.png

本次,正運(yùn)動(dòng)技術(shù)開(kāi)放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下CAD圖形標(biāo)刻,就分享到這里。

更多精彩內(nèi)容請(qǐng)關(guān)注“ 正運(yùn)動(dòng)小助手 ”公眾號(hào),需要相關(guān)開(kāi)發(fā)環(huán)境與例程代碼,請(qǐng)咨詢正運(yùn)動(dòng)技術(shù)銷售工程師:400-089-8936。

本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國(guó)智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來(lái)源。

企業(yè)微信截圖_20240321153031.png

正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國(guó)家級(jí)高新技術(shù)企業(yè)。正運(yùn)動(dòng)技術(shù)匯集了來(lái)自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國(guó)內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國(guó)內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺(tái)技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動(dòng)控制卡_運(yùn)動(dòng)控制器_EtherCAT運(yùn)動(dòng)控制卡_EtherCAT控制器_運(yùn)動(dòng)控制系統(tǒng)_視覺(jué)控制器__運(yùn)動(dòng)控制PLC_運(yùn)動(dòng)控制_機(jī)器人控制器_視覺(jué)定位_XPCIe/XPCI系列運(yùn)動(dòng)控制卡等等。

版權(quán)所有 中華工控網(wǎng) Copyright?2024 Gkong.com, All Rights Reserved