开放式激光振镜运动控制器在Ubuntu+Qt下的激光振镜校正

科技   科技   2024-09-03 07:00   广东  

点击上方正运动小助手,随时关注新动态!


Ubuntu是一款免费且开源的操作系统,基于强大的Linux内核,它支持多用户、多任务、多线程操作,拥有多CPU架构,可以简化开发过程,具备出色的移植性。

今天,正运动小助手给大家分享一下Ubuntu下基于QT的激光振镜的校正。在正式学习之前,我们先了解一下正运动ZMC408SCAN-V22运动控制器,ZMC408SCAN-V22支持在Linux环境进行开发使用。



01
ZMC408SCAN-V22硬件介绍

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

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

ZMC408SCAN-V22通过CAN、EtherCAT总线可以连接各个扩展模块,从而扩展数字量、模拟量或运动轴。可以在Windows,Linux,Mac,Android,Wince各种操作系统下开发,提供vc,c#,vb.net,labview等各种环境的dll库。上位机软件编程参考《ZMotion PC函数库编程手册》。


02
Linux下使用Ubuntu+Qt进行振镜校正软件的开发

(一)振镜校正的目的

振镜本身在制造过程中或者在长时间使用后可能会存在一些畸变,振镜校正的一个主要目的就是检测和修正这些畸变,以确保激光的精度。

通过定期的校正和调整,可以有效地管理和纠正振镜的畸变,从而提高激光系统的整体性能和稳定性。

未进行振镜校正时标刻的矩形

振镜校正后标刻的矩形

(二)新建Qt项目并添加函数库
1.在Qt Creator菜单选择“File”→“New File or Project...”,打开创建项目向导。选择Application项目集,创建Qt Widgets Application项目,设置项目名称和保存位置。

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

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

(2)在Qt Creator选择新建的Qt项目右击选择“Add Library...” → “External library”点击next,将刚才复制到项目文件夹上的libzmotion.so和libZScanCorrect.so库文件导入到项目中。

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

(4)函数库添加成功后,打开pro文件可以看到相关的函数库和头文件信息。



03
振镜校正例程流程和相关函数介绍

1.振镜校正流程图

2.主要函数的介绍

(1)取消校正

函数原型

int32 __stdcall ZScan_CancelCorrect(ZMC_HANDLE handle, int nScanNum, double dUnits, double dScaleRatio, int nTableStart)

功能

取消振镜校正,在预校正时需要取消原本的振镜校正。

输入参数

参数名

描述

handle

当前连接的控制器句柄。

nScanNum

振镜编号。

dUnits

振镜轴的脉冲当量。

dScaleRatio

缩放倍率(取消校正操作的缩放倍率一般是1.0)。

nTableStart

点数据存储的起始位置(table存储的起始位置,一般从3500开始)。

返回值

成功返回值为0,非0详见下面的错误码说明。

(2)下载三次文件

函数原型

int32 __stdcall ZMC_DownMem3File(ZMC_HANDLE handle, const char* pbuffer, uint32 buffsize, const char* pfilenameinControl)

功能

将生成的三次文件字符串下载到控制器中。

输入参数

参数名

描述

handle

当前连接的控制器句柄。

pbuffer

三次文件字符串。

buffsize

字符串的长度。

pfilenameinControl

生成三次文件的文件名。

返回值

成功返回值为0。

(3)多点迭代校正

函数原型

int32 __stdcall ZScan_CorrectMorePtIter(ZMC_HANDLE handle, int nScanNum, double *pdXInputPt, double *pdYInputPt, int nScanExChange, int nRowColPtNum, double dUnits,double dTheoryLeft, double dTheoryBottom, double dTheoryRight, double dTheoryTop, double dScanSize, double dScaleRatio, int nTableStart, int nDataType)

功能

多点迭代校正(使用3×3、5×5、9×9、17×17、33×33、65×65的点数据进行振镜位置的迭代校正)。

输入参数

参数名

描述

handle

当前连接的控制器句柄。

nScanNum

振镜编号。

pdXInputPt

所有测量点的X坐标。

pdYInputPt

所有测量点的Y坐标。

nScanExChange

XY振镜是否交换位置(0-未交换,1-交换)。

nRowColPtNum

行/列点数(必须为3、5、9、17、33、65)。

dUnits

振镜轴的脉冲当量。

dTheoryLeft

左侧的理论位置(预校正范围)。

dTheoryBottom

底部的理论位置(预校正范围)。

dTheoryRight

右侧的理论位置(预校正范围)。

dTheoryTop

顶部的理论位置(预校正范围)。

dScanSize

标刻尺寸(校正范围)。

dScaleRatio

缩放倍率(一般为1.0)。

nTableStart

点数据存储的起始位置(起始位置一般从3500开始)。

nDataType

数据类型(0数据为预校正时的数据,1数据为校正后的数据)。

返回值

成功返回值为0,非0详见下面的错误码说明。

(4)保存校正数据到文件

函数原型

int32 __stdcall ZScan_SaveCorrectFile(ZMC_HANDLE handle, char *pPathName, int nScanNum, int nScanExChange, int nXDirect, int nYDirect, double dUnits,double dScaleRatio, int nDirMode)

功能

校正保存成文件(校正成功后才能调用),后续可以采用此文件进行校正。

输入参数

参数名

描述

handle

当前连接的控制器句柄。

pPathName

保存的路径+文件名(.zga格式)的字符串。

nScanNum

振镜编号。

nScanExChange

XY振镜是否交换位置(0-未交换,1-交换)。

nXDirect

X轴方向(输入1或-1),-1代表X轴反向。

nYDirect

Y轴方向(输入1或-1),-1代表X轴反向。

dUnits

振镜轴的脉冲当量。

dScaleRatio

缩放倍率(一般为1.0)。

nDirMode

轴方向的方式(0-X轴/Y轴方式是用户计算的,1-X轴/Y轴方式是STEP_RATIO指令修改的)。

返回值

成功返回值为0,非0详见下面的错误码说明。

(5)读取校正文件

函数原型

int32 __stdcall ZScan_ReadCorrectFilePara(char *pFilePath, int &nScanNum, int &nScanExChange, int &nXDirect, int &nYDirect, double &dUnits,double &dScaleRatio, int &nDirMode)

功能

读取校正文件的参数,将校正文件的参数存储到地址中。

输入参数

参数名

描述

pFilePath

校正文件绝对路径。

nScanNum

振镜编号。

nScanExChange

XY振镜是否交换位置。

nXDirect

X轴方向。

nYDirect

Y轴方向。

dUnits

振镜轴的脉冲当量。

dScaleRatio

缩放倍率。

nDirMode

轴方向的方式。

返回值

成功返回值为0,非0详见下面的错误码说明。

(6)使用校正文件进行校正

函数原型

int32 __stdcall ZScan_CorrectFromFile(ZMC_HANDLE handle, char *pPathName, int nScanNum, int nTableStart)

功能

使用校正文件进行校正

输入参数

参数名

描述

handle

当前连接的控制器句柄。

pPathName

保存的路径+文件名(.zga格式),校正文件的路径+文件名。

nScanNum

振镜编号(校正文件中读取的振镜编号)。

nTableStart

点数据存储的起始位置(起始位置一般从3500开始)。

返回值

成功返回值为0,非0详见下面的错误码说明。

(7)误差补偿后校正

函数原型

int32 __stdcall ZScan_AddErrCorrectFile(ZMC_HANDLE handle, char *pPathName, int nTheorySize, double *dErrData, int nTableStart, int nUpdataFile)

功能

校正文件迭代误差补偿

输入参数

参数名

描述

handle

当前连接的控制器句柄。

pPathName

校正文件绝对路径。

nTheorySize

理论尺寸(边长的平方)。

dErrData

误差补偿的值(长度为12,数据依次为补偿中心十字线-X,中心十字线+X, 中心十字线-Y, 中心十字线+Y,左下角X,左下角Y,右下角X,右下角Y,左上角X,左上角Y,右上角X,右上角Y)。

nTableStart

点数据存储的起始位置(一般从3500开始)。

nUpdataFile

是否更新文件(0-不更新,1-更新,设置为1会变为误差补偿文件且覆盖旧的文件)。

返回值

成功返回值为0,非0详见下面的错误码说明。

(8)相关错误码

错误码

错误信息

50

链接不上控制器。

51

校正点数太少。

52

校正点数不正确。

53

校正失败。

54

校正文件错误。

55

没有校正数据。

56

参数错误。

57

Table操作失败。



04
振镜校正例程的实现及原理

1.预校正并标刻

原理:预校正通过标刻图形得到实际的标刻大小,通过实际的大小计算出与目标标刻尺寸的缩放比例,当预校正的实际大小和目标标刻的大小一致时,可以进行采点操作。
void MainWindow::on_beforeCheck_mark_clicked(){    if( 0 == g_handle)    {        QMessageBox::warning(this,"提示","控制器未连接!");        return;    }    dataRenew();    //更新获取页面数据    ZScan_CancelCorrect(g_handle, ui->scan_list->currentIndex(), ui->Units->text().toDouble(), 1.0, tableStartNum);    // 先取消校正    int RowNum = sqrt(countRow());//获取当前选择的校正点数    QString strFile3 = CreateMakingString(RealCorrectSizeX, RealCorrectSizeY, RowNum, XLineLenght, YLineLenght);    // 生成三次文件字符串    Down3File(strFile3);     // 下载三次文件到控制器中    // 刷新列表,将列表数据插入为标准点坐标    model->removeRows(0, model->rowCount());    ZPoint *tmp = pointData(RowNum,dScanSize);    for (int i = 0; i < RowNum * RowNum; i++)    {        QList<QStandardItem *> rowItems;        rowItems << new QStandardItem(QString::number(tmp[i].x,'f',3))<< new QStandardItem(QString::number(tmp[i].x,'f',3))<< new QStandardItem(0,'f',3))<< new QStandardItem(0,'f',3);        model->insertRow(i, rowItems);    }    delete [] tmp;    PreCorrectFlag = 0;//标记为预校正}

2.多点迭代校正的方式进行振镜校正

原理:多点迭代校正,通过实际测量得到标刻点数据,和标准点数据比较可以直观的看到误差,振镜校正函数通过实际点数据对振镜进行校正,在经过多次迭代校正后可以明显看出实际点位数据和标准点数据的误差减小。

bool MainWindow::ScanCorrection(int MakingRowNum){    //通过点数数据,进行振镜校正    memset(PointDataX, 0, MakingRowNum);    memset(PointDataY, 0, MakingRowNum);    int cur_item = model->rowCount();    // 检查当前数据项数量是否正确    if (cur_item != MakingRowNum)    {       QMessageBox::critical(this, "错误", "数据错误");       return false;    }    for (int row = 0; row < MakingRowNum; ++row)//将所有点数据取出,进行多点校正    {        QStandardItem *item = model->item(row, 2);        PointDataX[row] = item ? item->text().toDouble() : 0.0;        item = model->item(row, 3);        PointDataY[row] = item ? item->text().toDouble() : 0.0;    }    // 检测数据是否正确    if (!CheckCorrectData(MakingRowNum,PointDataX,PointDataY))    {       if (QMessageBox::question(this, "警告", "数据可能不正确,请检查数据\r\nyes表示退出校正\r\nno表示继续校正", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)       {           return false;       }    }    double x1 = -RealCorrectSizeX / 2;    double y1 = -RealCorrectSizeY / 2;    double x2 = RealCorrectSizeX / 2;    double y2 = RealCorrectSizeY / 2;    // 调用 ZScan_CorrectMorePtIter 函数,传递适当的参数    int ret = ZScan_CorrectMorePtIter(g_handle, ui->scan_list->currentIndex(), PointDataX, PointDataY, ui->checkBox->isChecked(), sqrt(countRow()), ui->Units->text().toDouble(),x1, y1, x2, y2, ui->mark_Size->text().toDouble(), 1.0, tableStartNum, PreCorrectFlag);    if (CheckError(ret, "ZScan_CorrectMorePtIter"))        return false;    PreCorrectFlag = 1;    return true;}

3.根据校正文件进行振镜校正

原理:校正文件本质上是通过多点迭代校正生成的,将校正点数据都存储在文件中,通过读取校正文件,将数据读出,对振镜进行校正,若文件校正完存在轻微误差可以通过文件补偿迭代校正的方式提高校正精度。

void MainWindow::on_but_Check_clicked(){    if( 0 == g_handle)    {        QMessageBox::warning(this,"提示","控制器未连接!");        return;    }    QString fileName = QString::fromStdString(ui->file_Route->text()    .toLatin1().data());    if (fileName.isEmpty())    {        QMessageBox::critical(this, "错误", "请先选择矫正文件!");        return;    }    if (ChangeDirMode == 1)    {        // 设置 X 和 Y 方向的步进比例        int ret = 0;        if (ui->x_Dir->text().toInt() == -1)        {            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[0], 1, -1);        }        else        {            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[0], 1, 1);        }        if (ret != 0)        {            QMessageBox::critical(this, "错误", QString("文件校正失败  X方向设置失败   错误码:%1").arg(ret));            return;        }        if (ui->y_Dir->text().toInt() == -1)        {            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[1], 1, -1);        }        else        {            ret = ZAux_Direct_StepRatio(g_handle, markpara.AxisList[1], 1, 1);        }        if (ret != 0)        {            QMessageBox::critical(this, "错误", QString("文件校正失败  Y方向设置失败   错误码:%1").arg(ret));            return;        }    }    int rest = ZScan_CorrectFromFile(g_handle, fileName.toLatin1().data(), scanNum, tableStartNum);//使用校正文件进行振镜校正    if (rest != 0)    {        QMessageBox::critical(this, "错误", QString("文件校正错误   错误码:%1").arg(rest));    }    else    {        QMessageBox::information(this, "信息", "文件校正完成");    }}


05
通过振镜校正例程对激光振镜进行校正

1.多点迭代校正方式进行振镜校正

(1)连接到控制器,并进行工艺参数设置,根据实际激光器类型和IO参数以及标刻参数进行设置。

(2)输入需要实际标刻的尺寸,进行预校正标刻,使用预校正标刻的实际XY测量值来计算缩放比例,可以进行多次预校正标刻和测量,计算出较为精准的比例,这里的误差越小,后续校正的次数将会减少。

(3)通过导入点数据或者手动填入点数据,进行标刻并校正,可以通过与标准点坐标数据对比,直观看到误差。

(4)继续测量标刻点的数据,导入点数据或手动添加到程序中,重复步骤二三提高校正精度。若精度还是达不到要求,可以继续加点迭代校正来提高精度,若已达到精度则可以将校正数据保存到校正文件中,方便后续直接使用文件校正。

2.文件校正方式进行振镜校正

(1)选择校正文件进行振镜校正

(2)进行实际测量,若测量数据无误,则校正完成。若出现点位误差可采取坐标补偿的方式进行补偿校正,将补偿值填入,进行校正并标刻,重新测量数据,可多次进行补偿操作,若误差过大,或者较多点位存在问题,需要使用多点叠加迭代校正的方式进行振镜校正。

3.教学视频

完整代码获取地址

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

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

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

回顾往期内容

开奖啦!参与《运动控制系统应用与实践》赠书活动的粉丝们看这里

送书福利!全自主IDE的《运动控制系统应用与实践》

EtherCAT运动控制器上位机开发之Python+Qt(三):PDO配置与SDO读写

EtherCAT运动控制器上位机开发之Python+Qt(二):回零

EtherCAT运动控制器上位机开发之Python+Qt(一):链接与单轴运动

C#之Delta并联机械手的视觉同步分拣

C#之Delta并联机械手的视觉相机标定与形状匹配

C#之Delta并联机械手正逆解的建立和手动运动

PCIe EtherCAT实时运动控制卡PCIE464的安装与调试

PCIe EtherCAT实时运动控制卡PCIE464的IO与编码器读写应用

PCIe EtherCAT实时运动控制卡的DXF图形的CAD导图与多条运动指令的快速加工

VPLC7机器视觉运动控制一体机在三轴SCARA机械手螺丝锁付的应用

VPLC系列机器视觉运动控制一体机在五轴联动点胶上的应用

基于VPLC7机器视觉运动控制一体机的UVW视觉对位解决方案

基于VPLC711的曲面外观检测XYR运动控制解决方案

基于VPLC532E开放式数控系统在五轴义齿机上的应用

机器视觉运动控制快组态软件RTFuse在XYZ三轴运动平台的应用方案

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

机器视觉运动控制一体机在喇叭跟随点胶上的应用

机器视觉运动控制一体机在光伏汇流焊机器人系统的解决方案

机器视觉运动控制一体机在点胶胶路检测上的应用

机器视觉运动控制一体机在SCARA机械手柔性上下料的应用

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

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

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

PCIE超高速实时运动控制卡在六面外观视觉检测上的应用

超高速PCIe EtherCAT运动控制卡在高速异形插件机上的应用

运动控制器多工位位置比较输出在转盘式视觉筛选设备中的应用

EtherCAT总线冗余让制造更安全更可靠更智能

机器视觉运动控制一体机结构体功能上线,助力客户高效开发

正运动携手EPLAN,以高效的电气设计助力运动控制的数字化设计

BissC绝对值编码器在EtherCAT运动控制器中的应用

EtherCAT运动控制器在SCARA和码垛机械手中的应用

EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划

EtherCAT运动控制器在UVW对位平台中的应用

EtherCAT运动控制器Delta机械手应用

EtherCAT运动控制器的MATLAB开发

运动控制器/运动控制卡配套ZCAN总线ZIO模块的使用

运动控制卡/运动控制器的ZCAN总线ZMIO310扩展模块使用

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

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

皮带同步跟随:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十四)

自定义电子凸轮曲线的运动:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三)

连续轨迹加工和速度前瞻:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十二)

PT/PVT运动模式介绍:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十一)

项目工程下载与XML配置文件下载:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十)

EtherCAT驱动器回零与控制器回零:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(九)

二维/三维的多轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(八)

单轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(七)

硬件位置比较输出和编码器锁存:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(六)

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(五):通过RTSys进行调试与诊断

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(四):板载IO与总线扩展IO的编码器与脉冲配置的应用

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(三):EtherCAT总线CSP,CSV,CST模式切换

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接

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

全国产EtherCAT运动控制边缘控制器(五):IO配置与回零运动的Python+Qt开发

全国产EtherCAT运动控制边缘控制器(四):轴参数配置与单轴运动PC上位机C++控制

全国产EtherCAT运动控制边缘控制器(三):外设读写与RTSys开发诊断

全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口

全国产EtherCAT运动控制边缘控制器(一):ZMC432H硬件接口

高柔SS加减速曲线在锂电池焊接中的应用

EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?

工业以太网时代,该如何选择总线运动控制器?

正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?


EtherCAT运动控制器在数控加工手轮随动中的应用

EtherCAT运动控制器在数控加工手轮随动中的应用之C++

EtherCAT运动控制器在LabVIEW中的运动控制与实时数据采集

运动控制器PSO视觉飞拍与精准输出的C++开发(三):二维/三维/多轴PSO输出

运动控制器PSO视觉飞拍与精准输出的C++开发(二):多轴PSO等距/周期输出

运动控制器PSO视觉飞拍与精准输出的C++开发(一):单轴PSO

运动控制器八通道PSO的视觉飞拍与精准输出

Windows实时运动控制软核(七):LOCAL高速接口测试之Labview

Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab

Windows实时运动控制软核(五):LOCAL高速接口测试之VC6.0

Windows实时运动控制软核(四):LOCAL高速接口测试之VB.NET

Windows实时运动控制软核(三):LOCAL高速接口测试之C++

Windows实时运动控制软核(二):LOCAL高速接口测试之Qt

Windows实时运动控制软核(一):LOCAL高速接口测试之C#

开放式激光振镜运动控制器:C++ 快速调用图形库应用

开放式激光振镜运动控制器:C++振镜矫正方法与实现

开放式激光振镜运动控制器:C++快速开发


开放式激光振镜运动控制器(五):ZMC408SCAN 光纤激光器的能量控制

开放式激光振镜运动控制器(四):ZMC408SCAN振镜控制光纤激光器加工

开放式激光振镜运动控制器(三):ZMC408SCAN轴控光纤激光器加工

开放式激光振镜运动控制器(二):ZMC408SCAN激光接口与控制

开放式激光振镜运动控制器(一):ZMC408SCAN接口与功能


运动控制器PSO位置同步输出(三):高精度等间距二维三维PSO输出

运动控制器PSO位置同步输出(二):PSO模式详解

运动控制器PSO位置同步输出(一):硬件平台与PSO指令简介


经济型EtherCAT运动控制器(十):EtherCAT总线快速入门

经济型EtherCAT运动控制器(九):示波器使

经济型EtherCAT运动控制器(八):轴参数与运动指令

经济型EtherCAT运动控制器(七):运动缓冲

经济型EtherCAT运动控制器(六):数据储存

经济型EtherCAT运动控制器(五):多任务运行

经济型EtherCAT运动控制器(四):ModbusRTU或ModbusTcp与触摸屏通讯

经济型EtherCAT运动控制器(三):PLC实现多轴直线插补与电子凸轮

经济型EtherCAT运动控制器(二):ZBasic实现多轴直线插补运动

经济型EtherCAT运动控制器(一):功能简介与应用场景


运动控制+机器视觉Demo软件框架(三):视觉纠偏+连续插补的配方编辑

运动控制+机器视觉Demo软件框架(二):移动标定和形状匹配

运动控制+机器视觉Demo软件框架(一):机械参数和配方文件的管理

运动控制+机器视觉Demo软件框架系统概述


开放式激光振镜+运动控制器(六):双振镜运动

开放式激光振镜+运动控制器(五):ZMC408SCAN控制器硬件介绍

开放式激光振镜+运动控制器(四):PSO位置同步输出在激光振镜加工中的应用

开放式激光振镜+运动控制器(三):振镜矫正

开放式激光振镜+运动控制器(二):振镜填充

开放式激光振镜+运动控制器(一):硬件接口


EtherCAT轴扩展模块EIO16084在运动控制系统中的应用
EtherCAT运动控制器中脉冲接口的快速调试与诊断
EtherCAT运动控制器之ZMIO300模块的使用
EtherCAT运动控制器的PLC编程(四) 电子凸轮
EtherCAT运动控制器的PLC编程(三) 电子齿轮
EtherCAT运动控制器的PLC编程(二) 圆弧插补
EtherCAT运动控制器的PLC编程(一) 直线插补


快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一

快速入门 | 篇二十一:正运动技术运动控制器自定义通讯

快速入门 | 篇二十:正运动技术运动控制器MODBUS通讯

快速入门 | 篇十九:正运动技术运动控制器多轴同步与电子凸轮指令简介


快速入门 | 篇十八:正运动技术脉冲型运动控制器的使用

快速入门 | 篇十七:运动控制器多轴插补运动指令的使用

快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门

快速入门 | 篇十五:运动控制器运动缓冲简介

快速入门 | 篇十四:运动控制器基础轴参数与基础运动控制指令

快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用


快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用

快速入门 | 篇十一:正运动技术运动控制器中断的应用

快速入门 | 篇十:运动控制器多任务运行特点

快速入门 | 篇九:如何进行运动控制器示波器的应用?

快速入门 | 篇八:如何进行运动控制器EtherCAT总线的基础使用?

快速入门 | 篇七:如何进行运动控制器ZCAN总线扩展模块的使用?


快速入门 | 篇六:如何进行运动控制器数据与存储的应用?

快速入门 | 篇五:如何进行运动控制器输入/输出IO的应用?

快速入门 | 篇四:如何进行运动控制器与触摸屏通讯?

快速入门 | 篇三:如何进行运动控制器ZPLC程序开发?

快速入门 | 篇二:如何进行运动控制器ZBasic程序开发?

快速入门 | 篇一:如何进行运动控制器固件升级?


EtherCAT与RTEX驱动器轴回零的配置与实现

G代码在运动控制器上的应用

运动控制器的自定义G代码编程应用

离线仿真调试,加快项目进度!

8轴EtherCAT轴扩展模块EIO24088的使用

运动控制器之追剪应用Demo

运动控制器激光振镜控制
运动控制器轴回零的配置与实现

运动控制器位置锁存功能的应用

ZMC运动控制器SCARA机械手应用快速入门

运动控制器RTEX总线使用入门

正运动技术CAD导图软件配合控制器的使用方法

EtherCAT总线运动控制器应用进阶一


EtherCAT运动控制卡开发教程之Qt(下):SCARA机械手正反解的建立

EtherCAT运动控制卡开发教程之Qt(中):小线段连续轨迹加工、暂停与继续

EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用


EtherCAT运动控制卡开发教程之python

EtherCAT运动控制卡的SCARA等机器人指令的应用

EtherCAT运动控制卡的PWM与模拟量输出和运动速度同步

EtherCAT运动控制卡硬件比较输出以及编码器锁存

EtherCAT运动控制卡IO动作与运动控制的同步

EtherCAT运动控制卡实时程序的运行和读写控制


EtherCAT运动控制卡的运动暂停、恢复与系统安全设置

EtherCAT运动控制卡小线段前瞻的连续插补运动

EtherCAT运动控制卡的多轴插补运动和手轮运动

EtherCAT运动控制卡的辅助调试工具与方法介绍

EtherCAT运动控制卡的总线轴参数设置和轴运动

EtherCAT运动控制卡的硬件接线与C#的硬件外设读写与回零运动

EtherCAT运动控制卡的硬件接线与C#的单轴运动控制


简单易用的运动控制卡(十六):螺距补偿和反向间隙补偿

简单易用的运动控制卡(十五):PC启停控制器的实时程序

简单易用的运动控制卡(十四):PWM、模拟量输出与运动控制的同步

简单易用的运动控制卡(十三):IO动作与运动控制的同步

简单易用的运动控制卡(十二):运动控制系统的安全设置

简单易用的运动控制卡(十一):运动的暂停恢复和速度倍率设置


简单易用的运动控制卡(十):连续插补和小线段前瞻

简单易用的运动控制卡(九):圆弧插补和螺旋插补

简单易用的运动控制卡(八):直线插补和手轮运动

简单易用的运动控制卡(七):一次性加载多条连续小线段数据

简单易用的运动控制卡(六):Basic文件下载和连续轨迹加工


简单易用的运动控制卡(五):IO配置与回零运动

简单易用的运动控制卡(四):函数库的封装

简单易用的运动控制卡(三):轴参数配置和单轴运动控制

简单易用的运动控制卡(二):外设读写与ZDevelop诊断

简单易用的运动控制卡(一):硬件接线和上位机开发


运动控制卡在ROS上的应用(下)

运动控制卡在ROS上的应用(上)


EtherCAT运动控制卡和LabVIEW构建智能装备(五)

EtherCAT运动控制卡和LabVIEW构建智能装备(四)

EtherCAT运动控制卡和LabVIEW构建智能装备(三)

EtherCAT运动控制卡和LabVIEW构建智能装备(二)

EtherCAT运动控制卡和LabVIEW构建智能装备(一)

EtherCAT运动控制卡在LabVIEW中的运动控制与数据采集


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

运动控制卡应用开发教程之C++

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

运动控制卡应用开发教程之C#

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

运动控制卡应用开发教程之VB.NET


运动控制卡应用开发教程之VB6.0

运动控制卡应用开发教程之VC6.0

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

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

运动控制卡应用开发教程之激光振镜控制

运动控制卡应用开发教程之硬件比较输出


关于正运动技术



深圳市正运动技术有限公司成立于2013年,专注于纯国产运动控制技术研究和通用运动控制软硬件平台和产品的研发,是国家级高新技术和专精特新“小巨人”企业。

正运动技术汇集了来自华为、中兴等公司的优秀人才。力求创新,目前公司拥有专利、著作权等知识产权五十余项。在坚持自主创新的同时,积极联合各大高校和科研院所协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。

正运动技术除本部研发中心外,设有中山、武汉、上海三个研发分部。为更好地服务客户,本部之外设有苏州、东莞两个区域性服务中心,设有佛山、厦门、青岛、西安、武汉、成都、天津、郑州等销售和技术服务机构。

经过众多合作伙伴多年的开发应用,正运动技术的产品广泛地应用于3C电子、半导体、新能源、机器人、包装印刷、纺织服装、激光加工、医疗制药、数控机床、传统加工等领域。

正运动小助手
正运动小助手是正运动技术旗下技术资料平台,可第一时间发布最新产品技术文档,为您奉上最全面的运动控制产品基础知识介绍、使用注意事项及操作步骤指引等资料。
 最新文章