亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 開放式激光振鏡運動控制器在Ubuntu+Qt下自定義圖形標刻

開放式激光振鏡運動控制器在Ubuntu+Qt下自定義圖形標刻

時間:2024-10-16 11:09:40來源:深圳市正運動技術有限公司

導語:?前面課程我們講述了如何通過Ubuntu+Qt進行振鏡校正(詳情點擊→開放式激光振鏡運動控制器在Ubuntu+Qt下的激光振鏡校正),本節自定義圖形標刻是在振鏡校正的前提下實現的。

  前面課程我們講述了如何通過Ubuntu+Qt進行振鏡校正(詳情點擊→開放式激光振鏡運動控制器在Ubuntu+Qt下的激光振鏡校正),本節自定義圖形標刻是在振鏡校正的前提下實現的。

  在正式學習之前,我們先了解一下正運動ZMC408SCAN-V22運動控制器,ZMC408SCAN-V22控制器支持在Linux環境下進行開發使用。

  01、ZMC408SCAN-V22硬件介紹

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

正運動

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

正運動

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

正運動

  02、Ubuntu+Qt進行自定義圖形標刻項目的開發

  1.在Qt Creator菜單選擇“文件”→“新建文件或項目...”,打開創建項目向導。選擇Application項目集,創建Qt Widgets Application項目,設置項目名稱和保存位置。

正運動

  2.導入廠家提供的相關函數庫及頭文件。

       (1)將zmotion.h和zmcaux.h、zmcaux.cpp以及libzmotion.so庫復制到新建的項目文件夾中。

正運動

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

正運動

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

正運動

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

正運動

  03、自定義圖形標刻流程以及相關函數介紹

  1.自定義圖形標刻流程圖

正運動

  2. 相關函數介紹

  (1)連接控制器

正運動

  (2)通用命令執行接口

正運動

  (3)三次文件初始化

正運動

  (4)生成空移字符串

正運動

  (5)生成開光字符串

正運動

  (6)生成關光字符串

正運動

  (7)生成標刻點字符串

正運動

  (8)下載三次文件

正運動

  (9)設置輸出口狀態

正運動

  (10)設置模擬量輸出

正運動

  (11)設置pwm占空比

正運動

  (12)設置pwm頻率

正運動

  04、自定義圖形標刻的實現例程

  自定義圖形標刻例程主要是通過選擇簡單圖形來生成標刻的三次文件,控制器運行三次文件標刻對應的圖形,例程中的三次文件主要通過字符串追加的形式生成,在將所有圖形的繪制過程生成三次文件后下載到控制器即可。

  1.建立控制器連接,設置相關的振鏡和工藝參數,可以通過設置模擬量口和pwm以及激光器使能信號,可以打開或者關閉激光。

  ·

  void MainWindow::on_ip_open_clicked(){ char * tmp_buff = new char[16]; QString str = ui->ip_Address->text(); QByteArray ba = str.toLatin1(); tmp_buff = ba.data(); if(0 != g_handle) { ZAux_Close(g_handle); } int32 iresult= ZMC_FastOpen(ZMC_CONNECTION_ETH,tmp_buff,1000,&g_handle); if( 0 != iresult) { QMessageBox::warning(this,"提示","連接失敗"); return; } ZAux_Direct_SetDA(g_handle,markPara.PowerDA,markPara.Power); //設置模擬量 ZAux_Direct_SetPwmDuty(g_handle,markPara.PwmIo,0.5); //設置占空比 ZAux_Direct_SetPwmFreq(g_handle,markPara.PwmIo,markPara.PwmFreq); //設置頻率 ZAux_Direct_SetOp(g_handle,io_value.emit_io,0); //關閉激光輸出口 ZAux_Direct_SetOp(g_handle,io_value.enable_io,0); //關閉激光器使能}

  2.生成初始化的三次文件字符串

  可以將標刻過程中初始化的部分寫到相關的函數里面,包括設置初始化的激光器參數、標刻起點、延時參數等,方便在標刻自定義圖形的過程中直接使用。三次文件字符串本質是將basic指令進行拼接處理,將所有指令拼接完成后,可以直接寫入控制器中執行。

  ·

  void MainWindow::LaserScan_z3p_Init(){ strFile3.clear(); strFile3 += QString("BASE(%1,%2)\n").arg(4).arg(5); //設置軸號 strFile3 += "ATYPE = 21,21\n"; //設置軸類型 strFile3 += "UNITS = 100,100\n"; //設置脈沖當量 strFile3 += "AXIS_ZSET = 3,3\n"; // 開啟精準輸出 strFile3 += "MERGE = 1,1\n"; //開啟連續插補 strFile3 += QString("OP(%1,ON)\n").arg(io_value.enable_io); strFile3+=QString("MOVE_AOUT(%1,%2)\n").arg(markPara.PowerDA).arg(static_cast(markPara.Power * 255 / 100)); strFile3+=QString("MOVE_PWM(%1,0.5,%2)\n").arg(markPara.PwmIo).arg(markPara.PwmFreq); strFile3 +=QString("DECEL_ANGLE= %1,%2\n").arg(15.0/180.0*M_PI).arg(15.0/180.0*M_PI); strFile3 += QString("STOP_ANGLE = %1,%2\n").arg(90.0/180.0*M_PI).arg(90.0/180.0*M_PI); strFile3 += QString("ZSMOOTH= %1,%2\n").arg(markPara.CorDelay).arg(markPara.CorDelay); //拐角延時時間 strFile3 += QString("FORCE_SPEED = %1\n").arg(markPara.JumpSpeed); //空移速度 strFile3 += "MOVESCANABS(0,0)\n"; //移動到 0 位}

  3.生成標刻自定義圖形的三次文件字符串

  自定義圖形本質上可以分解為線段進行繪制,在進行激光標刻時也是采用線段的形式,在生成自定義圖形時,只需要控制每一條線段的起始點和結束點位置,同時在起始點和結束點的位置控制延時參數,最后在完成繪制時關閉激光和使能即可。下面是部分生成三次文件字符串以及下載的代碼。

  ·

  void MainWindow::on_create_File3_clicked(){ LaserScan_z3p_Init(strFile3); ListNode *ps = layers->next; do { Coordinate * pData = ps->data; if(ps->type == 1)//標刻點 { LaserScan_z3p_EmptyMove(strFile3,pData->next->x,pData->next->y,markPara.JumpSpeed,markPara.JumpDelay); LaserScan_z3p_OpenLight(strFile3,io_value.emit_io,markPara.OpenDelay,markPara.MarkSpeed); LaserScan_z3p_MarkPoint(strFile3,pData->next->x,pData->next->y); LaserScan_z3p_CloseLight(strFile3,io_value.emit_io,markPara.CloseDelay,markPara.JumpDelay); } else if(ps->type == 2)//標刻直線 { LaserScan_z3p_EmptyMove(strFile3,pData->next->x,pData->next->y,markPara.JumpSpeed,markPara.JumpDelay); LaserScan_z3p_OpenLight(strFile3,io_value.emit_io,markPara.OpenDelay,markPara.MarkSpeed); LaserScan_z3p_MarkPoint(strFile3,pData->next->x2,pData->next->y2); LaserScan_z3p_CloseLight(strFile3,io_value.emit_io,markPara.CloseDelay,markPara.JumpDelay); } else if(ps->type == 3)//標刻圓弧 { LaserScan_z3p_Arc(pData->next->x + ps->radius,pData->next->y - ps->radius,ps->radius,ps->angle,ps->radian,0,0); } else if(ps->type == 4)//標刻整圓 { LaserScan_z3p_Arc(pData->next->x + ps->radius,pData->next->y - ps->radius,ps->radius,0,360,0,0); } ...... //標刻其他類型 ps = ps->next; }while(ps != layers);}

  4.設置運行任務號,啟動任務進行標刻

  三次文件已經下載到控制器中,這個時候可以通過ZMC_Execute函數輸入命令去運行生成的三次文件,完成圖形的標刻。下面的啟動任務,進行標刻的部分實現代碼。

  ·

  void MainWindow::on_but_Mark_clicked(){ if( 0 == g_handle) { QMessageBox::warning(this,"提示","控制器未連接!"); return; } QString Cmd; char Response[1024]; //設置啟動任務號,執行Zmc_polyline.z3p ZMC_Execute(g_handle,"FILE3_RUN \"Zmc_polyline.z3p\",7 ",500,Response,1024);}

  5.設置配置文件信息,保留配置參數

  通過生成ini配置文件信息,在程序加載時讀取文件,程序關閉時將配置數據寫到ini配置文件中,以此實現保留最后一次的使用參數,方便下一次加載使用。通過使用內部函數庫QSettings實現的,下面是部分的實現代碼。

  ·

  void MainWindow::saveINI(){ //保存配置數據信息 QSettings *iniWrite = new QSettings("config.ini",QSettings::IniFormat); iniWrite->setValue("laserType",ui->laser_List->currentIndex()); ..... delete iniWrite;}void MainWindow::readINI(){ //讀取配置文件數據 QSettings *iniRead = new QSettings("config.ini",QSettings::IniFormat); int laserType = iniRead->value("laserType").toInt(); ui->laser_List->setCurrentIndex(laserType); ..... delete iniRead;}

  05、自定義圖形標刻的實現效果

  1.打開Qt繪制的基本圖形界面,設置基本的激光器參數和運動參數。

正運動

  2.添加想要標刻的自定義圖形,設置圖形參數,選擇添加圖形,例程中添加的圖形為點、矩形、整圓、圓弧、直線,點擊生成三次文件后,查看三次文件的內容。

正運動

  3.點擊標刻即可完成已選自定義圖形的標刻。

  4.分析生成的三次文件信息,下面是生成三次文件的部分內容,三次文件的開頭都是對軸參數加工參數的設置,當移動到運動起始點時,設置開光參數和延時參數,在軌跡完成時設置關光延時和關光操作。

  ·

  BASE(4,5)ATYPE = 21,21UNITS = 100,100AXIS_ZSET = 3,3MERGE = 1,1OP(47,ON)MOVE_AOUT(3,127)MOVE_PWM(11,0.5,4000)DECEL_ANGLE = 0.261799,0.261799STOP_ANGLE = 1.5708,1.5708ZSMOOTH = 1000,1000FORCE_SPEED = 1000MOVESCANABS(0,0)FORCE_SPEED = 1000MOVESCANABS(0.00000,0.00000)MOVE_DELAY(0.2,1)FORCE_SPEED = 500MOVEOP_DELAY = -0.1MOVE_OP(44,ON)MOVESCANABS(0.00000,0.00000)MOVEOP_DELAY = 0MOVE_DELAY(1)MOVE_OP(44,OFF)FORCE_SPEED = 1000MOVESCANABS(-5.00000,5.00000)MOVE_DELAY(200,1)FORCE_SPEED = 500MOVEOP_DELAY = -0.1MOVE_OP(44,ON)MOVESCANABS(5.00000,5.00000)MOVESCANABS(5.00000,-5.00000)MOVESCANABS(-5.00000,-5.00000)MOVESCANABS(-5.00000,5.00000)MOVEOP_DELAY = 0MOVE_DELAY(1)MOVE_OP(44,OFF)

  06、激光標刻過程

       激光標刻的過程,初始化、空移、開光、標刻、關光都封裝成函數接口,在進行標刻時,調用相關的函數接口即可生成對應的三次文件字符串。

正運動

完整代碼獲取地址

正運動

  本次,正運動技術開放式激光振鏡運動控制器在Ubuntu+Qt下自定義圖形標刻,就分享到這里。

  更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。

  本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

標簽: 正運動

點贊

分享到:

上一篇:運動控制算法有哪些

下一篇:SSI絕對值編碼器在EtherCAT運...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 化隆| 上虞市| 南靖县| 英德市| 太保市| 渑池县| 宁海县| 陇川县| 洪江市| 巴彦淖尔市| 若尔盖县| 炎陵县| 阜阳市| 平舆县| 马龙县| 庄浪县| 南城县| 寿宁县| 淮安市| 抚顺县| 巴马| 泰安市| 新郑市| 双桥区| 平谷区| 正阳县| 乃东县| 永吉县| 沐川县| 温州市| 澄迈县| 东乡族自治县| 南投市| 呼和浩特市| 北川| 延川县| 怀远县| 环江| 焦作市| 兴安盟| 布拖县|