补偿功能¶
1.1 简介¶
由于实际机台安装存在误差、实际工件摆放位置相较理想位置存在旋转和偏移等种种原因,为了机台能实现达到理想的加工效果,可以使用补偿功能。
控制器支持的补偿功能有:反向间隙补偿、螺距误差补偿、交叉补偿、平面坐标系非正交补偿、坐标系同步补偿、二维位置补偿和3D补偿。
1.2 反向间隙补偿¶
1.2.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetBacklash | 设置反向间隙补偿的相关参数。 |
| GTN_GetBacklash | 读取反向间隙补偿的相关参数。 |
1.2.2 重点说明¶
反向间隙误差是指由于传动链中机械间隙的存在,执行部件在运动过程中从正向运动变为负向运动时,或者从负向运动变为正向运动时,执行部件的运动量与理论量存在误差,最后将反映为叠加至工件上的加工精度的误差。为了消除反向间隙误差,提高机器的加工精度和定位精度,该控制卡提供了反向间隙误差补偿功能。用户只要在初始化的时候调用相应的反向间隙误差补偿功能指令 GTN_SetBacklash设置了相应的参数,反向间隙误差补偿功能将会生效;也可以通过指令GTN_SetBacklash来关闭反向间隙误差补偿功能。
用户可以设置反向间隙误差补偿量的叠加速度,可以瞬间(一个控制周期内)叠加到输出量上,也可以选择以一定的速度叠加到输出量上。通过设置指令GTN_SetBacklash的changeValue参数来实现,当changeValue的值为0或者大于等于value的值时,则表示误差补偿量将瞬间叠加到输出量上,当为其他值时,表示误差补偿量的叠加速度,单位是:pulse/ms。
反向间隙误差补偿方向指的是,反向间隙误差补偿是沿正方向补偿还是沿负方向补偿。如果指令GTN_SetBacklash的参数dir参数设置为0时,则只有电机从正方向转为负方向运动时,反向间隙补偿量生效,当电机向正方向运动时,反向间隙补偿量为0。如果用户设置了补偿量的变化速度,则从正方向转为负方向时,补偿量以changeValue的速度叠加到value的值,当从负方向转为正方向时,补偿量从value以changeValue的速度减小为0。这种情况下,用户应该在回零之后,让工作台向正方向运动一定的距离,以保证正方向运动没有间隙存在。
当指令GTN_SetBacklash的参数dir参数设置为1时,则只有电机从负方向转为正方向运动时,反向间隙补偿量生效,当电机向负方向运动时,反向间隙补偿量为0。如果用户设置了补偿量的变化速度,则从负方向转为正方向时,补偿量以changeValue的速度叠加到value的值,当从正方向转为负方向时,补偿量从value以changeValue的速度减小为0。这种情况下,用户应该在回零之后,让工作台向负方向运动一定的距离,以保证负方向运动没有间隙存在。
反向间隙补偿量会直接叠加到运动控制卡的输出量上,当用户读取规划位置时,不会读到反向间隙补偿量。但是用户如果读取电机编码器的值,将会读到反向间隙的补偿量。
1.2.3 例程¶
例程
请参考
1.3 螺距误差补偿¶
1.3.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetLeadScrewComp | 设置螺距误差补偿表。 |
| GTN_EnableLeadScrewComp | 开启或关闭螺距误差补偿。 |
1.3.2 重点说明¶
螺距误差是指由于传动链中丝杆的制造误差或安装误差,导致电机旋转的角度和丝杆的直线位移成非线性关系,最终将导致实际和理论的直线位移存在误差。为了消除螺距误差,提高机器的加工精度,该控制卡提供了螺距误差补偿功能。
用户只要在初始化的时候调用相应的螺距误差补偿功能指令 GTN_SetLeadScrewComp设置相应的补偿表,然后调用指令GTN_EnableLeadScrewComp开启螺距误差补偿功能,也可以通过指令GTN_EnableLeadScrewComp来关闭螺距误差补偿功能。
螺距误差补偿表需要根据实际机器测量获取。
如下图所示,补偿起始位置为10000,补偿总长为40000,设置补偿节点数为5,因此补偿节点位置为{10000, 20000, 30000, 40000, 50000}。正向运动时从10000开始运动40000个脉冲,测量到达上述补偿节点位置时,规划位置和实际位置的差值(规划位置减去编码器位置)依次为10 → 20 → 30 → (-10) → (-20);负向运动时从50000开始运动40000个脉冲,测量达到上述补偿节点位置时,规划位置和实际位置的差值依次为(-10) → (-20) → 10 → 5 → 10。则{10, 20, 30, -10, -20}作为正向补偿值,{10, 5, 10, -20, -10}作为负向补偿值(注意负向补偿值的顺序)。
1.3.3 例程¶
例程
请参考
1.4 交叉补偿功能¶
1.4.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetLeadScrewCrossComp | 设置交叉误差补偿表。 |
| GTN_EnableLeadScrewCrossComp | 开启或关闭交叉误差补偿功能。 |
1.4.2 重点说明¶
交叉补偿用来消除其它轴的运动给当前轴带来的位置误差。
如图所示Y轴有变形,当从P1到P2沿着Y方向运动时,会在X方向上产生偏差。在这种情况下可以开启交叉补偿,根据Y轴的位置自动计算X轴的补偿量Δx,并将其叠加到X轴的规划位置上,确保X方向位置准确。
交叉补偿的使用方法和螺距误差补偿非常相似,不同之处在于螺距误差补偿是根据当前轴自己的规划位置计算补偿值,然后将补偿值叠加到当前轴规划位置上;交叉补偿是根据其它轴的规划位置计算补偿值,然后将补偿值叠加到当前轴规划位置上。
一个轴可以同时开启螺距误差补偿和交叉补偿。
用户在初始化的时候,调用相对应的交叉误差补偿功能指令GTN_SetLeadScrewCrossComp设置相应的补偿表以及补偿轴、关联轴,然后调用指令GTN_EnableLeadScrewCrossComp开启交叉误差补偿功能,也可以通过GTN_EnableLeadScrewCrossComp关闭交叉误差补偿。
1.4.3 例程¶
例程
请参考
1.5 平面坐标系非正交补偿功能¶
1.5.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetTransformOrthogonal | 设置平面坐标系非正交转换功能参数。 |
| GTN_GetTransformOrthogonal | 获取平面坐标系非正交转换功能参数。 |
| GTN_GetTransformOrthogonalPosition | 获取平面坐标系非正交转换后的各轴位置。 |
1.5.2 重点说明¶
当实际坐标轴不垂直的时候,可以使用非正交补偿进行校正。
如图所示,理想坐标系由X轴和Y轴组成,X轴和Y轴垂直。实际坐标系由X轴和Y’轴组成,X轴和Y’轴不垂直,夹角为θ。P点和P’的坐标值相同,由于实际的X轴和Y’轴不垂直,因此P点和P’并不重合。
开启非正交补偿补偿以后, 会根据X轴和Y’轴的夹角θ重新计算P’点坐标(x’, y’),确保P点和P’重合。
调用GTN_SetTransformOrthogonal设置非正交转换功能参数,设置需要开启非正交补偿的两个轴的索引,以及这两个轴的实际夹角(使用角度)。调用GTN_GetTransformOrthogonal获取非正交转换功能参数。调用指令GTN_GetTransformOrthogonalPosition获取非正交误差补偿坐标系中X,Y轴的位置。
1.5.3 例程¶
例程
请参考
1.6 坐标系同步补偿功能¶
1.6.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_PrfComp | 设置轴为补偿模式。 |
| GTN_PrfCompEnable | 使能轴补偿功能。 |
| GTN_BufPrfCompEnable | 缓存区使能轴补偿。 |
| GTN_BufPrfCompEnableEx | 前瞻下使能轴补偿功能。 |
| GTN_SetCoordSyncCompPrm | 设置坐标系同步补偿参数,即坐标系转换和映射映射关系等。 |
| GTN_GetCoordSyncCompPrm | 读取坐标系同步补偿参数。 |
| GTN_GetCoordSyncCompValue | 读取某一坐标点转换后的补偿点坐标值。 |
1.6.2 重点说明¶
在实际加工场景中,常常遇到双工位的机床构型。即在同一机台上同时加工两个相同的工件,但是两工件并非完全一致,而是存在偏移和旋转的关系。可以理解为有两个插补坐标系在运动加工相同的轨迹,由于两个插补坐标系之间存在偏移和旋转,导致不能使用同一套插补数据。在这种场景下,用户不希望针对每一个工件都重新生成一套插补数据,而是给定两个坐标系之间的平面关系,使用同一套插补数据,运动控制卡自动完成在第二套坐标系上的纠偏工作。坐标系同步补偿功能可以满足当前场景下用户的需求。
坐标系同步补偿功能把主加工位(即坐标系1)定义为参考坐标,从加工位(即坐标系2)为同步坐标系,坐标系1正常进行插补运动,坐标系2在执行与坐标系1相同的插补运动的同时还要根据偏差进行补偿,进而实现两个工件的同时正确加工。
补偿功能可用于以下的机床构型:
(1) 机台总共包含5(或者6)个轴:X1,Y1,X2,Y2,Z(或者Z1、Z2)。X1Y1为主加工位,带动点胶头1加工第一个工件;X2安装在X1上,Y2安装在Y1上,在X1Y1运动基础上微动X2Y2带动点胶头2加工第二个工件。
(2) 机台总共包含5(或者6)个轴:X1,Y1,X2,Y2,Z(或者Z1、Z2)。X1Y1为主加工位,带动点胶头1加工第一个工件;X2安装在X1上,Y2为独立轴,在X1Y1运动基础上微动X2Y2带动点胶头2加工第二个工件。
(3) 机台总共包含5(或者6)个轴:X1,Y1,X2,Y2,Z(或者Z1、Z2)。X1Y1为主加工位,带动点胶头1加工第一个工件;X2为独立轴,Y2安装在Y1上,在X1Y1运动基础上微动X2Y2带动点胶头2加工第二个工件。
叠加补偿功能适用机床构型例程:
机台总共有6个轴,2个工位。x1、y1、z1(坐标系1)为参考工件坐标系,x2、y2、z2(坐标系2)为同步工件坐标系,其中x1、y1、z1、x2、z2均为独立轴,y2为非独立轴,y1与y2的运动叠加起来才是真实的同步工件坐标系(坐标系2)y轴。
如果使用同步坐标系补偿功能,x2轴的使能类型为叠加补偿模式或者叠加定位补偿模式,y2轴的使能类型为对应的补偿模式或者定位补偿模式。
1.6.3 例程¶
例程
请参考
1.7 二维位置补偿功能¶
1.7.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetCompensate2DTable | 设置二维补偿表及数据。 |
| GTN_GetCompensate2DTable | 读取二维补偿表参数。 |
| GTN_SetCompensate2DtableRotationAngle | 设置二维补偿表旋转参数。 |
| GTN_GetCompensate2DtableRotationAngle | 读取二维补偿表旋转参数。 |
| GTN_SetCompensate2D | 设置二维补偿参数。 |
| GTN_GetCompensate2D | 读取二维补偿参数。 |
| GTN_GetCompensate2DValue | 读取补偿值。 |
1.7.2 重点说明¶
二维补偿适用于这样一种场景:X轴、Y轴执行插补对平面进行检测,当遇到凸起或凹陷区域,需要适当调整Z轴的高度以适应表面的凹凸不平(如图所示)。二维补偿功能正是为上述场景或类似工艺场合开发的补偿校正功能。用户需要事先划出平面上的需要补偿的区域,并给出补偿区域内若干X、Y位置上Z方向的补偿值,控制卡自动通过适当的算法计算出每个X、Y位置的Z方向补偿值,并在运动过程中自动给予补偿。
如图所示,灰色区域为平面运动区域,蓝色区域为需要进行Z方向校正的补偿区域,PosBegin为补偿区域的起始点,给定该补偿区域Z方向的4个补偿值(即当运动到PosBegin的位置Z方向需要补偿运动Z1,运动到Pos2位置Z方向需要补偿Z2……),把这些已知的补偿值设置到控制卡,则启动运动后,在补偿区域内到达某个位置则在Z方向补偿相应的值。
二维补偿不仅可以根据X轴和Y轴位置补偿Z轴位置,也可以根据X轴和Y轴位置补偿X轴和Y轴自己的位置,用来消除在不同位置时X轴和Y轴的位置误差。
1.7.3 例程¶
例程
请参考
1.8 三维位置补偿功能¶
1.8.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetCompensate3D | 将三维补偿表关联到轴,或者取消轴上关联的三维补偿表。 |
| GTN_GetCompensate3D | 读取指定轴上关联的三维补偿参数。 |
| GTN_SetCompensate3DTable | 设置三维补偿表的补偿范围和补偿点。 |
| GTN_GetCompensate3DTable | 读取三维补偿表的补偿范围和补偿点。 |
| GTN_GetCompensate3DValue | 读取指定轴的当前三维补偿值。 |
1.8.2 重点说明¶
1.8.2.1 三维补偿的描述方法¶
如图所示,立方体的8个顶点是8个补偿点。设定好这8个补偿点的补偿值以后,运动控制器能够自动计算立方体内部任意位置的补偿值,立方体外部位置的补偿值为0。
多个立方体组成了整个补偿区间。下图展示了一个由12个立方体组成的2×3×2的补偿区间。
运动控制器支持3套三维补偿表。每个补偿表最大支持20000个补偿点。 补偿表需要指定X、Y、Z方向的参考轴,以及补偿值的叠加轴。
1.8.2.2 三维补偿表使用说明¶
1. 调用GTN_SetCompensate3DTable指令下载补偿表。
2. 调用GTN_SetCompensate3D指令将三维补偿表关联到轴,或者取消轴上关联的三维补偿表。 只有在轴使能以后并且处于静止状态时才能关联三维补偿表。不允许多个补偿表叠加到同一个轴。必须首先调用GTN_SetCompensate3DTable下载三维补偿表,然后才能将其关联到轴。三维补偿表关联到轴以后不能修改补偿表和补偿点,取消关联后才能够修改。
1.8.3 例程¶
例程
请参考
1.9 动态补偿功能¶
1.9.1 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_SetDynamicCompensateParameter | 设置动态补偿参数。 |
| GTN_GetDynamicCompensateParameter | 读取动态补偿参数。 |
| GTN_GetDynamicCompensateStatus | 读取动态补偿状态。 |
| GTN_SetDynamicCompensatePoint | 设置动态补偿点的补偿值和插值区间。 |
1.9.2 重点说明¶
调用GTN_SetDynamicCompensatePoint指令发送补偿点,补偿点包含补偿值和插值区间。
如果走完插值区间以后没有收到新的补偿点,保持当前补偿值不变。
在插值区间内收到新的补偿点,以当前位置为起点,重新开始一个新的插值区间。
如图所示,点1为第1个插值区间的起点,走到点2时仍然在第1个插值区间内,此时收到新的补偿点,以点2作为第2个插值区间的起点,第1个插值区间剩余部分作废。
走到点3时第2个插值区间完成,到达设定补偿值。此时没有收到新的补偿点,保持当前补偿值不变。
走到点4时收到新的补偿点,以点4作为第3个插值区间的起点。
1.9.3 例程¶
例程
请参考