首页 / 专利分类库 / 控制;调节 / 数控系统中基于切线矢量的阿基米德螺线实时插补方法及设备

数控系统中基于切线矢量的阿基米德螺线实时插补方法及设备

申请号 CN202211609168.3 申请日 2022-12-14 公开(公告)号 CN116048004B 公开(公告)日 2024-04-19
申请人 天津理工大学; 发明人 刘清建; 刘硕; 张旭; 刘志刚; 李政; 黄刚鹏; 曾鸿涛; 管增翰; 董珂同; 杜龙阳; 朱柏旭;
摘要 数控系统中基于切线矢量的阿基米德螺线实时插补方法及设备,涉及数控系统中实时插补方法及设备。为了解决目前针对阿基米德螺线的实时插补直接采取弦长拟合方式导致的结果存在很大 弦高 误差的问题,进而导致针对阿基米德螺线存在非常大的误差,降低了加工 精度 。本 发明 根据需要插补完成的阿基米德螺线段划分最长脉冲轴,对待插补完成的阿基米德螺线段进行插补区域的划分,然后比较x、y方向的脉冲余数,判断是哪个轴的脉冲余数绝对值大于0.5,进行脉冲处理,之后求解理论插补点的 角 度值对应的阿基米德螺线点的切线矢量;将理论插补点的切线矢量分量与各自轴的脉冲当量相乘,判断最长脉冲轴并发送脉冲。
权利要求

1.数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,包括以下步骤:
S1、获取新一段插补阿基米德螺线弧信息,并确定插补阿基米德螺线弧信息;先求解出阿基米德螺线上点(xθ,yθ)的切线矢量(dxθ,dyθ)和对应的向心矢量(normal_dxθ,normal_dyθ);
然后,根据需要插补完成的阿基米德螺线段划分最长脉冲轴,对待插补完成的阿基米德螺线段进行插补区域的划分;所述最长脉冲轴的意思是在一个插补区域内发送脉冲个数最多的轴;
S2:比较x、y方向的脉冲余数,所述的脉冲余数是每次实际发送脉冲到达的位置与理论插补点之间的差值的加和,判断是哪个轴的脉冲余数绝对值大于0.5,进行脉冲处理;
当没有一个方向上的余数的绝对值超过0.5,进行S3;
S3:求解理论插补点的度值对应的阿基米德螺线点的切线矢量;
S4、将理论插补点的切线矢量分量与各自轴的脉冲当量相乘,判断哪个轴此刻为最长脉冲轴,决定发送脉冲;并求出下一个点的发送脉冲的轴坐标,再根据近似处理法求出另一个轴的坐标,而后判断另一个轴的脉冲余数绝对值是否大于0.5,若另一个轴的脉冲余数绝对值是否大于0.5则进行脉冲处理;
S5:重复S2到S4,直到判断完成本段阿基米德螺线插补。
2.根据权利要求1所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,S1中对待插补完成的阿基米德螺线段进行插补区域的划分的过程包括以下步骤:
S10、基于阿基米德螺线段所在坐标系划分为A‑‑>B,B‑‑>C,C‑‑>D,D‑‑>A四个区域,其中OA、OB、OC、OC为阿基米德螺线段所在坐标系第一象限至第四象限中的四条射线,即分割角界线;O为阿基米德螺线段所在坐标系原点;
区分角度求解公式如下:
其中,b为阿基米德螺旋线系数,表示每旋转1度时极径的增加量;θ为极角;a为当θ=0°时的极径;pulunitx为x轴的脉冲当量,pulunity为y轴的脉冲当量,单位为pulse/mm,正负符号是根据所处的象限来决定,当象限在1、3范围时,则为正,当象限在2、4范围内时,则为负号;
根据区分角度求解公式,利用迭代方法,并通过不同象限角度范围不同的约束条件,给定初值,进行迭代求解处理分割角θ分割角,将四个象限中对应的分割角分别记为θ1分割角、θ2分割角、θ3分割角、θ4分割角;
在AOD、BOC区间内的阿基米德螺线段的最长脉冲轴是Y轴;在AOB、COD区间内的阿基米德螺线段的最长脉冲轴是X轴;
S11、基于分割角确定将需要插补的阿基米德螺线划分区域;
每个区域的最长脉冲轴的脉冲数相加得到要插补的阿基米德螺线的总脉冲数,也是所需要进行插补计算所需的迭代循环次数,即此条阿基米德螺线的分割数;
若是阿基米德螺线处于AOB范围内,设阿基米德螺线上的起点和终点分别为S点到E点,则只需要求解从阿基米德螺线的S点到E点的Y方向所需完成的脉冲总数即为阿基米德螺线的分割数;
若是阿基米德螺线处于BOC范围内,则只需要求解从阿基米德螺线的S点到E点的X方向所需完成的脉冲总数即为阿基米德螺线的分割数;
若是阿基米德螺线处于AOB和BOC范围内,在AOB范围最长脉冲轴是X轴,在BOC范围最长脉冲轴为Y轴,则需要求解从阿基米德螺线的S点到OB分割角对应的点的Y方向所需完成的脉冲总数再加上OB分割角对应的点到E点的X方向所需完成的脉冲总数才为阿基米德螺线总的分割数。
3.根据权利要求2所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,所述分割角的具体求解过程包括以下步骤:
针对第一象限的分割角:
S101、首先是根据 求解出来分割
角对应的向心矢量的角度θ_normal=atan2(pulunitx,pulunity),atan2是求解角度的函数;
S102、以θ_normal为极角即θ=θ_normal,求解此时对应的阿基米德螺线的极径r(θ)=a+b×θ;
S103、求解偏转角度值Δθ=arctan2(b,r(θ));然后得到此时极角θ所对应的向心矢量角度θ_n=θ‑Δθ;
S104、计算分割角对应的向心矢量角度θ_normal与求解出来的极角θ所对应的向心矢量角度θ_n之间的差值error=θ_normal‑θ_n;而后令θ=θ+error;
S105、将此时的θ_n作为极角即θ=θ_n,重复S102至S104步骤,直至求解出来的error的值趋向于0,即求解出来了第一象限的分割角θ1分割角;
若是第二、三、四象限,各分割角对应的向心矢量的角度
θ_normal_2=atan2(pulunitx,‑pulunity)
θ_normal_3=atan2(‑pulunitx,‑pulunity)
θ_normal_4=atan2(‑pulunitx,pulunity)
θ_normal_2、θ_normal_3、θ_normal_4分别表示第二、三、四象限中的θ_normal;对于负值角度即3、4象限的角度进行如下处理:
θ_normal_3=θ_normal_3+2×π
θ_normal_4=θ_normal_4+2×π;
通过上述求解得到对应的区分矢量OA、OB、OC、OD的角度分别为:θ1分割角、θ2分割角、θ3分割角、θ4分割角。
4.根据权利要求3所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,所述分割数的求解过程包括以下步骤:
设θn为插补阿基米德螺线终点的向心矢量与X轴正半轴的夹角,即:
首先判断在插补起点与终点之间是否有最长脉冲轴的改变,即判断θ1分隔角、θ2分隔角、θ3分隔角、θ4分隔角这四个角度是否至少有任意一个存在于θ1‑θn之中;θ1表示插补阿基米德螺线起点的向心矢量与X轴正半轴的夹角;
(一)若没有,则直接计算得到x和y两个方向上的脉冲数:
其中,x1、y1为起点的坐标值,xn、yn为终点的坐标值;
当|xn‑x1|和|yn‑y1|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分;
最后求得总脉冲数为n总=max{nx,ny},也为阿基米德螺线的分割数;
(二)若这四个角度至少有任意一个处在θ1‑θn之中,则设此角度为α,则此角度数值必然是四个角度之一,即α=[θ1分隔角,θ2分隔角,θ3分隔角,θ4分隔角],则需要进行分段考虑并计算;
假设只有一个分割角在θ1‑θn之中,即插补段在P(xα,yα)点被分成两段;根据方程式:
xα=(a+b×α)×cos(α)+xo
yα=(a+b×α)×sin(α)+yo
其中阿基米德螺线的圆心为O(x0,y0);
先计算S点到P点之间的脉冲数,首先
其中,当|xα‑x1|和|yα‑y1|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分;求得第一段脉冲数为n1=max{nx1,ny1};
而后计算P点到E点的脉冲数,首先
其中,当|xα‑xn|和|yα‑yn|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分;求得第二段脉冲数为n2=max{nx2,ny2};
由此得出总脉冲数为n总=n1+n2;即分割数;
(三)若有两个以上分割角在θ1‑θn之中,即插补段被分成三段以上,按照上述方式进行处理,将多个计算分割角之间的脉冲数进行加总脉冲数为n总;即分割数。
5.根据权利要求4所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,每当步骤S2注意处理新的阿基米德螺线时,其x、y方向的脉冲余数初值是0.0。
6.根据权利要求5所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,步骤S2所述判断是哪个轴的脉冲余数绝对值大于0.5,进行脉冲处理的过程包括以下步骤:
设x方向脉冲余数为repulse_x,y方向脉冲余数为repulse_y,并判断这两个方向的脉冲余数是否超出范围值,即绝对值大于0.5;
当|repulse_x|>0.5,且repulse_x>0,则令repulse_x‑1,同时x轴发送一个脉冲;同时总脉冲数减一;
当|repulse_x|>0.5,且repulse_x<0,则令repulse_x+1,同时x轴发送一个脉冲;同时总脉冲数减一;
当|repulse_y|>0.5,且repulse_y>0,则令repulse_y‑1,同时y轴发送一个脉冲;同时总脉冲数减一;
当|repulse_y|>0.5,且repulse_y<0,则令repulse_y+1,同时y轴发送一个脉冲;同时总脉冲数减一。
7.根据权利要求6所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,S3所述求解理论插补点的角度值对应的阿基米德螺线点的切线矢量的过程包括以下步骤:
基于插补方向将切线分为切线顺时针旋转和切线逆时针旋转,并计算理论插补点的切向矢量:
dx=‑(a+b×θ)×sin(θ)+b×θ
dy=(a+b×θ)×cos(θ)+b×θ
dz=0.0
然后求解出来理论插补点的切线矢量:tangent(m,n,k);
dx=‑(a+b×θ)×sin(θ)+b×θ=m
即:dy=(a+b×θ)×cos(θ)+b×θ=n
dz=0.0=k。
8.根据权利要求7所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,S4的具体过程包括以下步骤:
判断哪个是最长脉冲轴,则谁发送一个脉冲,设numx、numy分别为切线矢量与各自轴的脉冲当量的数值乘积;
numx=m×pulunitx
numy=n×pulunity
判断|numx|和|numy|的大小,分为两种情况进行说明:
(A)如果|numx|>|numy|,则x方向发送一个脉冲;同时总脉冲数减一;
将下一个理论插补点的理论插点补坐标记为U;首先确定一个求解插补点Q,然后基于求解插补点Q再最终确定U;
若numx>0,则
x2=x1+1/pulunitx
若numx≤0,则
x2=x1‑1/pulunitx
首先根据x2坐标求解出来对应的临时y2坐标值,即y2_temp;
若numy>0,则
y2_temp=y1+abs(numy/numx)/pulunity;
若numy≤0,则
y2_temp=y1‑abs(numy/numx)/pulunity;
其中abs(·)为用于求数据绝对值的函数;
将插补点Q的坐标设为:pt_next,其x、y点坐标记为:pt_next.x,pt_next.y,首先令:
pt_next.x=x2,pt_next.y=y2_temp;同时,令当前初始点S坐标为:pt,其x、y点坐标记为:
pt.x,pt.y;然后进行如下处理:
第一步、求解出来要求解的插补点的旋转角度Δθ:
其中len_pt是本次计算的插补点
和当前点的距离;
根据阿基米德螺线弧长求解出来当前点的近似曲率半径radius的值即
进而得到Δθ=len_pt/radius;
若是顺时针旋转,则需要进行一个负号赋值:Δθ=0.0‑Δθ;
第二步、求解插补点所对应的阿基米德螺线的角度值θ_next:
设θ为当前点所对应的阿基米德螺线的角度值,则插补点所对应的阿基米德螺线的角度值θ_next=θ+Δθ;
第三步、设U为真正的理论插补点,根据下面公式所示求解出来此角度对应的阿基米德螺线的半径r(θ_next)值:
r(θ_next)=a+b×θ=a+b×θ_next;
第四步、求解出来此时真正的阿基米德螺线的理论插补点U坐标:
设Δ_x,Δ_y为插补点到阿基米德螺线O(x0,y0)的x、y轴距离值;
Δ_x=pt_next.x‑xo
Δ_y=pt_next.y‑yo
求解出来插补点到阿基米德螺线圆心的距离len_Δ_xy:
进而得到真正的理论插补点U坐标:
pt_next.x=Δ_x*r_pt_next/len_Δ_xy+xo
pt_next.y=Δ_y*r_pt_next/len_Δ_xy+yo
此时y方向增加了脉冲余数(y1‑y)*pulunity,y方向总脉冲余数变为repulse_y+(y1‑y)*pulunity;
此时重新判断y方向总脉冲余数是否超出范围值,即绝对值大于0.5;
当|repulse_y|>0.5,且repulse_y>0,则令repulse_y‑1,同时y轴发送一个脉冲;同时总脉冲数减一;
当|repulse_y|>0.5,且repulse_y≤0,则令repulse_y+1,同时y轴发送一个脉冲;同时总脉冲数减一;
(B)若|numx|<=|numy|,则y方向发送一个脉冲;同时总脉冲数减一;
numx|<=|numy|确定理论插补点U并发送脉冲的过程中,x轴和y轴的处理过程与|numx|>|numy|情况中的y轴和x轴的处理方式相同。
9.根据权利要求8所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法,其特征在于,S5中判断完成本段阿基米德螺线插补的过程如下:
在进行阿基米德螺线插补的过程中,从第二次插补开始,将当前点坐标位置与终点坐标位置进行比较;如果当前点坐标位置与终点坐标位置之间的误差小于0.5个脉冲数,则判断为本段阿基米德螺线插补结束。
10.一种数控系统中基于切线矢量的阿基米德螺线实时插补设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至9之一所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法。

说明书全文

数控系统中基于切线矢量的阿基米德螺线实时插补方法及

设备

技术领域

[0001] 本发明属于机械加工技术领域,具体涉及数控系统中实时插补方法及设备。

背景技术

[0002] 在机械加工中,为了实现加工需要通过数控系统对离散的直线或者圆弧段来进行曲线的速度规划和插补。数控系统对于曲线的速度规划和插补方案中,直线和圆弧是构成工件轮廓的基本线条,因此大多数数控装置都只具有直线和圆弧的插补功能。但在机械加工中,还经常会遇到诸如螺线(Spira1)、渐开线(involL1te)、摆线(trochoid)等非圆曲线轮廓,加工这些曲线轮廓以往一般只能用直线和圆弧来拟合,此时传统的插补方式不仅精度较差,而且程度复杂,效率低,给用户带来诸多不便。
[0003] 现代计算机数控(CNC)装置为插补算法软件实现提供了极为有利的条件,使得直接进行非圆曲线插补成为可能。但是即使是现代计算机数控装置,对于阿基米德螺线的实时插补算法基本没有很好的解决方法,目前都是直接采取弦长拟合的方式,导致的结果就是造成了很大弦高误差,从而使得这类曲线的加工存在非常大的误差,进而导致了加工精度比较低。

发明内容

[0004] 本发明为了解决目前针对阿基米德螺线的实时插补直接采取弦长拟合方式导致的结果存在很大弦高误差的问题,进而导致针对阿基米德螺线存在非常大的误差,降低了加工精度。
[0005] 数控系统中基于切线矢量的阿基米德螺线实时插补方法,包括以下步骤:
[0006] S1、获取新一段插补阿基米德螺线弧信息,并确定插补阿基米德螺线弧信息;先求解出阿基米德螺线上点(xθ,yθ)的切线矢量(dxθ,dyθ)和对应的向心矢量(normal_xθ,normal_yθ);
[0007] 然后,根据需要插补完成的阿基米德螺线段划分最长脉冲轴,对待插补完成的阿基米德螺线段进行插补区域的划分;所述最长脉冲轴的意思是在一个插补区域内发送脉冲个数最多的轴;
[0008] S2:比较x、y方向的脉冲余数,所述的脉冲余数是每次实际发送脉冲到达的位置与理论插补点之间的差值的加和,判断是哪个轴的脉冲余数绝对值大于0.5,进行脉冲处理;
[0009] 当没有一个方向上的余数的绝对值超过0.5,进行S3;
[0010] S3:求解理论插补点的度值对应的阿基米德螺线点的切线矢量;
[0011] S4、将理论插补点的切线矢量分量与各自轴的脉冲当量相乘,判断哪个轴此刻为最长脉冲轴,决定发送脉冲;并求出下一个点的发送脉冲的轴坐标,再根据近似处理法求出另一个轴的坐标,而后判断另一个轴的脉冲余数绝对值是否大于0.5,若另一个轴的脉冲余数绝对值是否大于0.5则进行脉冲处理;
[0012] S5:重复S2到S4,直到判断完成本段阿基米德螺线插补。
[0013] 进一步地,S1中对待插补完成的阿基米德螺线段进行插补区域的划分的过程包括以下步骤:
[0014] S10、基于阿基米德螺线段所在坐标系划分为A‑‑>B,B‑‑>C,C‑‑>D,D‑‑>A四个区域,其中OA、OB、OC、OC为阿基米德螺线段所在坐标系第一象限至第四象限中的四条射线,即分割角界线;O为阿基米德螺线段所在坐标系原点;
[0015] 区分角度求解公式如下:
[0016]
[0017] 其中,b为阿基米德螺旋线系数,表示每旋转1度时极径的增加量;θ为极角;a为当θ=0°时的极径;pulunitx为x轴的脉冲当量,pulunity为y轴的脉冲当量,单位为pulse/mm,正负符号是根据所处的象限来决定,当象限在1、3范围时,则为正,当象限在2、4范围内时,则为负号;
[0018] 根据区分角度求解公式,利用迭代方法,并通过不同象限角度范围不同的约束条件,给定初值,进行迭代求解处理分割角θ分割角,将四个象限中对应的分割角分别记为θ1分割角、θ2分割角、θ3分割角、θ4分割角;
[0019] 在AOD、BOC区间内的阿基米德螺线段的最长脉冲轴是Y轴;在AOB、COD区间内的阿基米德螺线段的最长脉冲轴是X轴;
[0020] S11、基于分割角确定将需要插补的阿基米德螺线划分区域;
[0021] 每个区域的最长脉冲轴的脉冲数相加得到要插补的阿基米德螺线的总脉冲数,也是所需要进行插补计算所需的迭代循环次数,即此条阿基米德螺线的分割数;
[0022] 若是阿基米德螺线处于AOB范围内,设阿基米德螺线上的起点和终点分别为S点到E点,则只需要求解从阿基米德螺线的S点到E点的Y方向所需完成的脉冲总数即为阿基米德螺线的分割数;
[0023] 若是阿基米德螺线处于BOC范围内,则只需要求解从阿基米德螺线的S点到E点的X方向所需完成的脉冲总数即为阿基米德螺线的分割数;
[0024] 若是阿基米德螺线处于AOB和BOC范围内,在AOB范围最长脉冲轴是X轴,在BOC范围最长脉冲轴为Y轴,则需要求解从阿基米德螺线的S点到OB分割角对应的点的Y方向所需完成的脉冲总数再加上OB分割角对应的点到E点的X方向所需完成的脉冲总数才为阿基米德螺线总的分割数。
[0025] 进一步地,所述分割角的具体求解过程包括以下步骤:
[0026] 针对第一象限的分割角:
[0027] S101、首先是根据 求解出来分割角对应的向心矢量的角度θ_normal=atan2(pulunitx,pulunity),atan2是求解角度的函数;
[0028] S102、以θ_normal为极角即θ=θ_normal,求解此时对应的阿基米德螺线的极径r(θ)=a+b×θ;
[0029] S103、求解偏转角度值Δθ=arctan2(b,r(θ));然后得到此时极角θ所对应的向心矢量角度θ_n=θ‑Δθ;
[0030] S104、计算分割角对应的向心矢量角度θ_normal与求解出来的极角θ所对应的向心矢量角度θ_n之间的差值error=θ_normal‑θ_n;而后令θ=θ+error;
[0031] S105、将此时的θ_n作为极角即θ=θ_n,重复S102至S104步骤,直至求解出来的error的值趋向于0,即求解出来了第一象限的分割角θ1分割角;
[0032] 若是第二、三、四象限,各分割角对应的向心矢量的角度
[0033] θ_normal_2=atan2(pulunitx,‑pulunity)
[0034] θ_normal_3=atan2(‑pulunitx,‑pulunity)
[0035] θ_normal_4=atan2(‑pulunitx,pulunity)
[0036] θ_normal_2、θ_normal_3、θ_normal_4分别表示第二、三、四象限中的θ_normal;对于负值角度即3、4象限的角度进行如下处理:
[0037] θ_normal_3=θ_normal_3+2×π
[0038] θ_normal_4=θ_normal_4+2×π;
[0039] 通过上述求解得到对应的区分矢量OA、OB、OC、OD的角度分别为:θ1分割角、θ2分割角、θ3分割角、θ4分割角。
[0040] 进一步地,所述分割数的求解过程包括以下步骤:
[0041] 设θn为插补阿基米德螺线终点的向心矢量与X轴正半轴的夹角,即:
[0042]
[0043] 首先判断在插补起点与终点之间是否有最长脉冲轴的改变,即判断θ1分隔角、θ2分隔角、θ3分隔角、θ4分隔角这四个角度是否至少有任意一个存在于θ1‑θn之中;θ1表示插补阿基米德螺线起点的向心矢量与X轴正半轴的夹角;
[0044] (一)若没有,则直接计算得到x和y两个方向上的脉冲数:
[0045]
[0046] 其中,x1、y1为起点的坐标值,xn、yn为终点的坐标值;
[0047] 当|xn‑x1|和|yn‑y1|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分;
[0048] 最后求得总脉冲数为n总=max{nx,ny},也为阿基米德螺线的分割数;
[0049] (二)若这四个角度至少有任意一个处在θ1‑θn之中,则设此角度为α,则此角度数值必然是四个角度之一,即α=[θ1分隔角,θ2分隔角,θ3分隔角,θ4分隔角],则需要进行分段考虑并计算;
[0050] 假设只有一个分割角在θ1‑θn之中,即插补段在P(xα,yα)点被分成两段;根据方程式:
[0051] xα=(a+b×α)×cos(α)+xo
[0052] yα=(a+b×α)×sin(α)+yo
[0053] 其中阿基米德螺线的圆心为O(x0,y0);
[0054] 先计算S点到P点之间的脉冲数,首先
[0055]
[0056] 其中,当|xα‑x1|和|yα‑y1|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分;求得第一段脉冲数为n1=max{nx1,ny1};
[0057] 而后计算P点到E点的脉冲数,首先
[0058]
[0059] 其中,当|xα‑xn|和|yα‑yn|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分;求得第二段脉冲数为n2=max{nx2,ny2};
[0060] 由此得出总脉冲数为n总=n1+n2;即分割数;
[0061] (三)若有两个以上分割角在θ1‑θn之中,即插补段被分成三段以上,按照上述方式进行处理,将多个计算分割角之间的脉冲数进行加总脉冲数为n总;即分割数。
[0062] 进一步地,每当步骤S2注意处理新的阿基米德螺线时,其x、y方向的脉冲余数初值是0.0。
[0063] 进一步地,步骤S2所述判断是哪个轴的脉冲余数绝对值大于0.5,进行脉冲处理的过程包括以下步骤:
[0064] 设x方向脉冲余数为repulse_x,y方向脉冲余数为repulse_y,并判断这两个方向的脉冲余数是否超出范围值,即绝对值大于0.5;
[0065] 当|repulse_x|>0.5,且repulse_x>0,则令repulse_x‑1,同时x轴发送一个脉冲;同时总脉冲数减一;
[0066] 当|repulse_x|>0.5,且repulse_x<0,则令repulse_x+1,同时x轴发送一个脉冲;同时总脉冲数减一;
[0067] 当|repulse_y|>0.5,且repulse_y>0,则令repulse_y‑1,同时y轴发送一个脉冲;同时总脉冲数减一;
[0068] 当|repulse_y|>0.5,且repulse_y<0,则令repulse_y+1,同时y轴发送一个脉冲;同时总脉冲数减一。
[0069] 进一步地,S3所述求解理论插补点的角度值对应的阿基米德螺线点的切线矢量的过程包括以下步骤:
[0070] 基于插补方向将切线分为切线顺时针旋转和切线逆时针旋转,并计算理论插补点的切向矢量:
[0071] dx=‑(a+b×θ)×sin(θ)+b×θ
[0072] dy=(a+b×θ)×cos(θ)+b×θ
[0073] dz=0.0
[0074] 然后求解出来理论插补点的切线矢量:tangent(m,n,k);
[0075] dx=‑(a+b×θ)×sin(θ)+b×θ=m
[0076] 即:dy=(a+b×θ)×cos(θ)+b×θ=n。
[0077] dz=0.0=k
[0078] 进一步地,S4的具体过程包括以下步骤:
[0079] 判断哪个是最长脉冲轴,则谁发送一个脉冲,设numx、numy分别为切线矢量与各自轴的脉冲当量的数值乘积;
[0080] numx=m×pulunitx
[0081] numy=n×pulunity
[0082] 判断|numx|和|numy|的大小,分为两种情况进行说明:
[0083] (A)如果|numx|>|numy|,则x方向发送一个脉冲;同时总脉冲数减一;
[0084] 将下一个理论插补点的理论插点补坐标记为U;首先确定一个求解插补点Q,然后基于求解插补点Q再最终确定U;
[0085] 若numx>0,则
[0086] x2=x1+1/pulunitx
[0087] 若numx≤0,则
[0088] x2=x1‑1/pulunitx
[0089] 首先根据x2坐标求解出来对应的临时y2坐标值,即y2_temp;
[0090] 若numy>0,则
[0091] y2_temp=y1+abs(numy/numx)/pulunity;
[0092] 若numy≤0,则
[0093] y2_temp=y1‑abs(numy/numx)/pulunity;
[0094] 其中abs(·)为用于求数据绝对值的函数;
[0095] 将插补点Q的坐标设为:pt_next,其x、y点坐标记为:pt_next.x,pt_next.y,首先令:pt_next.x=x2,pt_next.y=y2_temp;同时,令当前初始点S坐标为:pt,其x、y点坐标记为:pt.x,pt.y;然后进行如下处理:
[0096] 第一步、求解出来要求解的插补点的旋转角度Δθ:
[0097] 其中len_pt是本次计算的插补点和当前点的距离;
[0098] 根据阿基米德螺线弧长求解出来当前点的近似曲率半径radius的值即
[0099] 进而得到Δθ=len_pt/radius;
[0100] 若是顺时针旋转,则需要进行一个负号赋值:Δθ=0.0‑Δθ;
[0101] 第二步、求解插补点所对应的阿基米德螺线的角度值θ_next:
[0102] 设θ为当前点所对应的阿基米德螺线的角度值,则插补点所对应的阿基米德螺线的角度值θ_next=θ+Δθ;
[0103] 第三步、设U为真正的理论插补点,根据下面公式所示求解出来此角度对应的阿基米德螺线的半径r(θ_next)值:
[0104] r(θ_next)=a+b×θ=a+b×θ_next;
[0105] 第四步、求解出来此时真正的阿基米德螺线的理论插补点U坐标:
[0106] 设Δ_x,Δ_y为插补点到阿基米德螺线O(x0,y0)的x、y轴距离值;
[0107] Δ_x=pt_next.x‑xo
[0108] Δ_y=pt_next.y‑yo
[0109] 求解出来插补点到阿基米德螺线圆心的距离len_Δ_xy:
[0110]
[0111] 进而得到真正的理论插补点U坐标:
[0112] pt_next.x=Δ_x*r_pt_next/len_Δ_xy+xo
[0113] pt_next.y=Δ_y*r_pt_next/len_Δ_xy+yo
[0114] 此时y方向增加了脉冲余数(y1‑y)*pulunity,y方向总脉冲余数变为repulse_y+(y1‑y)*pulunity;
[0115] 此时重新判断y方向总脉冲余数是否超出范围值,即绝对值大于0.5;
[0116] 当|repulse_y|>0.5,且repulse_y>0,则令repulse_y‑1,同时y轴发送一个脉冲;同时总脉冲数减一;
[0117] 当|repulse_y|>0.5,且repulse_y≤0,则令repulse_y+1,同时y轴发送一个脉冲;同时总脉冲数减一;
[0118] (B)若|numx|<=|numy|,则y方向发送一个脉冲;同时总脉冲数减一;
[0119] numx|<=|numy|确定理论插补点U并发送脉冲的过程中,x轴和y轴的处理过程与|numx|>|numy|情况中的y轴和x轴的处理方式相同。
[0120] 进一步地,S5中判断完成本段阿基米德螺线插补的过程如下:
[0121] 在进行阿基米德螺线插补的过程中,从第二次插补开始,将当前点坐标位置与终点坐标位置进行比较;如果当前点坐标位置与终点坐标位置之间的误差小于0.5个脉冲数,则判断为本段阿基米德螺线插补结束。
[0122] 一种数控系统中基于切线矢量的阿基米德螺线实时插补设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法。
[0123] 有益效果:
[0124] 利用本发明在数控系统中进行基于切线矢量的阿基米德螺线插补时,可以准确地实现基于切线矢量的阿基米德螺线的实时插补,能够有效的解决对直接采取弦长拟合方式导致的结果存在很大弦高误差的问题。利用本发明吗可有有效的提高针对基于切线矢量的阿基米德螺线的加工精度。附图说明
[0125] 图1为求解出来对应的阿基米德螺线上点的切线矢量的示意图。
[0126] 图2为根据需要插补完成的阿基米德螺线段划分最长脉冲轴时的分割角示意图。
[0127] 图3为阿基米德螺线处于AOB范围内的示意图。
[0128] 图4为阿基米德螺线处于BOC范围内的示意图。
[0129] 图5为阿基米德螺线处于AOB和BOC范围内的示意图。
[0130] 图6为切线顺时针旋转示意图。
[0131] 图7为切线逆时针旋转示意图。
[0132] 图8为求解求解插补点Q的示意图。
[0133] 图9为求解实际求解插补点U坐标示意图。

具体实施方式

[0134] 本发明在针对阿基米德螺线的机械加工中采用利用直线插补时分解到各轴的比例值,而后进行等比例的脉冲处理的思想来解决目前针对阿基米德螺线的实时插补直接采取弦长拟合方式导致的结果存在很大弦高误差的问题,以及进而导致针对阿基米德螺线存在非常大的误差的问题。下面结合具体实施方式进行详细说明。
[0135] 具体实施方式一:
[0136] 本实施方式为数控系统中基于切线矢量的阿基米德螺线实时插补方法,包括以下步骤:
[0137] 步骤1、获取新一段插补阿基米德螺线弧信息,并确定插补阿基米德螺线弧信息;
[0138] 所述阿基米德螺线方程为:
[0139] r(θ)=a+b×θ
[0140] 式中:b为阿基米德螺旋线系数,mm/°,表示每旋转1度时极径的增加(或减小)量;θ为极角,单位为度,表示阿基米德螺旋线转过的总度数;a为当θ=0°时的极径,mm。
[0141] 所述插补阿基米德螺线弧信息包括阿基米德螺线圆心、初始点、末端点、极径a、阿基米德螺旋线系数b,旋转方向(表示本段螺线从初始点角度到末端点的角度是如何变化的,若是照顺时针则是角度逐渐减小,若是逆时针则角度是逐渐增大);
[0142] 设阿基米德螺线的圆心为O(x0,y0),插补起点为S(x1,y1),终点为E(xn,yn);则阿基米德螺线上任意角度θ所对应的坐标点P′(xθ,yθ)的公式为:
[0143]
[0144] 实际上阿基米德螺线上的点在阿基米德螺线上面不是如同圆弧那么均匀的分割的,即相同的夹角之间的弧长应该相等。也是因为如此造成了阿基米德螺线上的点进行插补时,无法如同圆弧那般直接进行求解。本发明具求解时是先求解出来对应的阿基米德螺线上点的切线矢量:
[0145]
[0146] 对应的向心矢量为:
[0147]
[0148] 如图1所示,OP′=r(θ)=a+b×θ。
[0149] 然后,根据需要插补完成的阿基米德螺线段划分最长脉冲轴,根据不同插补区域对应的最长脉冲轴,计算出阿基米德螺线总的脉冲数,即从初始点到末端点所需完成的各插补区域对应的最长脉冲轴的脉冲数的加和,总的脉冲数也是所需要进行插补计算所需的迭代循环的次数,这里以分割数来表示;
[0150] 所述最长脉冲轴的意思是在一个插补区域内发送脉冲个数最多的轴;
[0151] 阿基米德螺线插补区域的划分的过程包括以下步骤:
[0152] 步骤10、根据需要插补完成的阿基米德螺线段划分最长脉冲轴,如下图2所示,区域划分的依据就是切线矢量分解到x、y轴之后的值与各自脉冲当量相乘所得量,比较谁大谁小,大的那个轴即为最长脉冲轴。区域划分可以分为A‑‑>B,B‑‑>C,C‑‑>D,D‑‑>A四个区域(即OA、OB、OC、OC之间的四个角度)。其中阿基米德螺线段对应的AB、CD段(AB段是指OA和OB两条直线之间包裹的阿基米德螺线,CD段是指OC和OD两条直线之间包裹的阿基米德螺线)是x轴为最长脉冲轴,即在此区域内任意两点的插补脉冲数最多的都是x轴,阿基米德螺线段对应的BC、DA段是y轴为最长脉冲轴,即在此区域内任意两点的插补脉冲数最多的都是y轴。
[0153] 区分角度求解方法为:
[0154] 其中,pulunitx为x轴的脉冲当量,pulunity为y轴的脉冲当量,单位为pulse/mm,正负符号是根据所处的象限来决定,当象限在1、3范围时,则为正,当象限在2、4范围内时,则为负号。
[0155] 根据上述公式,利用牛顿迭代方法,并通过不同象限角度范围不同的约束条件,给定初值,进行迭代求解处理分割角θ分割角,将四个象限中对应的分割角分别记为θ1分割角、θ2分割角、θ3分割角、θ4分割角。
[0156] 具体分割角的求解方法如下所示:
[0157] 以第一象限的分割角为例进行说明
[0158] 步骤101、首先是根据 求解出来分割角对应的向心矢量的角度θ_normal=atan2(pulunitx,pulunity),atan2是编程语言C语言的一个求解角度的函数,它可以根据输入的两个参数来区分象限,并反馈对应的角度值,范围是‑180°至180°之间;
[0159] 步骤102、以这个向心矢量的角度为极角即θ=θ_normal,求解此时对应的阿基米德螺线的极径r(θ)=a+b×θ;
[0160] 步骤103、求解偏转角度值Δθ=arctan2(b,r(θ)),注意b可以为正也可以为负,也意味着Δθ可以是正值也可以是负值。
[0161] 然后得到此时极角θ所对应的向心矢量角度θ_n=θ‑Δθ;
[0162] 步骤104、计算分割角对应的向心矢量角度θ_normal与求解出来的极角θ所对应的向心矢量角度θ_n之间的差值error=θ_normal‑θ_n;而后令θ=θ+error;
[0163] 步骤105、而后将此时的θ_n作为极角即θ=θ_n,重复步骤102至步骤104步骤,直至求解出来的error的值趋向于0,即求解出来了第一象限的分割角θ1分割角;
[0164] 若是第二、三、四象限,各分割角对应的向心矢量的角度
[0165] θ_normal_2=atan2(pulunitx,‑pulunity)
[0166] θ_normal_3=atan2(‑pulunitx,‑pulunity)
[0167] θ_normal_4=atan2(‑pulunitx,pulunity)
[0168] θ_normal_2、θ_normal_3、θ_normal_4分别表示第二、三、四象限中的θ_normal;由于atan2函数的求解角度范围是‑180°至180°之间,这个里面需要对于负值角度即3、4象限的角度进行一个处理:即
[0169] 通过上述求解计算,可以得到对应的区分矢量OA、OB、OC、OD的角度分别为:θ1分割角、θ2分割角、θ3分割角、θ4分割角,它们表示四个象限各自对应的分割角度值。其中在AOD、BOC区间内的阿基米德螺线段,它的最长脉冲轴是Y轴;在AOB、COD区间内的阿基米德螺线段,它的最长脉冲轴是X轴。
[0170] 步骤11、基于分割角确定将需要插补的阿基米德螺线划分区域;
[0171] 每个区域的最长脉冲轴的脉冲数相加得到要插补的阿基米德螺线的总脉冲数,也是所需要进行插补计算所需的迭代循环次数,即此条阿基米德螺线的分割数。
[0172] 如图3所示,若是阿基米德螺线处于AOB范围内,设阿基米德螺线上的起点和终点分别为S点到E点,则只需要求解从阿基米德螺线的S点到E点的Y方向所需完成的脉冲总数即为阿基米德螺线的分割数。
[0173] 如图4所示,若是阿基米德螺线处于BOC范围内,则只需要求解从阿基米德螺线的S点到E点的X方向所需完成的脉冲总数即为阿基米德螺线的分割数。
[0174] 如图5所示,若是阿基米德螺线处于AOB和BOC范围内,在AOB范围最长脉冲轴是X轴,在BOC范围最长脉冲轴为Y轴,则需要求解从阿基米德螺线的S点到OB分割角对应的点的Y方向所需完成的脉冲总数再加上OB分割角对应的点到E点的X方向所需完成的脉冲总数才为阿基米德螺线总的分割数。
[0175] 设θn为插补阿基米德螺线终点的向心矢量与X轴正半轴的夹角,即:
[0176]
[0177] 首先判断在插补起点与终点之间是否有最长脉冲轴的改变,即判断θ1分隔角、θ2分隔角、θ3分隔角、θ4分隔角这四个角度是否至少有任意一个存在于θ1‑θn之中;θ1表示插补阿基米德螺线起点的向心矢量与X轴正半轴的夹角;
[0178] (一)若没有,则直接计算得到x和y两个方向上的脉冲数:
[0179]
[0180] 其中,x1、y1为起点的坐标值,xn、yn为终点的坐标值;
[0181] 当|xn‑x1|和|yn‑y1|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分。
[0182] 最后求得总脉冲数为n总=max{nx,ny},也为阿基米德螺线的分割数。
[0183] (二)若这四个角度至少有任意一个处在θ1‑θn之中,则设此角度为α,则此角度数值必然是四个角度之一,即α=[θ1分隔角,θ2分隔角,θ3分隔角,θ4分隔角],则需要进行分段考虑并计算。
[0184] 假设只有一个分割角在θ1‑θn之中,即插补段在P(xα,yα)点被分成两段。根据方程式:
[0185] xα=(a+b×α)×cos(α)+xo
[0186] yα=(a+b×α)×sin(α)+yo
[0187] 其中阿基米德螺线的圆心为O(x0,y0);
[0188] 先计算S点到P点之间的脉冲数,首先
[0189]
[0190] 其中,当|xα‑x1|和|yα‑y1|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分。求得第一段脉冲数为n1=max{nx1,ny1};
[0191] 而后计算P点到E点的脉冲数,首先
[0192]
[0193] 其中,当|xα‑xn|和|yα‑yn|存在小数部分时,若小数部分大于0.5,则直接进1,若小数部分小于等于0.5,则只保留整数部分。求得第二段脉冲数为n2=max{nx2,ny2};
[0194] 由此得出总脉冲数为n总=n1+n2;即分割数。
[0195] (三)若有两个以上分割角在θ1‑θn之中,即插补段被分成三段以上,按照上述方式进行即可,只不过是多计算分割角之间的脉冲数进行加和而已。
[0196] 步骤2:比较x、y方向的脉冲余数,所述的脉冲余数是每次实际发送脉冲到达的位置与理论插补点之间的差值的加和,判断是哪个轴的脉冲余数绝对值大于0.5,进行脉冲处理;
[0197] 注意每当处理新的阿基米德螺线时,其x、y方向的脉冲余数初值是0.0;
[0198] 具体过程入下:
[0199] 设x方向脉冲余数为repulse_x,y方向脉冲余数为repulse_y,并判断这两个方向的脉冲余数是否超出范围值,即绝对值大于0.5;
[0200] 当|repulse_x|>0.5,且repulse_x>0,则令repulse_x‑1,同时x轴发送一个脉冲;同时总脉冲数减一;
[0201] 当|repulse_x|>0.5,且repulse_x<0,则令repulse_x+1,同时x轴发送一个脉冲;同时总脉冲数减一;
[0202] 当|repulse_y|>0.5,且repulse_y>0,则令repulse_y‑1,同时y轴发送一个脉冲;同时总脉冲数减一;
[0203] 当|repulse_y|>0.5,且repulse_y<0,则令repulse_y+1,同时y轴发送一个脉冲;同时总脉冲数减一;
[0204] 继续比较x、y方向的脉冲余数,进行脉冲处理;当没有一个方向上的余数的绝对值超过0.5,进行步骤3。
[0205] 步骤3:求解理论插补点(第一次是初始点S,之后该步骤再求解的就是求解出来的理论插补点U)的角度值对应的阿基米德螺线点的切线矢量:
[0206] 设阿基米德螺线所在的平面为XY两轴构成,基于插补方向将切线分为切线顺时针旋转和切线逆时针旋转,如图6和图7所示:
[0207] 接下来计算理论插补点的切向矢量,根据前面公式:
[0208] dx=‑(a+b×θ)×sin(θ)+b×θ
[0209] dy=(a+b×θ)×cos(θ)+b×θ
[0210] dz=0.0
[0211] 可以求解出来理论插补点的切线矢量:tangent(m,n,k);
[0212] dx=‑(a+b×θ)×sin(θ)+b×θ=m
[0213] 即:dy=(a+b×θ)×cos(θ)+b×θ=n。
[0214] dz=0.0=k
[0215] 步骤4、该点的切线矢量各种分量与各自轴的脉冲当量相乘,判断哪个轴此刻为最长脉冲轴,决定发送脉冲;并求出下一个点的发送脉冲的轴坐标,再根据近似处理法求出另一个轴的坐标,而后判断另一个轴的脉冲余数绝对值是否大于0.5,是否进行脉冲处理;
[0216] 接下来判断哪个是最长脉冲轴,则谁发送一个脉冲,设numx、numy分别为切线矢量与各自轴的脉冲当量的数值乘积;
[0217] numx=m×pulunitx
[0218] numy=n×pulunity
[0219] 判断|numx|和|numy|的大小,分为两种情况进行说明:
[0220] (A)如果|numx|>|numy|,则x方向发送一个脉冲;同时,总脉冲数减一。
[0221] 将下一个理论插补点的理论插点补坐标记为U;首先确定一个求解插补点Q,然后基于求解插补点Q再最终确定U;
[0222] 若numx>0,则
[0223] x2=x1+1/pulunitx
[0224] 若numx≤0,则
[0225] x2=x1‑1/pulunitx
[0226] 接下来进入求解理论插补点U的y2坐标值的计算,由于阿基米德螺线自身公式的原因,是无法根据x2坐标值带入方程求解出来的。
[0227] 本发明是采取一种近似求解法求出来对应的坐标值。具体方法如下,参考图8所示:
[0228] 首先是根据x2坐标求解出来对应的临时y2坐标值,即y2_temp;
[0229] 若numy>0,则
[0230] y2_temp=y1+abs(numy/numx)/pulunity;
[0231] 若numy≤0,则
[0232] y2_temp=y1‑abs(numy/numx)/pulunity;
[0233] 其中abs(·)为用于求数据绝对值的函数;
[0234] 接下来是求解对应的理论插补点U:
[0235] 如图8所示,将插补点Q的坐标设为:pt_next,其x、y点坐标记为:pt_next.x,pt_next.y,首先令:pt_next.x=x2,pt_next.y=y2_temp。同时,令当前初始点S(如图8所示)坐标为:pt,其x、y点坐标记为:pt.x,pt.y。然后进行如下处理:
[0236] 第一步、求解出来要求解的插补点的旋转角度Δθ:
[0237] 其中len_pt是本次计算的插补点和当前点的距离,如图8所示的QS的长度。
[0238] 又根据阿基米德螺线弧长求解公式: 可以求解出来当前点的近似曲率半径radius的值即 即为图8所示的
ST点的长度。
[0239] Δθ=len_pt/radius;
[0240] 若是顺时针旋转,则需要进行一个负号赋值:
[0241] Δθ=0.0‑Δθ;
[0242] 此即为插补点和当前点这两点距离所对应的角度变化量Δθ。
[0243] 第二步、求解插补点所对应的阿基米德螺线的角度值θ_next:
[0244] 设θ为当前点所对应的阿基米德螺线的角度值,则插补点所对应的阿基米德螺线的角度值θ_next=θ+Δθ;
[0245] 第三步、设U为真正的理论插补点,根据下面公式所示求解出来此角度对应的阿基米德螺线的半径r(θ_next)值即为图9所示的OU的长度:
[0246] r(θ_next)=a+b×θ=a+b×θ_next;
[0247] 第四步、求解出来此时真正的阿基米德螺线的理论插补点坐标U:
[0248] 设Δ_x,Δ_y为插补点到阿基米德螺线O(x0,y0)的x、y轴距离值;
[0249] Δ_x=pt_next.x‑xo
[0250] Δ_y=pt_next.y‑yo
[0251] 求解出来插补点到阿基米德螺线圆心的距离len_Δ_xy:
[0252]
[0253] 第五步、真正的理论插补点坐标求解:
[0254] pt_next.x=Δ_x*r_pt_next/len_Δ_xy+xo
[0255] pt_next.y=Δ_y*r_pt_next/len_Δ_xy+yo
[0256] 此时y方向增加了脉冲余数(y1‑y)*pulunity,y方向总脉冲余数变为repulse_y+(y1‑y)*pulunity;
[0257] 此时重新判断y方向总脉冲余数是否超出范围值,即绝对值大于0.5;
[0258] 当|repulse_y|>0.5,且repulse_y>0,则令repulse_y‑1,同时y轴发送一个脉冲;
[0259] 当|repulse_y|>0.5,且repulse_y≤0,则令repulse_y+1,同时y轴发送一个脉冲。
[0260] (B)若|numx|<=|numy|,则y方向发送一个脉冲;同时,总脉冲数减一。
[0261] 将下一个理论插补点的理论插点补坐标记为U;首先确定一个求解插补点Q,然后基于求解插补点Q再最终确定U;
[0262] 若numy>0,则
[0263] y2=y1+1/pulunity
[0264] 若numy≤0,则
[0265] y2=y1‑1/pulunity
[0266] 接下来进入求解理论插补点U的x2坐标值的计算,由于阿基米德螺线自身公式的原因,是无法根据y2坐标值带入方程求解出来的。
[0267] 本发明是采取一种近似求解法求出来对应的坐标值。具体方法如下:
[0268] 首先是根据y2坐标求解出来对应的临时x2坐标值,即x2_temp;
[0269] 若numx>0,则
[0270] x2_temp=x1+abs(numx/numy)/pulunitx;
[0271] 若numx≤0,则
[0272] x2_temp=x1‑abs(numx/numy)/pulunitx;
[0273] 其中abs(·)为用于求数据绝对值的函数;
[0274] 接下来是求解对应的理论插补点U:
[0275] 将插补点Q的坐标设为:pt_next,其x、y点坐标记为:pt_next.x,pt_next.y,首先令:pt_next.x=x2_temp,pt_next.y=y2。同时,令当前初始点S坐标为:pt,其x、y点坐标记为:pt.x,pt.y。然后进行如下处理:
[0276] 第一步、求解出来要求解的插补点的旋转角度Δθ:
[0277] 其中len_pt是本次计算的插补点和当前点的距离。
[0278] 又根据阿基米德螺线弧长求解公式: 可以求解出来当前点的近似曲率半径radius的值即 即为上图所示的
ST点的长度。
[0279] Δθ=len_pt/radius;
[0280] 若是顺时针旋转,则需要进行一个负号赋值:
[0281] Δθ=0.0‑Δθ;
[0282] 此即为插补点和当前点这两点距离所对应的角度变化量Δθ。
[0283] 第二步、求解插补点所对应的阿基米德螺线的角度值θ_next:
[0284] 设θ为当前点所对应的阿基米德螺线的角度值,则插补点所对应的阿基米德螺线的角度值θ_next=θ+Δθ;
[0285] 第三步、设U为真正的理论插补点,根据下面公式所示求解出来此角度对应的阿基米德螺线的半径r(θ_next)值即OU的长度:
[0286] r(θ_next)=a+b×θ=a+b×θ_next;
[0287] 第四步、求解出来此时真正的阿基米德螺线的理论插补点坐标U:
[0288] 设Δ_x,Δ_y为插补点到阿基米德螺线O(x0,y0)的x、y轴距离值;
[0289] Δ_x=pt_next.x‑xo
[0290] Δ_y=pt_next.y‑yo
[0291] 求解出来插补点到阿基米德螺线圆心的距离len_Δ_xy:
[0292]
[0293] 第五步、进入真正的理论插补点坐标求解:
[0294] pt_next.x=Δ_x*r_pt_next/len_Δ_xy+xo
[0295] pt_next.y=Δ_y*r_pt_next/len_Δ_xy+yo
[0296] 此时x方向增加了脉冲余数(x1‑x)*pulunitx,x方向总脉冲余数变为repulse_x+(x1‑x)*pulunitx;
[0297] 此时重新判断x方向总脉冲余数是否超出范围值,即绝对值大于0.5;
[0298] 当|repulse_x|>0.5,且repulse_x>0,则令repulse_x‑1,同时x轴发送一个脉冲;
[0299] 当|repulse_x|>0.5,且repulse_x≤0,则令repulse_x+1,同时x轴发送一个脉冲。
[0300] 步骤5:重复步骤2到步骤4,直到判断完成本段阿基米德螺线插补。
[0301] 终点判断依据为:当前点坐标是否为终点坐标,其中为了防止首末位置一样的现象(阿基米德螺线等同于圆弧,即阿基米德螺旋线系数b=0),可以加一个标志量,若是当前第一次进入插补,则不需要比较终点坐标,而是第二次开始才开始进行终点位置比较判断。终点之间的误差若是小于0.5个脉冲数,则判断为本段阿基米德螺线插补结束,本发明以总脉冲数最终减为零为判断依据。
[0302] 具体实施方式二:
[0303] 本实施方式为一种数控系统中基于切线矢量的阿基米德螺线实时插补设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现所述的数控系统中基于切线矢量的阿基米德螺线实时插补方法。
[0304] 应当理解,包括本发明描述的任何包括处理器和存储器的设备,设备还可以包括其他通过信号或指令进行显示、交互、处理、控制等以及其他功能的单元、模;当然也可以为数控系统本身,或者数控系统中的组成部分。
[0305] 存储器可以包括但不限于磁存储器,光存储器;磁光存储器包括:只读存储器ROM、随机存取存储器RAM、可擦除可编程存储器(例如,EPROM和EEPROM)以及闪存层;或者适合于存储电子指令的其他类型的介质。
[0306] 本发明的上述算例仅为详细地说明本发明的计算模型和计算流程,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
QQ群二维码
意见反馈