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

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

3天内不再提示

如何通过Qt编程实现小线段轨迹连续加工

正运动技术 来源:正运动技术 作者:正运动技术 2022-05-13 17:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天,正运动小助手给大家分享一下EtherCAT运动控制卡开发教程之Qt,主要介绍一下如何通过Qt编程实现小线段轨迹连续加工,暂停与继续。

ECI2828运动控制卡的硬件介绍

ECI2828系列控制卡支持最多达16轴直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴、机械手指令等;采用优化的网络通讯协议可以实现实时的运动控制。

ECI2828系列运动控制卡支持以太网,232通讯接口电脑相连,接收电脑的指令运行,可以通过EtherCAT总线和CAN总线去连接各个扩展模块,从而扩展输入输出点数或运动轴。

ECI2828系列运动控制卡的应用程序可以使用VC、VB、VS、C++C#等多种高级语言编程来开发,程序运行时需要动态库zmotion.dll。调试时可以把ZDevelop软件同时连接到控制器,从而方便调试、方便观察。

1.png

一、Qt进行运动控制卡开发的流程

1.新建Qt项目。

2.png

图1:新建Qt项目

3.png

图2:选择项目路径

4.png

图3:选择Qt编译套件(kits)

5.png

图4:选择基类

2.将函数库相关的文件复制到新建的项目中。

6.png

3.向新建的项目里面添加函数库的静态库。(zmotion.lib)

7.png

第一步:添加函数库1

8.png

第二步:添加函数库2

9.png

第三步:添加函数库3

4.添加函数库相关的头文件到项目中。

10.png

5.声明相关头文件,并定义连接句柄。

11.png

二、PC函数介绍

1.PC函数手册也在光盘资料里面,具体路径如下:“光盘资料\8.PC函数\函数库2.1\ZMotion函数库编程手册 V2.1.pdf”。

12.png

2.PC编程,一般如果网口对控制器和工控机进行链接。网口链接函数接口是ZAux_OpenEth();如果链接成功,该接口会返回一个链接句柄。通过操作这个链接句柄可以实现对控制器的控制。

ZAux_OpenEth()接口说明:

13.png

3.连续插补和S曲线设置相关指令介绍。

14.png

4.拐角模式设置相关指令介绍。

15.png
16.png
17.png

三、Qt开发实现小线段轨迹连续加工、暂停与继续

1.Qt例程界面如下。

18.png

2.在构造函数里面调用链接控制器的接口ZAux_OpenEth(),与控制器进行链接,链接成功后启动定时器监控控制器的轴信息。

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

int rint=0;

ui->setupUi(this);

//系统启动自动连接控制器

rint = ZAux_OpenEth("192.168.0.223", &g_handle);

//如果链接成功则启动定时器

if(rint==0)

{

startTimer(50);

}

}

3.通过定时器更新控制器各个轴的位置和速度信息。

//定时器事件

void MainWindow::timerEvent(QTimerEvent *event)

{

QString StrText;

float AxisDpos[3]={0};

float AxisMspeed[3]={0};

if(NULL != g_handle)

{

for(int i=0;i<3;i++)

{

//获取轴0的位置信息

ZAux_Direct_GetDpos(g_handle,i,&AxisDpos[i]);

//获取轴0的速度信息

ZAux_Direct_GetMspeed(g_handle,i,&AxisMspeed[i]);

}

StrText = QString("#轴0位置:(%1) #轴1位置:(%2) #轴2位置:(%3)").arg(AxisDpos[0]).arg(AxisDpos[1]).arg(AxisDpos[2]);

ui->AxisDpos->setText(StrText);

StrText = QString("#轴0速度:(%1) #轴1速度:(%2) #轴2速度:(%3)").arg(AxisMspeed[0]).arg(AxisMspeed[1]).arg(AxisMspeed[2]);

ui->AxisMspeed->setText(StrText);

}

}

4.连续小线段的加工。(1)通过ZCADToMore2.0导图工具将“dxf”格式的CAD图纸导成“Z3P”文件的格式并下载到控制器里面。

(点击控制器→发送到控制器按钮,即可把代码显示窗口中的代码发送到控制器中,在控制器中的文件名为:ZCAD.z3p)

19.png

(2)搜索控制器里面的Z3P文件。

//搜索Z3P文件

void MainWindow::on_Search_clicked()

{

char Buff[1024]={"123"};

//搜索Z3P文件,结果放到VR(0) 开始的寄存器存储

ZAux_Execute(g_handle, "FILE "FLASH_FIRST", ".z3p",0", NULL, 0);

//获取VR寄存器里面的文件名

ZAux_Execute(g_handle, "?vrstring(0,128)", Buff, 1024);

//去除文件名的\n

int Len = strlen(Buff);

Buff[Len-1]=0;

QString Str = QString(QLatin1String(Buff));

//更新到UI界面上

ui->lineEdit->setText(Str);

qDebug()<<

}

(3)通过启动按钮启动Z3P文件。

//启动按钮槽函数:设置拐角模式,开始运行Z3P文件

void MainWindow::on_RunButton_clicked()

{

QString Text;

int AxisList[3] = {0,1,2};

float DisList[3]={0};

//设置轴参数

for(int i=0; i<3; i++)

{

//轴类型设置为脉冲轴

ZAux_Direct_SetAtype(g_handle,i,1);

//设置脉冲当量,一般设置成机台运动1mm需要的脉冲数

ZAux_Direct_SetUnits(g_handle,i,1000);

//设置轴运动速度

ZAux_Direct_SetSpeed(g_handle,i,200);

//设置轴的加速度

ZAux_Direct_SetAccel(g_handle,i,2000);

//设置轴的减速度

ZAux_Direct_SetDecel(g_handle,i,2000);

//打开连续插补

ZAux_Direct_SetMerge(g_handle,i,1);

//设置S曲线参数

ZAux_Direct_SetSramp(g_handle,i,250);

}

//设置拐角模式

int CornerMode=0;

//是否打开自动倒角

if(ui->IsChamfer->checkState())

{

CornerMode = 32+CornerMode;

}

//是否打开拐角减速

if(ui->IsSlowDown->checkState())

{

CornerMode = 2+CornerMode;

//设置开始减速角度

Text = ui->StartAngle->toPlainText();

ZAux_Direct_SetDecelAngle(g_handle,AxisList[0],Text.toFloat()*3.14/180);

//设置停止减速角度

Text = ui->StopAngle->toPlainText();

ZAux_Direct_SetStopAngle(g_handle,AxisList[0],Text.toFloat()*3.14/180);

//设置参数速度

Text = ui->SpSpeed->toPlainText();

ZAux_Direct_SetForceSpeed(g_handle,AxisList[0],Text.toFloat());

}

//是否打开小圆限速

if(ui->IsMinCir->checkState())

{

CornerMode = 8+CornerMode;

//设置限速半径

Text = ui->CirRadius->toPlainText();

ZAux_Direct_SetFullSpRadius(g_handle,AxisList[0],Text.toFloat());

//设置参数速度

Text = ui->SpSpeed->toPlainText();

ZAux_Direct_SetForceSpeed(g_handle,AxisList[0],Text.toFloat());

}

ZAux_Direct_SetCornerMode(g_handle,AxisList[0],CornerMode);

//停止线程1

ZAux_Execute(g_handle, "STOPTASK 1", NULL, 0);

//启动Z3P文件

char CmdBuff[64];

char *str = ui->lineEdit->text().toLatin1().data();

sprintf(CmdBuff, "FILE3_RUN "%s",1",str);

ZAux_Execute(g_handle, CmdBuff, NULL, 0);

}

5.通过停止按钮的槽函数调用轴运动停止指令停止轴运动

//停止轴运动

void MainWindow::on_StopButton_clicked()

{

//停止线程1

ZAux_Execute(g_handle, "STOPTASK 1", NULL, 0);

//停止轴运动

ZAux_Direct_Rapidstop(g_handle,2);

}

6.小线段连续轨迹加工的暂停与继续。

//暂停运动

void MainWindow::on_Suspended_clicked()

{

//暂停轴运动

ZAux_Direct_MovePause(g_handle,0,0);

//暂停线程1

ZAux_Execute(g_handle, "PAUSETASK 1", NULL, 0);

}

//恢复运动

void MainWindow::on_Restore_clicked()

{

//恢复轴运动

ZAux_Direct_MoveResume(g_handle,0);

//恢复线程1

ZAux_Execute(g_handle, "RESUMETASK 1", NULL, 0);

}

四、例程移植到Linux设备上

1.Linux对应架构的库复制到项目文件夹里面。

20.png

2.向新建的项目里面添加函数库的静态库。(libzmotion.so)

21.png

添加函数库1

22.png

添加函数库2

23.png

添加函数库3

→至此,重新编译即可运行。

3.调试与监控。

编译运行例程,同时连接ZDevelop软件进行调试,对运动控制的轴参数和运动情况进行监控。

(1)小线段轨迹加工的X-Y位置波形图。

24.png

(2)小线段轨迹加工的速度波形图。(连续插补未打开拐角减速)

25.png

(3)小线段轨迹加工的速度波形图。

(连续插补设置拐角减速)

26.png

本次,正运动技术EtherCAT运动控制卡开发教程之Qt(中):小线段连续轨迹加工、暂停与继续,就分享到这里。

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

    关注

    5

    文章

    792

    浏览量

    34263
  • ethercat
    +关注

    关注

    19

    文章

    1373

    浏览量

    43357
  • qt编程
    +关注

    关注

    0

    文章

    4

    浏览量

    6411
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nullmax端到端轨迹规划论文入选AAAI 2026

    11月8日,全球人工智能顶会 AAAI 2026 公布论文录用结果,Nullmax 研发团队的端到端轨迹规划论文成功入选。该论文创新提出一种由粗到精的轨迹预测框架——DiffRefiner,能够实现更为灵活、精准的
    的头像 发表于 11-12 10:53 535次阅读

    ATA-4052C高压功率放大器:精密超声加工的核心驱动方案

    随着科学技术的发展,高精密元件和复杂微细结构元件的需求日益增多,致使超精密加工技术成为工业领域关注的焦点。传统的加工工艺装置复杂、效率低而且加工精度和几何结构特征较难满足要求。新型的超声刀尖
    的头像 发表于 10-11 18:00 626次阅读
    ATA-4052C高压功率放大器:精密超声<b class='flag-5'>加工</b>的核心驱动方案

    光模块铝壳CNC加工:精密制造的核心工艺解析

    技术原理、工艺优势及行业应用三个维度,解析CNC加工在光模块铝壳制造中的核心价值。 一、CNC加工的技术原理:数字化控制的精密制造 CNC加工通过预先
    的头像 发表于 07-24 11:34 577次阅读

    高频滤波器CNC精密加工,如何赋能通信?

    量产的关键支撑。 高频滤波器的核心结构由金属腔体和谐振柱组成,通过谐振频率筛选目标信号。CNC精密加工技术通过数字化编程控制机床运动轨迹
    的头像 发表于 06-11 16:15 426次阅读

    EtherCAT运动控制器实时数据的Qt示波器

    基于QT开发调用正运动函数接口实现控制器数据实时监测的示波器效果
    的头像 发表于 04-17 17:12 572次阅读
    EtherCAT运动控制器实时数据的<b class='flag-5'>Qt</b>示波器

    【技术案例】Qt 环境部署 - Ubuntu 篇

    扩展以及一些宏,Qt很容易扩展,并且允许真正的组件编程Qt因其模块化程度高,可重用性好,可以快速上手等特点,成为了一款非常受欢迎的开发框架。Ubuntu18/20
    的头像 发表于 04-16 17:17 1440次阅读
    【技术案例】<b class='flag-5'>Qt</b> 环境部署 - Ubuntu 篇

    电磁轨迹预测分析系统软件全面解析

    电磁轨迹预测分析系统软件:深度解析 系统概述 北京华盛恒辉电磁轨迹预测分析系统软件,借助电磁学原理和先进计算技术,能实时预测与分析带电粒子或电磁设备在电磁场中的运动轨迹。该系统通过搭建
    的头像 发表于 04-12 16:10 895次阅读

    DLP4710LC如何通过编程实现投影仪上电后自动初始化?

    我们现在是将投影仪用于三维测量投影,并且把投影图烧进板子里,通过编程控制外接ARM开发板的引脚来触发投影仪投图,但每次给投影仪连接电源后需要在投影仪的软件里进行一系列的设置,将其置为外部触发连续投图模式,这样很麻烦。请问如何
    发表于 02-19 06:54

    Qt Group发布Qt AI Assistant,助力跨平台UI开发

    重复性劳动方面迈出了重要一步。 Qt AI Assistant的核心目标是减少开发者在UI开发过程中所面临的非编码类重复性任务。这些任务往往繁琐且耗时,容易让开发者陷入低效的工作状态。通过引入AI技术,Qt AI Assista
    的头像 发表于 02-07 13:47 1645次阅读

    激光自身空间维度加工系统综述

      01   应用背景 随着智能制造步伐加快,各行业对精细化零部件的加工需求愈发旺盛。传统借助外部辅助机构如机床、机械臂带动激光加工实现激光束空间维度变化的方式,因运动磨损、连续启停
    的头像 发表于 01-16 10:52 1245次阅读
    激光自身空间维度<b class='flag-5'>加工</b>系统综述

    食品加工企业的设备远程运维

    食品加工企业的设备远程运维是工业物联网技术在食品加工行业中的重要应用之一。通过远程运维,企业能够实现对生产设备的实时监控、故障预警、远程诊断和维护,从而提高生产效率、降低维护成本,并确
    的头像 发表于 01-14 17:18 735次阅读

    AN-1310:通过MDIO实现闪存编程—协议类型8

    电子发烧友网站提供《AN-1310:通过MDIO实现闪存编程—协议类型8.pdf》资料免费下载
    发表于 01-14 15:13 0次下载
    AN-1310:<b class='flag-5'>通过</b>MDIO<b class='flag-5'>实现</b>闪存<b class='flag-5'>编程</b>—协议类型8

    Qt Group发布Qt Accelerate,加速数字产品开发进程

    Qt Group近日正式推出了Qt Accelerate,这是一款专为快速构建数字应用而设计的解决方案,旨在满足工业制造、移动出行、消费类电子等多个领域的需求。 Qt Accelerate基于
    的头像 发表于 01-13 11:19 930次阅读

    运动控制中如何实现路径轨迹预测

    在运动控制中,轨迹执行时间的预测对于多轴的协同、路径预处理等方面有着重要的作用。CODESYS系列控制器提供了预测轨迹执行时间功能块。要实现完整的预测功能,需要使用到以下的功能块
    的头像 发表于 01-05 11:04 1510次阅读
    运动控制中如何<b class='flag-5'>实现</b>路径<b class='flag-5'>轨迹</b>预测

    铣削加工如何正确选择走刀方式

    随着现代制造加工技术的不断发展,数控加工设备和其配套的CAM 系统得到了广泛的应用和发展。CAM 系统生成的加工刀具轨迹(即走刀方式)是控制设备加工
    的头像 发表于 12-24 10:20 1526次阅读
    铣削<b class='flag-5'>加工</b>如何正确选择走刀方式