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

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

3天内不再提示

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

正运动技术 来源:正运动技术 作者:正运动技术 2022-10-27 09:02 次阅读

今天,正运动小助手给大家分享一下开放式激光振镜运动控制器ZMC408SCAN进行振镜矫正的方法与实现说明。

01 ZMC408SCAN控制器介绍

ZMC408SCAN是正运动技术新推出的一款支持EtherCAT总线的开放式激光振镜运动控制器,专为工业激光+振镜+运动控制方面的应用而设计。通过EtherCAT总线和脉冲轴接口能实现多轴联动运动控制。

ZMC408SCAN支持ETHERNET、EtherCAT、USB、CAN、RS485RS232等通讯接口,通过CAN、EtherCAT总线可以连接各个扩展模块,从而扩展数字量、模拟量或运动轴。

pYYBAGNZ1K6ADrgvAAJl-kyRTTg971.png

(1)ZMC408SCAN内置高精度PSO位置同步输出功能,在加工圆角、曲线部分时即使进行了减速调整,在高速加工的场合,也能控制激光输出的间距保持恒定;

(2)支持激光振镜控制和振镜反馈,包含2个振镜接口,支持2D振镜和3D振镜,配合不带加减速的运动指令MOVESCAN,拐角处振镜加工自动延时,完成精准高效的激光控制,提高激光加工设备的产能;

(3)通过指令在运动中灵活的调节激光开光/关光延时,响应快,精确到us级别的控制,且设置过程简单,大大缩短了工程师的调参时间;

(4)自带LASER激光器控制接口,支持IPG、YLR、YLS等类型激光电源,还带一个EXIO扩展IO接口,通过定制转接板,灵活控制市场上主流的各种激光器;

(5)支持PC同时控制16个ZMC408SCAN控制器同时工作,形成一种振镜阵列的激光加工;

(6)板载4路高速差分脉冲输出,并带4路高速差分编码器反馈,支持EtherCAT总线驱动器的控制,支持5轴XYZAC轴的插补,支持振镜轴与运动轴混合插补;

(7)支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等多种运动控制功能。

02 振镜控制

激光振镜是一种专门用于激光加工领域的特殊的运动器件,它靠两个振镜片反射激光, 形成XY平面的运动。

激光振镜不同于一般的电机,激光振镜具有非常小的惯量,且在运动的过程中负载非常小,系统的响应非常快,因此在振镜运动中可以不用考虑振镜加减速。

振镜一般分模拟振镜与数字振镜,模拟振镜就是振镜驱动板是接收模拟信号方式,常用的模拟振镜信号是直流电压-5伏到+5伏变化的信号,对应的是电机摆动的角度,比如-5V到+5V对应-10度到+10度的电机摆动角度。

数字振镜采用数字信号进行控制,数字信号则符合XY2-100协议。数字量-32768~32767对应电机的最大摆动角度。

正运动针对振镜轴控制提供来一种专用的运动指令,通过ZAux_Direct_MoveScanAbs或者ZAux_Direct_MoveScan实现振镜的快速响应。

Scan运动指令相比普通运动指令控制不带加减速规划,支持us级别的时间控制。通过ZAux_Direct_SetForceSpeed设置的速度与矢量距离直接计算出运行时间。

目前正运动SCAN控制器支持1-2路XY2-100数字振镜轴的控制。

指令 说明
ZAux_Direct_SetAtype 设轴类型
ZAux_Direct_SetUnits 设置轴脉冲当量
ZAux_Direct_SetMegre 设置轴连续插补开关
ZAux_Direct_SetForceSpeed 设置振镜轴SCAN运动速度 不带加减速
ZAux_Direct_MoveScan 振镜轴直线插补相对运动
ZAux_Direct_MoveScanAbs 振镜轴直线插补绝对运动
ZAux_Direct_MoveAddax 插补运动中设置运动叠加
ZAux_Direct_GetDpos 读取轴命令规划位置
ZAux_Direct_GetMpos 读取轴实际反馈位置
ZAux_Direct_GetEncoder 读取振镜轴原始位置数据
ZAux_Direct_GetAxisstatus 读取振镜轴状态
ZAux_Direct_StepRatio 设置振镜轴方向
ZAux_Direct_MoveSync 同步跟随运动

一、振镜轴配置

正运动SCAN控制器支持1-2路振镜轴,不同控制器映射的轴号及支持的振镜轴功能不同,不同振镜组对应轴号如下图。

通过指令ZAux_Direct_SetAtype设置对应振镜轴类型,振镜轴类型分为三种:

一种轴类型值为20(振镜类型,带振镜状态反馈,仅ZMC408SCAN支持);

一种轴类型值为21(振镜轴控制类型);

一种轴类型值为22(振镜类型,带振镜位置反馈,仅ZMC408SCAN支持)。

*表示不支持的功能。

控制器型号 SCAN0 SCAN1
X轴 Y轴 Z轴(3D特殊固件) X轴 Y轴 Z轴(3D特殊固件)
ZMC408SCAN 4 5 8 6 7 9
ZMC420SCAN 4 5 * 6 7 *
VPLC504SCAN 4 5 * * * *

二、振镜矫正

1.重点说明

激光振镜扫描系统如下图所示,可见振镜扫描的实际工作范围由振镜的最大偏转角度与工作高度决定。因此振镜轴偏转角度对应输出-32768~32767与实际工作范围做单位映射时需要按照根据测试长度做比例映射。

pYYBAGNZ1VaAbEb3AADvUW7VbmY429.png

振镜扫描系统建立的坐标系是一个非正交的坐标系,实际的扫描场会造成枕型失真。由于振镜本身扫描造成的枕型失真如图(左),另外由于F-Theta平面场镜的使用,会造成输出轮廓的桶型失真如图(中),叠加以后输出的图形具有桶型和枕型双重失真如图(右)。

pYYBAGNZ1WKAIhY2AACPGdEJnso240.png

为了使软件坐标与实际运行距离场地对应及输出轨迹不失真,则需要需要实时的对每一个数据点进行校正,通常采用查找表分段线性插值的方法进行位置校正,校正点越多实际输出位置越精准。

正运动SCAN控制器提供了BOX校正、多点校正等方法,不管是系数校正还是多点校正,校正点参数都是写到控制器内部系统数组TABLE寄存器的。因此在程序中有其他功能应用到TABLE寄存器时需要注意地址的合理分配。

(1)Box系数校正

系数校正指的是根据振镜输出图形枕/桶形失真、平行四边形失真、梯形失真、比例缩放几种情况进行系数调整校正。

通过调用ZScan_CorrectFactor进行系数校正。先控制振镜绘制出一个正方形校正图形,根据校正图形的失真按下图情况调整对应的系数参数,根据标刻长度与测量长度调整缩放系数,直到实际标刻的尺寸与设置一致时认为校正成功,校正系以是填写的变化量,通常以0值为参考基准变化。

pYYBAGNZ1XGASYBQAABjORp57k8191.png

(2)9点校正

9点校正指的是根据在工作范围内标刻3*3的表格,根据每个点的理论位置与实际位置来进行振镜校正。

先控制振镜预绘制出一个3*3校正表格图形,按下图所示P1-P9的顺序填入X坐标与Y坐标实际测量值,填入P1点的理论标刻与P9点的理论坐标,通过调用ZScan_Correct9进行9点校正。需重新标刻测试,直到实际标刻与理论值达到预期精度范围。

poYBAGNZ1YOAa0-NAABYBg6Dv6w087.png

(3)25点校正

25点校正指的是根据在工作范围内标刻5*5的表格,校正过程与9点校正相同,通过调用ZScan_Correct25进行25点校正。校正点数越多校正精度也越高。

2.振镜指令介绍

指令 说明
ZScan_Correct9 振镜9点校正
ZScan_Correct25 振镜25点校正
ZScan_CorrectFactor 振镜系数校正
ZScan_CancelCorrect 取消振镜校正

(1)振镜轴9点矫正

poYBAGNZ1aeAB0trAACCv1lDz0s116.png

(2)振镜轴25点矫正

pYYBAGNZ1bGAYYZTAACDOcJ7HpM839.png

(3)振镜轴系数矫正

pYYBAGNZ1bmAd0_lAACNCWL6eZQ531.png

(4)取消振镜矫正

poYBAGNZ1caAWIBnAABPwG3OnCc053.png

03 程序展示

九点矫正与25点矫正过程相同,但25点矫正精度更高,可通过九点矫正例程改写25点矫正。

1.九点矫正程序如下

ZMC_HANDLE handle = NULL;      //连接句柄
int rtn = ZAux_OpenEth("192.168.0.11", &handle); //连接控制器
if(CheckError(rtn,"ZAux_OpenEth")) return;  //检查函数返回
for(int iAxis = 4;iAxis<6;iAxis++)
{
   rtn = ZAux_Direct_SetAtype(handle,iAxis,21); //设置轴为振镜轴
   if(CheckError(rtn,"ZAux_Direct_SetAtype")) return;
   rtn = ZAux_Direct_SetUnits(handle,iAxis,500);   //设置轴脉冲当量
   if(CheckError(rtn,"ZAux_Direct_SetUnits")) return;
}
rtn = ZScan_CancelCorrect(handle,0,-1,-1,200,1,1000);  //取消振镜校正if(CheckError(rtn,"ZScan_CancelCorrect")) return;
double m_dXMeasurePt[9] = {-51.5,0,49.5,-52.9,0,50.1,-51.8,0,49.0};
double m_dYMeasurePt[9] = {-51.5,-51.0,-53.0,0,0,0,51.9,51.5,53.9};
rtn = ZScan_Correct9(handle,0,m_dXMeasurePt,m_dYMeasurePt,0,21,500,-50,-50,50,50,1,1000); //振镜0 9点校正,校正数据存储在系统数组TABLE(1000 - 1004+21*21*2)
if(CheckError(rtn,"ZScan_CorrectFactor")) return;
rtn = ZAux_Close( handle);        //关闭连接,释放句柄
if(CheckError(rtn,"ZAux_Close")) return;
handle = NULL;

2.系数矫正例程如下

ZMC_HANDLE handle = NULL;      //连接句柄
int rtn = ZAux_OpenEth("192.168.0.11", &handle); //连接控制器
if(CheckError(rtn,"ZAux_OpenEth")) return;  //检查函数返回
for(int iAxis = 4;iAxis<6;iAxis++)
{
   rtn = ZAux_Direct_SetAtype(handle,iAxis,21); //设置轴为振镜轴
   if(CheckError(rtn,"ZAux_Direct_SetAtype")) return;
   rtn = ZAux_Direct_SetUnits(handle,iAxis,500);   //设置轴脉冲当量
   if(CheckError(rtn,"ZAux_Direct_SetUnits")) return;
}
rtn = ZScan_CancelCorrect(handle,0,-1,-1,200,1,1000);  //取消振镜校正if(CheckError(rtn,"ZScan_CancelCorrect")) return;
double m_dMaxBox[2] = {131,131};  //最大校正区域
double m_dCorrectBox[] = {131,131};  //实际校正区域
double m_dOffset[2] = {0,0};   //偏移量   一般用于红光偏移
double m_pdFactor[2][4] = {{1,0,0,0},{1,0,0,0}};   //校正系数   缩放系数、桶型/枕型畸变系数、平行四边形畸变系数、梯形畸变系数
rtn = ZScan_CorrectFactor(handle,0,m_dMaxBox[0],m_dMaxBox[1],m_dCorrectBox[0],m_dCorrectBox[1],m_dOffset[0],m_dOffset[1],&m_pdFactor[0][0],&m_pdFactor[1][0],0,21,1,1,500,1,1000); //振镜0系数校正,校正数据存储在系统数组TABLE(1000 - 1004+21*21*2)
if(CheckError(rtn,"ZScan_CorrectFactor")) return;
rtn = ZAux_Close( handle);        //关闭连接,释放句柄
if(CheckError(rtn,"ZAux_Close")) return;
handle = NULL;

04 振镜矫正工具

振镜矫正工具包含了多种矫正方式,9点矫正、25点矫正、系数矫正、多点矫正、文件矫正。

poYBAGNZ1oiAAjCMAACziarhAcs497.png

参数设置界面机械参数:

先通过IP地址选择,连上对应控制器,然后设置机械参数选择激光器类型,设置好振镜号,将标刻图形的XY方向与软件显示的一致。

打标参数:

从上至下依次填写标刻速度、空移速度、轴类型、脉冲当量(运动指令与速度指令的基本单位,需要修改脉冲当量为振镜运动1mm的脉冲个数,修改过后标刻图形相较于预定尺寸相差较小就能开始测量矫正了,预校正标刻图形不完整或图形比预定尺寸大很多时,将此参数调小;反之则将参数调大)。

例如:

开关延时:多点矫正圆中心的点深,调开关延时

关光延时:最外圈不封口的情况调关光延时

拐角延时:右边的线深,调拐角延时

跳转延时:多点矫正圆点有小尾巴,调跳转延时

结束延时:所有的运动结束后都加结束延时

激光能量控制:

(1)模拟量DA(0~4095对应0~10V电压)

(2)PWM(调机占空比,设置频率)

(3)IO组合

注:激光能量的控制参数,需要根据激光器能量功率的控制类型来进行修改,需参考激光器手册。

poYBAGNZ1uGAYWM0AACdJ47eyO8821.png

1.9点矫正和25点矫正

设置矫正参数的table起始位置:这个地址不要与其他table地址位置冲突,约使用1000个数据,占用1000个table地址;

红光游览:可用来矫正图形;

预标刻尺寸:面积,标刻预校正图形使用此参数;

预标刻出图形后将标刻图形取出测量:测量两点之间的距离,将两点之间的距离参数填入对应的框内;

标刻预矫正:根据参数设置和预标刻尺寸开始标刻预矫正图形;

仅矫正按钮:只进行振镜矫正,不标刻;

标刻尺寸:面积,标刻预矫正图形使用此参数;

矫正并标刻:根据标刻尺寸,开始矫正并标刻图形;

保存到文件和保存到控制器:保存到文件是保存到电脑本地(保存文件可用于文件矫正和多点矫正),保存到控制器是保存到控制器的flash块(要确保不同的振镜轴号间用不同flash块,不能冲突);

急停:标刻急停。

poYBAGNZ11WAc1LjAADqLhgmhwQ523.png

(1)9点矫正标刻预矫正效果图

pYYBAGNZ116AXws8AADoKkcocjM600.pngpoYBAGNZ12SAONRMAACw5fAf3zg286.png

(2)矫正并标刻效果图

poYBAGNZ12qAcOZOAAEvrk8ZaAU106.pngpYYBAGNZ12-AC99xAADOG3BGJeE981.png

(3)25点矫正同9点矫正相同,只是点数更多,矫正精度更高。

poYBAGNZ13aAc797AADGwoL1tcs063.png

2.系数矫正

系数矫正和9点矫正等差不多,只是多了一个原点偏移和XY的缩放比。

pYYBAGNZ15qAZ6A2AACL9MlSQ_s343.png

3.多点矫正

(1)矫正大小:同上;

(2)标刻点半径:标刻圆(点)半径;

(3)标刻点数量:可选9*9、17*17、33*33、65*65,目前开发9*9、17*17,更多点数矫正请联系正运动技术支持工程师;

(4)填充点间距:同心圆半径差;

(5)完整图形:标刻完整图形(扫描仪可以完整扫描出整张图片);

(6)左边/右边图形:标刻左/右图形;(图形较大时,使用扫描仪无法一次将所有图形全部扫描,请使用左右分别标刻,分别扫描,导入两张图片);

(7)急停:标刻急停;

(8)点处理:

模式:单张图片、两张图片:根据扫描标刻后的矫正图纸是否分两次扫描,或分左右标刻

极性:白背景黑点、黑背景白点

阈值方式:自动、手动阈值:(阈值参数范围0~255)黑白照片白色为255,黑色为0,处于低阈值至高阈值之间之间的像素处理为 255,否则为 0,用于处理扫描标刻后的图像处理

低阈值:0~255

高阈值:0~255 应设置为大于等于低阈值数据

最大面积/最小面积:通过筛选原点面积过滤图像噪点(杂点)

详见Zvision帮助

(9)寻入9点矫正文件:导入9点矫正文件(多点矫正需要9点矫正中“保存矫正数据到文件”的文件)。

poYBAGNZ16KAQsaoAACj07mGXfo865.png

4.文件矫正

功能:导入9/25/多点矫正“保存矫正数据到文件”保存的文件,更新参数至矫正界面、仅矫正或矫正并标刻等。

poYBAGNZ16mAdmhcAABjzZTrOAM218.png

本次,正运动技术开放式激光振镜运动控制器:C++振镜矫正方法与实现,就分享到这里。

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

    关注

    2

    文章

    401

    浏览量

    24719
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73639
  • EtherCAT总线
    +关注

    关注

    5

    文章

    72

    浏览量

    5379
收藏 人收藏

    评论

    相关推荐

    ZMC408SCAN控制光纤激光器加工

    ZMC408SCAN是正运动技术新推出的一款支持EtherCAT总线的开放式激光运动
    的头像 发表于 09-14 14:16 1666次阅读
    ZMC408SCAN<b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>控制</b>光纤<b class='flag-5'>激光器</b>加工

    开放式激光运动控制器在Ubuntu+Qt下自定义图形标刻

    开放式激光运动控制器在Ubuntu+Qt下自定义图形标刻
    的头像 发表于 10-08 10:45 646次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>在Ubuntu+Qt下自定义图形标刻

    激光运动控制系统开发

    激光 运动控制 技术是将
    发表于 07-06 18:13 368次下载
    <b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制</b>系统开发

    运动控制器之ZMC420SCAN的控制矫正

    今天,正运动小助手给大家分享一下运动控制器之ZMC420SCAN的控制
    的头像 发表于 02-18 14:19 2424次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b>之ZMC420SCAN的<b class='flag-5'>控制</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>矫正</b>

    激光运动控制器(一):ZMC408SCAN接口与功能

    ZMC408SCAN是正运动技术新推出的一款支持EtherCAT总线的开放式激光运动
    的头像 发表于 08-01 15:03 3143次阅读
    <b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>(一):ZMC408SCAN接口与功能

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

    今天,正运动技术为大家分享一下应用ZMC408SCAN开放式激光运动
    的头像 发表于 10-19 09:04 1450次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>:<b class='flag-5'>C++</b>快速开发

    应用ZMC408SCAN开放式激光运动控制器C++开发

    今天,正运动技术为大家分享一下应用ZMC408SCAN开放式激光运动
    的头像 发表于 10-24 11:26 1740次阅读

    ZMC408SCAN控制光纤激光器加工的方法

    ZMC408SCAN是正运动技术新推出的一款支持EtherCAT总线的开放式激光运动
    的头像 发表于 10-26 17:32 2088次阅读

    开放式激光运动控制器ZMC408SCAN进行矫正方法实现

    ZMC408SCAN是正运动技术新推出的一款支持EtherCAT总线的开放式激光运动
    的头像 发表于 10-31 17:56 1856次阅读

    运动激光运动控制器ZMC408SCAN用户手册

    ZMC408SCAN 激光运动控制器是正运动技术推出的高性能总线双
    发表于 04-11 14:22 3次下载

    ZMC420SCAN激光运动控制器用户手册

    控制、总线轴/脉冲轴控制的独立 运动控制器控制器本身支持两组 XY
    发表于 04-11 14:28 3次下载

    运动控制器激光控制

    激光运动控制系统中不但有运动控制,还有
    的头像 发表于 09-26 11:44 2093次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>控制</b>

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

    想知道怎么实现自动校正吗?快来点击正运动精囊!
    的头像 发表于 04-26 14:36 798次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>的视觉校正<b class='flag-5'>振</b><b class='flag-5'>镜</b>精度解决方案

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

    开放式激光运动控制器激光清洗解决方案。
    的头像 发表于 07-18 09:44 335次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>的<b class='flag-5'>激光</b>清洗应用

    开放式激光运动控制器在Ubuntu+Qt下CAD图形标刻

    开放式激光运动控制器再Ubuntu+Qt下CAD图形标刻
    的头像 发表于 09-18 15:12 294次阅读
    <b class='flag-5'>开放式</b><b class='flag-5'>激光</b><b class='flag-5'>振</b><b class='flag-5'>镜</b><b class='flag-5'>运动</b><b class='flag-5'>控制器</b>在Ubuntu+Qt下CAD图形标刻