跳转至

振镜功能

1.1 简介

运动控制器不仅可以对电机进行控制使其运动出特定的轨迹,还可以通过对振镜控制来完成振镜的定位和插补运动。运动控制器采用数字信号实现对振镜运动的控制,并且数字信号符合XY2-100协议。

振镜缓冲区中支持振镜运动控制、激光能量控制,激光开关光控制、模拟量输出控制等。振镜激光还提供一套立即输出指令。

1.2 振镜激光功能

1.2.1 指令列表

振镜运动基础指令列表

指令 说明
GTN_ScanInitPro 初始化振镜缓存区,设置振镜前瞻参数。
GTN_GetScanCrdPosPro 读取振镜坐标值。
GTN_GetScanStatusPro 读取振镜状态参数。
GTN_ScanLinearPro 振镜直线运动指令。
GTN_SetScanDelayPrmPro 设置振镜激光延迟参数。
GTN_SetScanMotionDelayPro 设置振镜运动延时时间。
GTN_GetScanExecuteTimePro 读取已经压入的振镜指令的执行时间。
GTN_ClearScanExecuteTimePro 清除已经压入的振镜指令的执行时间。

振镜激光指令列表

指令 说明
GTN_GetScanLaserLinkPro 读取振镜和激光的关联关系。
GTN_SetScanLaserLinkPro 设置振镜和激光的关联关系。
GTN_SetScanLaserEnablePro 设置激光开关光。
GTN_SetScanLaserDelayPro 设置激光开关光延时。
GTN_SetScanLaserPwmPrmPro 设置振镜激光PWM信号输出参数。
GTN_SetScanLaserPwmDutyPro 设置振镜激光PWM信号输出占空比。
GTN_SetScanLaserPwmFrequencyPro 设置振镜激光PWM信号输出频率。
GTN_SetScanLaserPwmPulseWidthPro 设置振镜激光PWM信号输出脉宽。
GTN_SetScanLaserVoltagePrmPro 设置振镜激光模拟量信号输出参数。
GTN_SetScanLaserVoltagePro 设置振镜激光模拟量信号输出电压值。
GTN_SetScanLaserParallelPrmPro 设置振镜激光并口信号输出参数。
GTN_SetScanLaserParallelPro 设置振镜激光并口信号输出值。
GTN_SetScanLaserIoPro 设置振镜激光器Do信号输出值。

指令流功能指令列表

指令 说明
GTN_StartCommandList 启动指令流运动。
GTN_StopCommandList 停止指令流运动。
GTN_GetCommandListSpace 读取指令流空间。
GTN_ClearCommandListData 清空指令流数据。
GTN_CommandListDataEnd 将数据压入指令流。
GTN_SetScanLaserEnablePro 设置激光开关光。
GTN_SetScanLaserPrmPro 设置振镜激光模式和参数。
GTN_SetScanLaserPowerPro 设置激光能量。
GTN_SetScanLaserDelayPro 设置激光开关光延时。

1.2.2 控制激光硬件通道

注意

在初始状态下,激光输出是独立的软件资源,如果需要使用振镜或者通过振镜控制激光输出,必须先用指令GTN_SetScanLaserLinkPro将振镜和激光绑定在一起。

激光硬件通道可以通过“通用激光控制功能”和"插补缓存区的激光操作"两种方式控制输出,具体请参考"激光功能"。除此之外,本章节将介绍另外一种控制激光硬件通道输出方式——振镜激光操作。

为了防止在实际编程过程中出现混乱,新增了指令GTN_SetScanLaserLinkPro用于设置激光硬件通道输出数据来源,同时可调用指令GTN_GetScanLaserLinkPro读取激光与振镜之间的关系,详见下图。默认情况下,激光输出通道由"激光功能"列出的指令进行控制,当需要在振镜中使用激光时,必须首先调用上述指令将振镜与对应的激光绑定,再进行后续操作。

激光硬件通道输出数据来源

激光硬件通道输出数据来源

当上图GTN_SetScanLaserLinkPro指令中的link参数值为0时,表示激光功能与振镜功能不关联,即激光硬件通道只能通过激光功能相关指令(具体请参考"激光功能")控制。此时,调用激光功能相关指令,函数返回0,即指令执行成功;而调用振镜功能相关指令时,则会返回1,即指令执行错误,因为此时当前指令的执行条件不满足。

同理,当link值为1时,表示激光功能与振镜功能关联,即激光硬件通道只能通过振镜激光功能指令列表控制。此时,只有调用振镜激光相关指令才能成功执行,调用激光相关指令则会因为执行条件不满足而报错,返回值为1。

1.2.3 振镜控制激光立即输出

与通用激光功能一样,振镜也支持四种激光能量输出模式:占空比模式、频率模式、模拟量模式和并口模式。

注意

一旦激光被绑定,那么将不能再通过激光通用指令控制激光(具体请参考"激光功能"章节指令),只能通过振镜激光功能指令列表控制激光输出。

另外,所有振镜操作激光能量的指令均支持立即和指令流两种模式,两种不同模式通过每条指令参数列表最后一个结构体参数TListInfo实现。当该参数为NULL或者传入的结构体中list变量为0时,表示立即指令,用户调用指令后立即生效。当该参数传入的结构体中list变量为非0值时,表示对应指令流的缓冲区指令,在启动指令流后并且按顺序执行到该指令时才生效。

本小节为立即操作说明,指令中最后一个参数传NULL或者list变量写0即可。以下为振镜控制激光输出的说明:

1.2.3.1 PWM占空比输出模式

该模式通过固定频率和调整占空比实现激光输出能量控制。

(1)调用指令GTN_SetScanLaserPwmPrmPro设置振镜激光PWM输出参数范围。

(2)调用指令GTN_SetScanLaserPwmFrequencyPro设置振镜激光PWM频率。(单位:kHz)。

(3)调用指令GTN_SetScanLaserPwmDutyPro设置PWM信号输出的占空比(单位:%)。

(4)设置好激光能量后,再通过指令GTN_SetScanLaserEnablePro控制振镜激光的开关。

在激光输出的过程中,可以随时通过调用指令GTN_SetScanLaserPwmDutyPro调节输出的激光能量。

例程

请参考振镜激光立即输出-占空比模式例程

1.2.3.2 频率输出模式

该模式通过固定输出脉宽和调整频率实现激光输出能量控制。

(1)先调用指令GTN_SetScanLaserPwmPrmPro设置振镜激光PWM输出参数范围。

(2)调用指令GTN_SetScanLaserPwmPulseWidthPro设置PWM信号输出的脉宽(单位:us)。

(3)调用指令GTN_SetScanLaserPwmFrequencyPro设置PWM信号输出的频率(单位:kHz)。

(4)设置好激光能量后,再通过指令GTN_SetScanLaserEnablePro控制振镜激光的开关。

在激光输出的过程中,可以随时通过调用指令GTN_SetScanLaserPwmFrequencyPro调节输出的激光能量。

例程

请参考振镜激光立即输出-频率模式例程

1.2.3.3 模拟量输出模式

该模式通过调整输出电压实现激光输出能量控制。

(1)调用指令GTN_SetScanLaserVoltagePrmPro设置振镜激光模拟量输出参数限制。

(2)调用指令GTN_SetScanLaserVoltagePro设置振镜激光模拟量输出值(单位:V)。

(3)设置好激光能量后,再通过指令GTN_SetScanLaserEnablePro控制振镜激光的开关。

在激光输出的过程中,可以随时通过调用指令GTN_SetScanLaserVoltagePro调节输出的激光能量。

例程

请参考振镜激光立即输出-模拟量模式例程

1.2.3.4 并口输出模式

该模式通过调整并口输出数据实现激光输出能量控制,该模式需要选择支持并口接口的网络模块。

(1)调用指令GTN_SetScanLaserParallelPrmPro设置振镜激光并口输出参数限制。

(2)调用指令GTN_SetScanLaserParallelPro设置振镜激光并口能量输出值。

(3)设置好激光能量后,再通过指令GTN_SetScanLaserEnablePro控制振镜激光的开关。

在激光输出的过程中,可以随时通过调用指令GTN_SetScanLaserParallelPro调节输出的激光能量。

例程

请参考振镜激光立即输出-并口模式例程

1.2.4 振镜激光指令流缓存区操作

振镜运动采用缓存区运动方式,即用户需要向指令流缓存区中传递运动及工艺数据,然后启动指令流缓存区运动,运动控制器则会依次执行用户所传递的运动数据,直到所有的运动数据全部运动完成。通过缓存区指令可以有效地减低计算机的时间开销,连贯地执行运动指令。

除了激光的立即输出功能,其他所有振镜相关功能都只能在指令流缓冲区中实现。在振镜指令流中可以存放各种类型的指令,包括振镜运动、振镜运动延迟、激光开关光延迟、激光能量控制等指令,通过不同指令的组合,可以实现各种工艺动作。

在使用振镜前,用户首先必须为振镜绑定一路激光,如果没有绑定激光,振镜则无法输出,功能无法正常使用,绑定操作请参照1.2.2章节。确认绑定激光成功后,第一步则是初始化振镜(指令GTN_ScanInitPro),初始化完成后再按照期望的执行顺序依次调用指令将数据压入指令流缓冲区。在所有数据都压完之后,必须调用指令GTN_CommandListDataEnd结束振镜数据预处理,直到指令返回成功(指令返回值为0),保证缓存的预处理数据都已处理完成。启动和停止振镜运动,分别通过指令GTN_StartCommandList和指令GTN_StopCommandList实现。运动控制器目前仅为振镜提供了最大8192的空间存放振镜指令流数据,如果用户数据小于8192段,建议先将数据全部压入缓存区后,再启动指令流,如果用户数据大于这个阈值,为了防止运动跑空,建议将缓冲区压满之后再启动运动,启动运动后继续压入剩余的数据。

介绍完振镜指令流缓冲区的指令流程,下面将详细介绍具体功能。

1.2.4.1 振镜控制激光能量操作

在振镜运动过程中,可以通过调用振镜激光指令列表中的指令来实现在振镜缓存区中操作激光。支持在振镜运动过程中控制激光的开关,激光输出能量的调节等功能。具体说明可参考振镜控制激光立即输出章节。 缓存区指令pListInfo不为NULL。

例程

请参考振镜运动和DMA功能例程

1.2.4.2 激光开关光延时

在激光振镜运动控制系统中不但有对激光输出能量大小的控制,还有对激光输出时间的控制。如何有效地处理振镜运动和激光开关的配合是一个很重要的问题,只有有效地协调了激光和运动的关系,才能运动出精确的轨迹。考虑这些因素,运动控制器提供了激光振镜的运动延时,利用这些延时,用户可以很好地协调振镜运动和激光开关的关系。

激光延时包括激光开延时和激光关延时,且激光开关延时可以设置为正值,也可以设置为负值。其中,正值表示滞后开关,负值表示提前开关。激光开关延时将会影响一个Mark运动(标刻运动,即振镜运动的同时激光为打开状态)的开始和结束以及多个Mark运动的激光开光时刻,但激光开关的延时不影响整个文件加工的时间。

激光开关延时需要调用缓存区指令GTN_SetScanLaserDelayPro设置。

(1) 激光开延时:运动控制器会在Mark运动的起始处自动插入开激光延时,即一旦有开激光的操作,激光振镜运动控制器便会插入开激光延时。有一些激光加工的材料通常需要激光照射一段时间才有反应,所以在加工开始前要对材料的加工起点进行预热,这样的功能可以通过设置激光开延时为负值实现,达到提前开光的效果。

(2) 激光关延时:一旦设定了关激光延时,则激光振镜运动控制器会在任何关闭激光的动作开始后自动加入一个延时。

1.3 振镜基本运动

激光振镜是一种专门用于激光加工领域的特殊运动器件,它靠两个振镜反射控制激光路径,通过两个镜片的摆动形成XY平面的运动。激光振镜不同于一般的电机,激光振镜具有非常小的惯量,且在运动的过程中负载非常小(只有两个小的反射镜片),因而系统的响应非常快。

激光振镜运动主要分为两种基本运动:一种为跳转(Jump)运动,运动过程中激光处于关闭状态,一般用于快速定位;另一种为标刻(Mark)运动,运动过程中激光为打开状态,一般用于激光加工。为了方便用户理解,以下图为例补充说明:

激光振镜运动

激光振镜运动

如上图所示有两种轨迹形式,一种是虚线,一种是实线。其中,虚线为跳转(Jump)指令,实线为标刻(Mark)指令。标刻运动轨迹通过激光加工后正好是“固高”,跳转指令则不会留下痕迹。

跳转(Jump)运动由于是一个跳转指令,在运动的过程中,激光呈关闭状态,不影响轨迹的加工,因此可以以很大的速度运动。标刻(Mark)运动为加工指令,在运动过程中,激光呈开启状态,进行轨迹的加工,因此用户需要把标刻(Mark)运动的速度设置得相对低一些。

针对上述两种运动形式,运动控制器提供了统一运动指令:GTN_ScanLinearPro,通过设置运动模式参数,实现不同的运动模式。该指令的参数包含当前振镜运动段的终点坐标,其起点为上一个运动段的终点坐标。振镜运动为一个X、Y协调的插补运动。激光振镜运动控制器复位后的输出电压为0V,对应扫描场的中心点。

例程

请参考振镜运动和DMA功能例程

振镜速度为1500 bit/ms时,振镜激光效果图如图所示:

振镜激光效果图(横轴为振镜x轴,纵轴为振镜y轴)

振镜激光效果图(横轴为振镜x轴,纵轴为振镜y轴)

振镜速度为3000 bit/ms时,振镜激光效果图如图所示:

振镜激光效果图(横轴为振镜x轴,纵轴为振镜y轴)2

振镜激光效果图(横轴为振镜x轴,纵轴为振镜y轴)

1.4 振镜运动延时

1.4.1 指令列表

振镜运动延时指令列表

指令 说明
GTN_SetScanDelayPrmPro 设置振镜运动延时参数。
GTN_SetScanMotionDelayPro 设置振镜运动延时时间。

1.4.2 重点说明

尽管激光振镜的惯量很小,但是在振镜运动和激光开关的时序上必须考虑激光振镜的动态特性,如振镜的响应时间、激光的响应时间以及被加工的物体对激光的敏感程度。为了解决加工过程中的协调问题,必须用到振镜运动延时。

振镜运动延时主要包括跳转运动延时(JD)、标刻运动延时(MD)和连续标刻运动延时(PD)。在每个轨迹段的结束处,运动控制器会自动的插入一个相应的延时。振镜运动延时的单位为:us。

1.4.2.1 跳转运动延时(JD)

当激光振镜运动一个跳转指令时,激光振镜需要加速到设定的跳转速度。指令执行结束后,为了消除定位的抖动,需要插入跳转延时,跳转运动和跳转延时如图所示:

跳转运动和跳转延时的逻辑时序图

跳转运动和跳转延时的逻辑时序图

跳转延时的设置可以通过指令GTN_SetScanDelayPrmPro进行设置。如果跳转运动的距离比较小,振镜还没有加速到设定的跳转速度,该跳转段运动已经结束,此时不需要插入长的跳转延时,跳转运动的长度越短,需要插入的延时就越小。所以为了尽量提高加工的效率,需要尽可能缩短额外时间的开销。根据不同的跳转运动长度插入不同的延时时间可以很好地解决该问题。

运动控制器提供了这样的一种跳转延时设置模式,当用户使能该功能时,运动控制器会根据用户设置的参数线性的设置跳转延时的大小,当跳转长度大于某个阈值时,跳转延时按照函数GTN_SetScanDelayPrmPro设置的maxJumpDelay进行延时,当跳转长度小于某个阈值时,激光振镜运动控制器会按照下图所示方法设置跳转延时。

变跳转延时逻辑示意图

变跳转延时逻辑示意图

1.4.2.2 单段标刻运动延时(MD)

标刻运动的速度一般要比跳转指令运动的速度低的多,尽管在标刻运动结束时仍存在一个稳定时间,但是这个时间很短,可以忽略不计。单段标刻延时时间通过函数GTN_SetScanDelayPrmPro设置参数pPrm中的markDelay数值。标刻运动和标刻延时的逻辑关系如图所示。

标刻运动和标刻延时逻辑示意图

标刻运动和标刻延时逻辑示意图

1.4.2.3 连续标刻运动延时(PD))

如果多段连续标刻的运动,则不必要在每个标刻段结束处插入一个MD,激光振镜运动控制器会自动的在段间插入多个PD,如图所示:

连续标刻运动和连续标刻延时逻辑示意图

连续标刻运动和连续标刻延时逻辑示意图

运动控制器提供了两种连续标刻延时模式以供用户选择:

(1) 固定延时模式:用户调用函数GTN_SetScanDelayPrmPro设置multiMarkDelayMode为0,多段标刻运动之间将插入固定延时multiMarkDelayConst设置的值。

(2) 变延时模式:用户调用函数GTN_SetScanDelayPrmPro设置multiMarkDelayMode为1,多段标刻运动之间的延时为:

delayTime = multiMarkDelayConst*(1-cosθ)

其中θ为两条标刻运动轨迹的夹角。

如果没有设置连续标刻运动延时或延时太小,则会造成下图所示的现象,尖角的轨迹加工成了圆角。如果设置的延迟时间过长,则会在轨迹段间有停顿,造成打“重点”的情况,那么,需要在延时的过程中关闭激光,减少激光打开的时间。运动控制卡提供了这样的功能,用户可以调用函数GTN_SetScanDelayPrmPro设置一个连续标刻运动延时的阈值,运动控制卡在运动的过程中会自动的检测延时时间的大小,并与该阈值作比较,如果大于该阈值,则关闭激光,否则激光保持开启状态。

连续轨迹标刻延时太小

连续轨迹标刻延时太小

在处理运动延时的设置和激光开关延时的逻辑关系时,需要注意以下几点:

(1) 关延时一般要大于开延时的时间,即LaserOffDelay>LaserOnDelay

(2) 标刻延时与激光开延时的和要大于激光关延时,MD> LaserOffDelay- LaserOnDelay

通过设置振镜的运动延时,可以有效去除振镜运动的震荡等机械过程的影响。跳转延时有固定延时和比例延时两种模式,连续标刻延时有固定延时和变延时两种模式。

1.5 振镜的非线性校正

1.5.1 指令列表

振镜运动延时指令列表

指令 说明
GTN_ScanCorrectionOff 关闭振镜的校正功能。
GTN_ScanCorrectionOn 打开振镜的校正功能。
GTN_ScanSetCorrectionTable 将校正表下载到FPGA。

1.5.2 重点说明

振镜的扫描场的范围分为理论范围和实际范围,理论范围为-32768~+32767,而实际的扫描范围受到最大扫描角度和振镜头距离加工场的垂直距离等几个因素的影响与理论范围存在一定偏差,实际效果如图所示:

振镜扫描场

振镜扫描场

用户根据振镜的扫描角度以及振镜和工作面的垂直距离可以计算出理论扫描场大小和当量(单位:bits/mm),用于后续生成非线性校正表。实际扫描场的大小跟设置的当量、振镜的安装情况等有关。用户在设置扫描场的大小时一定要和所选用振镜的技术规格相对应,否则可能对振镜造成损坏。

典型的振镜扫描系统如下图所示,该系统有两个振镜镜片、一个激光器以及相关的光学元件构成,由图可以看出,振镜扫描系统建立的坐标系是一个非正交的坐标系,实际的扫描场会造成枕型失真。

典型的振镜扫系统

典型的振镜扫系统

由于振镜本身扫描造成的枕型失真如下图(a),另外由于F-Theta平面场镜的使用,会造成输出轮廓的桶型失真,如下图(b)所示,叠加以后输出的图形具有桶型和枕型双重失真,如下图(c)所示。

振镜输出失真

振镜输出失真

为了使输出不失真,激光振镜运动控制器需要实时的对每一个数据点进行校正,控制器通过查非线性校正表的方式进行校正。用户可以通过MotionStudio工具生成校正表,具体操作可参考《Motion Studio使用手册》中的“菜单功能->工具->振镜校正工具"下的详细操作说明,如图所示。

MotionStudio生成校正表的说明示意图

MotionStudio生成校正表的说明示意图

生成校正表之后,再调用指令GTN_ScanSetCorrectionTable将校正表下载到可以控制振镜的网络型模块。用户可通过调用指令GTN_ScanCorrectionOn使能振镜校正功能。同时,用户也可以通过调用指令GTN_ScanCorrectionOff来关闭校正功能。

1.6 振镜DMA功能

1.6.1 指令列表

振镜运动延时指令列表

指令 说明
GTN_ScanHsOn 打开振镜DMA。
GTN_ScanHsOff 关闭振镜DMA。

1.6.2 重点说明

(1) DMA功能为数据段批次压入运动控制器的功能,可以提高指令的传输速率。每次压入运动控制器的数据段数量由用户设定,默认为200段。开启DMA后,数据段会先被压入DMA 的缓存区中,当数据段数到达阈值,如200段后,系统会自动将缓存区中的指令下发到运动控制器。当用户压完所有的数据段之后,必须再调用GTN_CommandListDataEnd将DMA缓存区中的剩余数据段(剩余的段数未达到阈值)压入运动控制卡,直到指令返回值为0。

(2) 开启DMA功能后,指令GTN_GetCommandListSpace将查询的为PC端的剩余数据段空间。

(3) 插补和振镜同时开启DMA功能时,GTN_CrdHsOnGTN_ScanHsOn中的link参数应设为不同值。插补、振镜和位置比较输出等功能如果需要同时开启DMA功能时,需要选择不同的DMA缓存区序号。

例程

请参考振镜运动和DMA功能例程

1.7 振镜飞行叠加功能

由于振镜运动范围有限,导致加工效率很低。为了提高加工效率,通常需要将振镜和另外一个加工平面组合,配合在一起运动。通过指令GTN_SetScanPosSuperposeParameter,可以使能叠加模式,设置分别设置x和y轴叠加的运动轴,叠加计算源,以及计算系数。

例程

请参考飞行叠加功能例程