Qt 开发固高运动控制卡(高创驱动器)上位机程序


  在一些控制多轴电机运动的场景下,除了需要驱动器驱动该轴的电机外,还需要用到控制卡协调各轴驱动器的运动控制。为了方便用户使用,往往还需要编写满足功能需求的上位机程序。为了方便演示Qt开发固高控制卡上位机程序的过程,这里基于Qt 5.9.0和C++实现的是最一般的上位机功能,包括运动控制卡的初始化、使能、Z轴的点位运动功能(需要用户输入点位运动的参数:行程、速度、加速度和减速度)。控制对象是Z轴方向运动的光学显微平台。使用顺序:初始化→使能→给定Pos,Vel,Acc,Dcc→写入→点击“下”即电机向下运动。

本文演示的上位机程序界面

控制对象:光学显微平台

  硬件部分采用GTSVB系列4轴插卡式固高运动控制卡作为上层规划指令的发送者,与固高运动控制卡搭配使用的还有端子板。控制卡通过PCI总线插槽与上位机进行通讯,同时控制卡通过CN17连接线连接端子板,端子板上有一系列IO口和轴接口,通过轴接口可以连接各轴驱动器。这里使用的是高创驱动器。

控制系统示意图

GTSVB系列4轴插卡式固高运动控制卡

  我们使用固高控制卡的开环控制模式(脉冲控制),设置高创驱动器为位置齿轮模式。伺服系统的三环控制都在驱动器完成,关于高创驱动器控制算法的调试,请参考高创驱动器的用户手册。应用程序指令是上位机发出的运动规划、IO等指令,经过运动控制器转为底层的运动指令,最终以脉冲的形式发给驱动器。如果在使用过程中遇到复杂问题,可以进一步查阅官方手册《编程手册:GTS运动控制器基本功能_R1.4》(固高的使用手册编写得还是对用户较为友好的,使用方法比较详细,同时有很多使用例程供用户参考)。

固高控制卡的开环控制模式(脉冲控制)

1、配置驱动器

  首先,配置高创驱动器,反馈采用增量式数字量光栅尺,分辨率为0.1μm(10000cnt=1mm),

反馈设置

  增量式数字量反馈的每转线数=电机节距/光栅尺分辨率/4倍频,然后需要根据实际需求整定高创的控制器参数,使得运动平台的定位精度和响应满足要求。在此就不赘述了。

数字I/O设置

  在数字IO中需要设置远端使能(remote enable)。

设置运动模式

  因为电机的每转线数是120000LPP,而在位置齿轮模式中的“转外部脉冲”是每转脉冲数,脉冲与线数之间是4倍关系,因此“转外部脉冲”设置为480000。“电子齿轮分子”和“电子齿轮分母”均可设置为1,表示固高每发送10000cnt电机就运动1mm。这里设置为1是因为期望的方向与实际电机运动方向相反。

2、配置固高控制卡

  下一步是通过固高控制卡自带的上位机软件MCT2008配置固高控制卡。在Windows系统下使用运动控制器,首先要安装驱动程序和动态链接库。驱动程序和动态链接库请通过固高科技官网固高科技 (googoltech)下载。安装过程和使用方法可以参考固高相应的使用手册。

打开MCT2008软件,开环模式下 axis 配置流程如下(参考《编程手册:GTS运动控制器基本功能_R1.4》——4.5.1 开环控制模式):

固高控制卡自带的上位机软件MCT2008

  在“工具”“控制器配置”中,设置需要运动的轴(这里为轴3),将“axis”这一项红框中的各个编号都设置为“none”,然后选择控制器配置中的“控制”“写入控制器状态”,此时在“视图”“轴状态”3轴状态可以看到指示灯都为绿色,表明各个状态都无错误。其他设置则选择默认。

  点击“伺服使能”按钮可以使能电机,指示灯为红色。在“视图”“点位运动”可以打开点位运动窗口,点击“启动运动”即可启动电机。

在“控制器配置”窗口中,点击“文件”“写入到文件”可以将上述配置保存成fg文件,以便后续上位机使用。

保存控制卡的配置文件

3、编写上位机程序

  最简单的开发可以参考实现与固高上位机功能类似的上位机软件。首先导入固高控制卡的动态链接库,要使用的是dll\VC\64bit\single_card中的3个文件:gts.dll,gts.h和gts.lib,将这3个文件复制到Qt工程目录下面,

复制需要的3个文件

放到Qt工程目录下

然后需要在Qt中指定链接库,右击项目,添加“外部库”,添加当前项目目录下的gts.lib库文件,

在Qt中指定链接库

同时还需要添加gts.h头文件到Qt项目中,

  通过调用库文件中相关的API接口函数来实现相应的功能。固高控制卡封装好的API接口函数都是GT_开头的,可以直接在程序中调用,而且官方手册《编程手册:GTS运动控制器基本功能_R1.4》(还有高级功能版本则主要涉及控制卡的PT运动模式、PVT运动模式等,这里没有涉及到就不作介绍了)也对函数的使用方法有很详细的例程,很多语句甚至可以直接复制到上位机程序中。

  接着开始设计用户界面,这里包括了初始化按钮pbn_Init、使能按钮pbn_Enable、写入按钮pbn_Write、向上运动按钮pbn_Up、向下运动按钮pbn_Down和行程、速度、加速度、减速度输入框lineEdit_Pos、lineEdit_Vel、lineEdit_Acc和lineEdit_Dcc。其中使能按钮pbn_Enable需要勾选“checkable”属性,默认状况下checkable是不选中的,Button默认为触发按钮(trigger button),按下去马上弹起来。选中checkable后,Button变成切换按钮(toggle button),可以有两种状态:按下/弹起。因为电机有使能和去使能两种状态,对应的就是开关的开和关。当pbn_Enable处于按下状态的时候checked为true,否则为false。

然后转到pbn_Enable的toggled(bool)信号的槽,编写使能按钮的槽函数(或者使用Lambda表达式):

1 //使能按钮,槽函数 2 void MainWindow::on_pbn_Enable_toggled(bool checked) 3 8 else 9 12 }

注:在连接信号和槽的时候,槽函数可以使用Lambda表达式的方式进行处理。在使用 Qt 5 的时候,能够支持 Qt 5 的编译器都是支持 Lambda 表达式的。

1 //使能按钮的Lambda表达式 2 connect(ui>pbn_Enable, &QPushButton::toggled, [=]());

同样的可以编写初始化按钮pbn_Init的槽函数:

1 //初始化按钮,槽函数 2 void MainWindow::on_pbn_Init_clicked() 3

在实现点位运动按钮的功能之前,可以先编写点位运动函数:

1 //点位运动函数,可参考固高编程手册基本功能例程 61 点位运动 2 void MainWindow::pointMotion(int num,long pos)//参数num是轴号,pos是点位运动的距离 3

然后用户通过输入框指定点位运动的四个参数,再点击写入按钮pbn_Write保存运动参数:

1 //写入按钮,槽函数 2 void MainWindow::on_pbn_Write_clicked() 3

最后,两个运动按钮可直接调用上述函数:

1 //向上运动按钮,槽函数 2 void MainWindow::on_pbn_Up_clicked() 3 8 } 9 10 //向下运动按钮,槽函数 11 void MainWindow::on_pbn_Down_clicked() 12 17 }

完整的头文件和源代码文件程序如下:

mainwindoh文件:

1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 #include "gts.h" 6 7 namespace Ui 10 11 class MainWindow : public QMainWindow 12 ; 37 38 #endif // MAINWINDOW_H

mainwindocpp文件:

1 #include "mainwindoh" 2 #include "ui_mainwindoh" 3 4 MainWindow::MainWindow(QWidget *parent) : 5 QMainWindow(parent), 6 ui(new Ui::MainWindow) 7 ); 19 } 20 21 MainWindow::~MainWindow() 22 26 27 //点位运动函数,可参考固高编程手册基本功能例程 61 点位运动 28 void MainWindow::pointMotion(int num,long pos)//参数num是轴号,pos是点位运动的距离 29 44 45 //初始化按钮,槽函数 46 void MainWindow::on_pbn_Init_clicked() 47 56 57 //使能按钮,槽函数 58 void MainWindow::on_pbn_Enable_toggled(bool checked) 59 64 else 65 68 } 69 70 //写入按钮,槽函数 71 void MainWindow::on_pbn_Write_clicked() 72 94 95 //向上运动按钮,槽函数 96 void MainWindow::on_pbn_Up_clicked() 97 102 } 103 104 //向下运动按钮,槽函数 105 void MainWindow::on_pbn_Down_clicked() 106 111 }

  考虑到后续程序的发布,且debug版本程序依赖的dll文件很大,一般使用release版本。在Qt左下角的目标选择器(Target selector)中将构建目标设置为Release,编译后项目目录文件夹即包含了release目录,再将配置固高卡时生成的配置文件GTS800fg放到release目录下。

至此完成了简单的上位机开发。




上一篇:CUDA 安装教程

下一篇:CUDA Memcpy的分析


Qt 固高(GOOGOLTECH) 高创(SERVOTRONIX)
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图