
前面課程我們講述了如何通過Ubuntu+Qt進行振鏡校正(詳情點擊→開放式激光振鏡運動控制器在Ubuntu+Qt下的激光振鏡校正),本節(jié)CAD圖形標刻是在振鏡校正的前提下實現(xiàn)的。在正式學習之前,我們先了解一下正運動技術(shù)的ZMC408SCAN-V22運動控制器,ZMC408SCAN-V22支持在Linux環(huán)境進行開發(fā)使用。
01 ZMC408SCAN-V22硬件介紹
ZMC408SCAN-V22是正運動技術(shù)推出的高性能雙振鏡運動控制器,集成了2個百兆以太網(wǎng)口,支持EtherCAT、EtherNET、CAN、RS232、RS485、24路通用數(shù)字輸入、20路通用數(shù)字輸出、2路通用模擬量輸出、2路通用模擬量輸入、4個本地差分脈沖軸接口、1個MPG手輪編碼器接口、2個帶反饋振鏡接口、1個LASER激光專用接口、1個FIBER激光器接口。開放式系統(tǒng)框圖如下所示:

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

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

02 Ubuntu+Qt進行CAD圖形標刻項目的開發(fā)
1.在Qt Creator菜單選擇“文件”→“新建文件或項目...”,打開創(chuàng)建項目向?qū)。選擇Application項目集,創(chuàng)建Qt Widgets Application項目,設(shè)置項目名稱和保存位置。

2.導入廠家提供的相關(guān)函數(shù)庫及頭文件。
(1)將zmotion.h和zmcaux.h、zmcaux.cpp、ZmotionCad3.h以及l(fā)ibzmotion.so和libZmotionCAD3.so庫復(fù)制到新建的項目文件夾中。

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

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

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

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

2.相關(guān)函數(shù)介紹
(1)連接控制器。

(2)導入CAD圖形。

(3)取消CAD圖形導入,釋放整個圖層鏈表。

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

(5)CAD圖形解析后的鏈表結(jié)構(gòu),CAD庫通過雙向循環(huán)鏈表來存放具體的圖形數(shù)據(jù)以及解析后的坐標數(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; //組號
uint32 m_ColorPen; //顏色 DWORD
Struct_ZCad_Vect *m_pVect; //曲線列表
}Struct_ZCad_VectGroup;
(6)下載三次文件。

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

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

04 CAD圖形標刻的實現(xiàn)例程
CAD圖形標刻例程主要是使用CAD庫對CAD圖形進行解析,將圖形數(shù)據(jù)解析為鏈表結(jié)構(gòu),通過對鏈表的遍歷,獲取圖形的坐標數(shù)據(jù),將所有坐標點數(shù)據(jù)生成三次文件字符串,下載到控制器中,即可實現(xiàn)CAD圖形的標刻。
1.導入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); // 導入圖形生成軌跡
update(); //更新界面圖形
}
2.遍歷鏈表,生成三次文件字符串,首先獲取CAD圖形 數(shù)據(jù),開始遍歷鏈表,通過內(nèi)部實現(xiàn)的空移、開光、標刻、關(guān)光函數(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;
//空移到起點
LaserScan_z3p_EmptyMove(strFile3,pSeg->x1,pSeg->y1,markPara.JumpSpeed,markPara.JumpDelay);
//開光
LaserScan_z3p_OpenLight(strFile3,io_value.emit_io,markPara.OpenDelay,markPara.MarkSpeed);
int i = 0;
do
{
if(!pSeg->m_Param1)
{
// 運動
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.取消圖形導入,清空圖形鏈表,調(diào)用接口函數(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í)行三次文件,標刻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圖形標刻的實現(xiàn)效果
1.連接控制器,設(shè)置激光器以及工藝參數(shù)。

2.選擇CAD圖形導入,繪制圖形。

3.生成三次文件,標刻CAD圖形。

4.使用示波器抓取標刻的CAD圖形。

5.CAD圖形標刻效果演示視頻請點擊→開放式激光振鏡運動控制器在Ubuntu+Qt下CAD圖形標刻查看。
完整代碼獲取地址
▼

本次,正運動技術(shù)開放式激光振鏡運動控制器在Ubuntu+Qt下CAD圖形標刻,就分享到這里。
更多精彩內(nèi)容請關(guān)注“ 正運動小助手 ”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運動技術(shù)銷售工程師:400-089-8936。
本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學習,一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

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