0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开放式激光振镜运动控制器在Ubuntu+Qt下CAD图形标刻

正运动技术 来源:正运动技术 作者:正运动技术 2024-09-18 15:12 次阅读

前面课程我们讲述了如何通过Ubuntu+Qt进行振镜校正(详情点击→开放式激光振镜运动控制器在Ubuntu+Qt下的激光振镜校正),本节CAD图形标刻是在振镜校正的前提下实现的。

在正式学习之前,我们先了解一下正运动ZMC408SCAN-V22运动控制器,ZMC408SCAN-V22控制器支持在Linux环境下进行开发使用。

01ZMC408SCAN-V22硬件介绍

ZMC408SCAN-V22是正运动技术推出的高性能双振镜运动控制器,集成了2个百兆以太网口,支持EtherCAT、EtherNET、CAN、RS232RS485、24路通用数字输入、20路通用数字输出、2路通用模拟量输出、2路通用模拟量输入、4个本地差分脉冲轴接口、1个MPG手轮编码器接口、2个带反馈振镜接口、1个LASER激光专用接口、1个FIBER激光器接口。开放式系统框图如下所示:

wKgaombqfMmAENTdAAefVd_mB44283.png

ZMC408SCAN-V22总线控制器支持EtherCAT总线连接,支持最快500μs的刷新周期,支持最多达16轴运动控制,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等;采用优化的网络通讯协议可以实现实时的运动控制。

wKgaombqfM6AMYffAAK1OSOaHPw424.png

ZMC408SCAN-V22通过CAN、EtherCAT总线可以连接各个扩展模块,从而扩展数字量、模拟量或运动轴。可以在

Windows,Linux,Mac,Android,Wince各种操作系统下开发,提供vc,c#,vb.net,labview等各种环境的dll库。上位机软件编程参考《ZMotion PC函数库编程手册》。

wKgaomagX2SAGZXJAAFWXI2sSnE360.png

02 Ubuntu+Qt进行CAD图形标刻项目的开发

1.在Qt Creator菜单选择“文件”→“新建文件或项目...”,打开创建项目向导。选择Application项目集,创建Qt Widgets Application项目,设置项目名称和保存位置。

wKgaombqfOSAINhrAAEgl86JlkI453.png

2.导入厂家提供的相关函数库及头文件。

(1)将zmotion.h和zmcaux.h、zmcaux.cpp、ZmotionCad3.h以及libzmotion.so和libZmotionCAD3.so库复制到新建的项目文件夹中。

wKgaombqfOiAa4z7AACeGZd_deU114.png

(2)在Qt Creator选择新建的Qt项目右击选择“添加库...”→“外部库”点击下一步,将刚才复制到项目文件夹上的libzmotion.so和libZmotionCAD3.so库文件导入到项目中。

wKgaombqfO2AcXVUAADJ3jnJcTE356.png

(3)在Qt Creator下右击新建的Qt项目,选择“添加现有文件...”,将之前复制到项目文件下的头文件zmotion.h和ZScancorrect.h以及zmcaux.cpp和zmcaux.h添加到项目中。

wKgZombqfPGAUNX3AAHE7r5eRu4838.png

(4)函数库添加成功后,打开pro文件可以看到相关的函数库和头文件信息。此时已经将例程需要用到的函数库和头文件都加入到项目中了,接下来开始实现例程。

wKgaombqfPWALwRJAACw_f5w6-U891.png

03CAD图形标刻流程以及相关函数介绍

1.CAD图形标刻流程图

wKgaombqfPiATgrhAAC3PqA-zs0527.png

2.相关函数介绍

(1)连接控制器。

wKgaombqfP6ALsmSAAEAl8rMWQk886.png

(2)导入CAD图形。

wKgZombqfQKAHqs-AAFOiZILLc4266.png

(3)取消CAD图形导入,释放整个图层链表。

wKgaombqfQeANqblAACub07k9TY921.png

(4)获取CAD图形的范围。

wKgaombqfQ2AAAMQAAFT1LLXzbc193.png

(5)CAD图形解析后的链表结构,CAD库通过双向循环链表来存放具体的图形数据以及解析后的坐标数据。

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)下载三次文件。

wKgZombqfZGAevlNAAD7PD1RkCw654.png

(7)通用命令执行接口。

wKgZombqfZyATK9bAAEireRLb1A740.png

(8)获取输出口的状态。

wKgZombqfaOAPxTQAADXjBpAlxA876.png

04 CAD图形标刻的实现例程

CAD图形标刻例程主要是使用CAD库对CAD图形进行解析,将图形数据解析为链表结构,通过对链表的遍历,获取图形的坐标数据,将所有坐标点数据生成三次文件字符串,下载到控制器中,即可实现CAD图形的标刻。

1.导入CAD图形。

void MainWindow::on_import_2_clicked()
{
    data_Load();  //获取界面的设置参数
    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图形 数据,开始遍历链表,通过内部实现的空移、开光、标刻、关光函数接口生成三次文件字符串。以下是部分实现代码。

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);
            //关光
            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.取消图形导入,清空图形链表,调用接口函数,清空链表,同时更新界面即可。

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.使用在线命令执行三次文件,标刻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图形标刻的实现效果

1.连接控制器,设置激光器以及工艺参数。

wKgaombqfWiAEFyiAABMILHOz5A941.jpg

2.选择CAD图形导入,绘制图形。

wKgaombqfWyANoZQAABNLCgubkU243.jpg

3.生成三次文件,标刻CAD图形。

wKgZombqfW2AKAxWAABg3G45lvk670.jpg

4.使用示波器抓取标刻的CAD图形。

wKgaombqfW2AOUYjAABxhG0zW10216.jpg

本次,正运动技术开放式激光振镜运动控制器在Ubuntu+Qt下CAD图形标刻,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 运动控制器
    +关注

    关注

    2

    文章

    381

    浏览量

    24530
  • CAD
    CAD
    +关注

    关注

    17

    文章

    1067

    浏览量

    72021
  • Ubuntu
    +关注

    关注

    5

    文章

    552

    浏览量

    29290
  • 开放式
    +关注

    关注

    0

    文章

    24

    浏览量

    9182
  • 激光振镜
    +关注

    关注

    1

    文章

    17

    浏览量

    3257
收藏 人收藏

    评论

    相关推荐

    开放式激光运动控制器Ubuntu+Qt的文本

    基于Ubuntu+Qt的文本例程的实现
    的头像 发表于 09-10 10:37 136次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>Ubuntu+Qt</b><b class='flag-5'>下</b>的文本<b class='flag-5'>标</b><b class='flag-5'>刻</b>

    机器视觉运动控制一体机VPLC532E汽车胶带缠绕的开放式CNC应用

    机器视觉运动控制一体机VPLC532E汽车胶带缠绕的开放式CNC应用
    的头像 发表于 08-19 10:03 164次阅读
    机器视觉<b class='flag-5'>运动</b><b class='flag-5'>控制</b>一体机VPLC532E<b class='flag-5'>在</b>汽车胶带缠绕的<b class='flag-5'>开放式</b>CNC应用

    开放式激光运动控制器激光清洗应用

    开放式激光运动控制器激光清洗解决方案。
    的头像 发表于 07-18 09:44 164次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>的<b class='flag-5'>激光</b>清洗应用

    开放式激光运动控制器的视觉校正精度解决方案

    想知道怎么实现自动校正吗?快来点击正运动精囊!
    的头像 发表于 04-26 14:36 386次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>的视觉校正<b class='flag-5'>振</b><b class='flag-5'>镜</b>精度解决方案

    2024上海慕尼黑开放式激光运动控制器解决方案

    运动(E2.0602)与您不见不散!
    的头像 发表于 03-20 10:34 402次阅读
    2024上海慕尼黑<b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>解决方案

    EtherCAT运动控制器ROS上的应用(

    运动技术动态链接库环境配置以及EtherCAT运动控制器ROS的单轴运动
    的头像 发表于 03-13 14:54 360次阅读
    EtherCAT<b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b>ROS上的应用(<b class='flag-5'>下</b>)

    运动技术邀您共聚2024西安国际工业自动化机器人展

    运动技术将携手合作伙伴推进全国产EtherCAT运动控制边缘控制器开放式激光
    的头像 发表于 03-08 15:51 236次阅读
    正<b class='flag-5'>运动</b>技术邀您共聚2024西安国际工业自动化机器人展

    开放式高实时高性能PLC控制器解决方案-基于米尔电子STM32MP135

    实时高性能需求尤其突出。面对以上挑战,合作伙伴翌控科技基于米尔STM32MP135开发板发布开放式高实时高性能PLC控制器解决方案,将高精准数据采集、预处理、存储、通信与高实时控制融为一体,为
    发表于 03-07 20:06

    LabVIEW开发二维激光扫描控制系统

    以及驱动底层驱动软件的开发。此外,还对扫描图形的几何失真进行了分析和校正。基于这些工作,二维激光扫描
    发表于 12-22 11:00

    解析起点爆点问题及解决方案

    PWM控制指令说明: 1、PWM_FREQ -- PWM 频率 2、PWM_DUTY -- PWM占空比 本文使用产品介绍:ZMC408SCAN激光
    发表于 11-06 10:30

    全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发

    今天,正运动小助手给大家分享一全国产EtherCAT运动控制边缘控制器ZMC432H如何使用Python+
    的头像 发表于 11-02 16:45 463次阅读
    全国产EtherCAT<b class='flag-5'>运动</b><b class='flag-5'>控制</b>边缘<b class='flag-5'>控制器</b>(六):RtBasic文件下载与连续轨迹加工的Python+<b class='flag-5'>Qt</b>开发

    开放式激光运动控制器动力电池模组连接片的焊接应用

    伴随着国内新能源汽车市场的强劲增长,国内激光焊接产业迅速崛起。激光焊接在动力电池生产的中道和后道生产过程中得到广泛应用,包括电池模组连接片焊接、防爆阀焊接、以及极耳的焊接等关键工序。
    的头像 发表于 10-30 10:05 341次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b>动力电池模组连接片的焊接应用