运动控制卡应用开发教程之使用Qt

今天,我们来讲解一下正运动技术运动控制卡应用开发教程之Qt。

此前,我们与大家分享过“开放式Linux平台控制器XPLC516E及其Linux下的Qt开发”,我们知道正运动部分控制器支持Linux系统,支持嵌入式Qt开发。

正运动技术支持功能强大的Qt动态链接库以及拥有简单易读的运动控制库函数手册说明,代码移植性强,非常方便运动控制开发上手,能极大缩短开发人员开发智能装备的时间周期。

在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618。这两款产品分别是4轴,6轴运动控制卡。

ECI2618支持6轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。

2、将动态库以及相关文件“libzmotion.so、zaux.cpp、zaux.h、zmotion.h”复制到新建的Qt项目里面。

    B、选择外部库,点击Next。

    D、最后点击finish即可完成动态库添加。

    B、找到刚刚复制放进项目的zmotion.h文件,双击zmotion.h即可添加头文件zmotion.h到项目中。

    B、找到刚刚复制放进项目的zaux.cpp文件,双击zaux.cpp文件即可添加源文件zaux.cpp到项目中。

7、使用link按钮的槽函数用以太 连接控制器

    A、在Qt的ui设计界面中添加一个按钮重命名为Link,右击Link按钮点击Go to slot…跳转到该按钮的槽函数。

    C、参考光盘资料里面的PC编程手册中ZAux_OpenEth函数的用法在槽函数中编写代码,进行功能实现。

    B、查阅ZMotion PC 编程手册,了解用以插补运动接口函数的用法 。

9、运动程序设计完毕,点击运行按钮。

    2、例程的单轴运动的功能说明

        a、通过以太 链接到指定IP的控制器;

        b、设置运动轴参数;

        c、选择运动轴对象;

        d、选择运动方式,实现持续运动和寸动;

    3、例程的单轴运动的具体实现

            A、在下拉框中手动添加IP:进入uI设计界面双击下拉框加入控制器Ip,方法如下。

            C、通过Open按钮的槽函数( on_pushButton_OpenEth_clicked()),调用动态库(zmotion.so)提供的链接控制器接口(ZAux_OpenEth()),实现与控制器的链接。

//以太 连接控制器
void MainWindow::on_pushButton_OpenEth_clicked()
{
    int32 iresult;
    char * tmp_buff = new char[16];
    QString str, str_title;
    /*从下拉框中获取IP*/
    str = ui->comboBox_IP->currentText();
    QByteArray ba = str.toLatin1();
    tmp_buff = ba.data();
    /*链接控制器*/
    iresult = ZAux_OpenEth(tmp_buff,&g_handle);
    if(0 == iresult)
    {
        str_title = (“linked:”);
        str_title += tmp_buff;
        setWindowTitle(str_title);
        /*开启定时器*/
        m_nTimerId = startTimer(10);
    }
    else
    {
        setWindowTitle(“no link!”);
    }
}

            D、参考ZMotion PC函数编程手册,熟悉ZAux_OpenEth()接口用法。

        A、将X、Y、Z、R单选框设置到同一个按钮组中用于轴选择。

        通过参数生效按钮的槽函数“on_ParaSet_clicked()”,调用动态库(zmotion.so)提供的获取轴参数设置接口,对轴参数进行设置。

//参数设置
void MainWindow::on_ParaSet_clicked()
{
    QString str_tmp;
    float float_tmp;
    int isidle = 0;
    /*获取轴 */
    axis_num = AxisGroup->checkedId();
    /*轴正在运行无法运动*/
    ZAux_Direct_GetIfIdle(g_handle,axis_num,&isidle);
    if(!isidle)
    {
        return;
    }
    /*设置units */
    str_tmp = ui->lineEdit_Units->text();
    float_tmp = str_tmp.toFloat();
    ZAux_Direct_SetUnits(g_handle, axis_num, float_tmp);
     /*设置 speed */
    str_tmp = ui->lineEdit_Speed->text();
    float_tmp = str_tmp.toFloat();
    ZAux_Direct_SetSpeed(g_handle,axis_num,float_tmp);
     /*设置 accel */
    str_tmp = ui->lineEdit_Accel->text();
    float_tmp = str_tmp.toFloat();
    ZAux_Direct_SetAccel(g_handle,axis_num,float_tmp);
    /*设置 decel */
    str_tmp = ui->lineEdit_Decel->text();
    float_tmp = str_tmp.toFloat();
    ZAux_Direct_SetDecel(g_handle,axis_num,float_tmp);
    /*设置sramp */
    str_tmp = ui->lineEdit_Sramp->text();
    float_tmp = str_tmp.toFloat();
    ZAux_Direct_SetSramp(g_handle,axis_num,float_tmp);
}

        (4)单轴寸动/持续运动

        在示波器窗口中可以看到单轴移动300用户单位的曲线图。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月10日
下一篇 2020年10月10日

相关推荐