我是靠谱客的博主 温婉歌曲,这篇文章主要介绍EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用ECI2828运动控制卡的硬件介绍一、Qt进行运动控制卡开发的流程二、PC函数介绍三、Qt开发实现多轴插补运动四、例程移植到Linux设备上,现在分享给大家,希望可以做个参考。

今天,正运动小助手给大家分享一下EtherCAT运动控制卡开发教程之Qt,主要介绍一下如何通过Qt编程实现直线插补的运动控制。

ECI2828运动控制卡的硬件介绍

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

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

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

在这里插入图片描述

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

1.新建Qt项目。

在这里插入图片描述

图1:新建Qt项目

在这里插入图片描述

图2:选择项目路径

在这里插入图片描述

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

在这里插入图片描述

图4:选择基类

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

在这里插入图片描述

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

在这里插入图片描述

第一步:添加函数库1
在这里插入图片描述

第二步:添加函数库2
在这里插入图片描述

第三步:添加函数库3

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

在这里插入图片描述

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

在这里插入图片描述

二、PC函数介绍

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

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

ZAux_OpenEth()接口说明:
在这里插入图片描述

3.多轴插补指令ZAux_Direct_MoveAbs介绍。

在这里插入图片描述

在这里插入图片描述

4.获取轴位置信息指令介绍。3.多轴插补指令ZAux_Direct_MoveAbs介绍。

在这里插入图片描述

在这里插入图片描述

5.获取轴位置信息指令介绍。

在这里插入图片描述

三、Qt开发实现多轴插补运动

1.多轴插补运动Qt界面如下。
在这里插入图片描述

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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.通过定时器更新控制器各个轴的位置和速度信息。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//定时器事件 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//启动按钮槽函数:开始直线插补运动 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); } //更新第一行的位置数据 Text = ui->DisX1->toPlainText(); DisList[0] = Text.toFloat(); Text = ui->DisY1->toPlainText(); DisList[1] = Text.toFloat(); Text = ui->DisZ1->toPlainText(); DisList[2] = Text.toFloat(); ZAux_Direct_MoveAbs(g_handle,3,AxisList,DisList); //更新第二行的位置数据 Text = ui->DisX2->toPlainText(); DisList[0] = Text.toFloat(); Text = ui->DisY2->toPlainText(); DisList[1] = Text.toFloat(); Text = ui->DisZ2->toPlainText(); DisList[2] = Text.toFloat(); //更新第三行的位置数据 ZAux_Direct_MoveAbs(g_handle,3,AxisList,DisList); Text = ui->DisX3->toPlainText(); DisList[0] = Text.toFloat(); Text = ui->DisY3->toPlainText(); DisList[1] = Text.toFloat(); Text = ui->DisZ3->toPlainText(); DisList[2] = Text.toFloat(); ZAux_Direct_MoveAbs(g_handle,3,AxisList,DisList); }

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

复制代码
1
2
3
4
5
6
7
8
9
10
//停止轴运动 void MainWindow::on_StopButton_clicked() { ZAux_Direct_Rapidstop(g_handle,2); }

四、例程移植到Linux设备上

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

在这里插入图片描述

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

在这里插入图片描述

添加函数库1

在这里插入图片描述

添加函数库2

在这里插入图片描述

添加函数库3

3.重新编译即可运行。

在这里插入图片描述

4.调试与监控。

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

(1)多轴插补X-Y位置波形图

在这里插入图片描述

(2)多轴插补X-Y轴速度波形图(未打开连续插补)

在这里插入图片描述

在这里插入图片描述

本次,正运动技术EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用,就分享到这里。

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

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

最后

以上就是温婉歌曲最近收集整理的关于EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用ECI2828运动控制卡的硬件介绍一、Qt进行运动控制卡开发的流程二、PC函数介绍三、Qt开发实现多轴插补运动四、例程移植到Linux设备上的全部内容,更多相关EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用ECI2828运动控制卡内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部