3.1 插补算法概述

插补算法在数控系统中扮演关键角色,负责根据给定速度计算轮廓中间点坐标。时间分割法是数据采样插补的经典方法,通过将轮廓分割成进给段并计算每个插补周期的坐标增量来实现。本文概述了时间分割法,并给出了基于指数加减速的直线插补示例。
摘要由CSDN通过智能技术生成

3.1 插补算法概述

常见的插补算法

对于控制数控刀具或机器人末端工具运动轨迹来说,插补功能至关重要。插补的任务就是根据给定的运动速度,正在轮廓起点和终点之间计算出若干个中间点的坐标值。由于每个中间点计算所需的时间直接影响系统的控制速度,而插补中间点坐标值的计算精度有影响到NC系统的控制精度,所以插补算法是NC系统控制的核心。

数控技术发展过程中出现了脉冲增量插补、数字增量插补、时间分割插补、拓展DDA方法、双DDA法等,这些方法在文献[1]中有详细的论述,这里就不赘述了。其中时间分割插补、拓展DDA方法、双DDA法都可以归纳为数据采样插补,数据采样插补是现代运动控制系统普遍采用的方法,其中最经典的是时间分割法,后面章节我们介绍的插补算法都属于时间分割法。

数据采样插补是根据用户程序的给定速度,将给定轮廓曲线分割为每一插补周期的进给段,即轮廓步长。每一个插补周期,执行一次插补运算,计算出下一个插补点(动点)的坐标。从而计算出下一个周期各个坐标的进给量,如 Δ x 、 Δ y \Delta x、\Delta y ΔxΔy等,从而得出下一个插补点的指令位置。

时间分割法

时间分割法是典型的数据采样插补方法。它首先根据加工指令中的进给速度 v v v,计算出每个周期的轮廓步长 l l l,即用插补周期为时间单位,将整个加工过程分割成许多单位时间内的进给过程。以插补周期为时间单位,则单位时间内的移动的路程等于速度,即轮廓步长与轮廓速度 f f f相等。插补计算的主要任务是计算出下一个插补点的坐标,从而计算出轮廓速度在各个坐标轴的分速度,即下一个插补周期内的各坐标进给量 Δ x 、 Δ y \Delta x、\Delta y ΔxΔy。控制X,Y坐标分别以 Δ x 、 Δ y \Delta x、\Delta y ΔxΔy为速度协调进给,即可走出逼近直线段,到达下一个插补点。需要注意的是,插补前需要进行加减速规划,常用的梯形加减速、指数加减速和S形加减速在前面的章节有详细的介绍。根据加减速曲线可以计算出第i周期的位移,根据路径(直线、圆弧、样条等)的几何参数,计算出对应的坐标。如下图是梯形加减速控制的直线插补的示意图。

在这里插入图片描述

示例:基于指数加减速的直线插补

基本流程是:计算直线的长度→加减速规划→计算每个周期的位移→计算该周期的插补点坐标。

对应的位移、速度和插补坐标变化如图所示。

在这里插入图片描述

示例代码如下。

其中指数加减速相关的函数expProfile,expProfile_dis,可以参考上一个章节《2.3 指数加减速》(https://blog.csdn.net/Galaxy_Robot/article/details/132255426?spm=1001.2014.3001.5502)。

clc
clear
close("all")
%%
%给定直线起点和终点,以及运动参数
ps=[10;20;0];
pe=[20;30;0];
vs=10;vmax=50;ve=5;amax=1000;dmax=1200;
%%
%加减速规划
L=sqrt((pe(1)-ps(1))^2+(pe(2)-ps(2))^2+(pe(3)-ps(3))^2);
param=expProfile(L,vs,vmax,ve,amax,dmax);
ts=param.t1+param.t2+param.t3;
Ts=0.001;%插补周期
k=1;
s0=0;
%绘图环境
fig=figure;
set(gcf,'Color','w')

f1=subplot(3,1,1);
xlabel("time")
ylabel("si") 
hold on
plot(f1,ts,L,'or-');
f2=subplot(3,1,2);
xlabel("time")
ylabel("vi") 
hold on
plot(f2,ts,ve,'or-');
plot(f2,[0,ts],[vmax vmax],'b--');
f3=subplot(3,1,3);
xlabel("x")
ylabel("y")
%axis equal
hold on
plot(f3,ps(1),ps(2),'or-')
plot(f3,pe(1),pe(2),'or-')
%插补输出
for ti=0:Ts:ts
    time(k,1)=ti;
    %数据采样。根据加减速轮廓,计算给定时刻对应的位移
    si(k,1)=expProfile_dis(param,ti);
    %插补计算。根据累计位移计算坐标点
    pi(k,:)=ps+si(k,1)/param.s*(pe-ps);
    %速度计算。只是用来画图用
    vi(k,1)=(si(k,1)-s0)/Ts;
    %绘图演示
    plot(f1,time(k),si(k),'.r-')
    plot(f2,time(k),vi(k),'.r-')
    plot(f3,pi(k,1),pi(k,2),'.r-')
    pause(0.01);  
    %制作动画
    frame = getframe(fig);
    im{k} = frame2im(frame);
    [A,map] = rgb2ind(im{k},256); %将 RGB 图像转换为索引图像 A。map 最多包含 n 个颜色。
    
    if k == 1
        imwrite(A,map,'test.gif','gif','LoopCount',Inf,'DelayTime',0.01);%'DelayTime'为每帧图像播放时间
    else
        imwrite(A,map,'test.gif','gif','WriteMode','append','DelayTime',0.01);
    end
    s0=si(k,1);
    k=k+1;
end


参考文献

[1]王爱玲.现代数控原理及控制系统[M].国防工业出版社,2002.

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Marlin是一种开源的3D打印机固件,它使用了先进的插补算法来实现高质量的打印效果。插补算法是指根据所给的输入数据,在多个离散点之间计算出中间值的过程。 Marlin使用的主要插补算法是线性插补和加速插补。 线性插补是指根据给定的离散点,通过计算两个点之间的线性路径,得到中间点的坐标。这样的插补算法可以实现平滑的移动效果,并且可以在细节上保持较高的精度。当3D打印机需要按照一条直线路径移动时,线性插补就是实现这个过程的关键。 加速插补是指根据给定的速度曲线,在离散点之间计算出平滑的加速度。通过加速插补算法,Marlin可以根据所设定的打印速度,计算出每个离散点之间的平滑过渡,从而避免了打印过程中产生的晃动或振动。 除了线性插补和加速插补,Marlin还采用了其他的插补算法来优化打印过程。例如,Marlin使用了二次贝塞尔曲线插补算法,在打印曲线或者弧线时可以实现更高的精度和平滑度。 总的来说,Marlin插补算法在3D打印过程中起到了至关重要的作用。通过使用先进的插补算法,Marlin可以实现高质量的打印效果,提高了打印速度和打印精度。 ### 回答2: Marlin是一种常用的3D打印机固件,提供了高效的插补算法,用于计算打印机头在移动时的运动轨迹。插补算法对于打印质量的影响非常大。 首先,Marlin使用直线插补算法来计算两个连续打印点之间的运动轨迹。直线插补算法能够确保打印机头在移动过程中保持平稳,减少振动和抖动,从而提高打印质量。此外,Marlin还通过计算合适的移动速度和加速度,来实现更加流畅的运动轨迹。 其次,Marlin还支持圆弧插补算法,用于处理打印对象中的圆弧路径。圆弧插补算法通过计算出合适的切线来保证打印机头在圆弧路径上的准确移动。这种算法能够使得打印机在打印曲线部分时,能够更加精确地跟踪曲线轨迹,从而提高打印精度。 此外,Marlin还提供了斜线插补算法,用于处理一些特殊情况下的线段。当打印机头需要避开障碍物时,斜线插补算法能够通过在两点之间插入适当的斜线段,使得打印机头能够绕过障碍物并继续沿着原始路径移动。这样可以保证打印质量,并减少因为障碍物而导致的移动停顿。 综上所述,Marlin插补算法是一种优秀的算法,能够提高3D打印机的打印质量。通过直线插补、圆弧插补和斜线插补算法的应用,Marlin能够使得打印机头在移动过程中更加平稳,准确地沿着所需路径移动,从而提高打印精度和速度。 ### 回答3: Marlin 插补算法是一种用于3D打印机的运动控制算法,其目的是计算打印头在打印过程中的移动路径。Marlin 是一个开源的固件,被广泛应用于许多桌面3D打印机中。 Marlin 插补算法主要处理两个方面:直线插补和圆弧插补。 在直线插补中,Marlin 通过计算两个给定坐标点之间的直线距离以及移动速度,确定打印头的路径。Marlin 考虑到了打印机的加速度和速度限制,以确保平稳而准确的移动。此外,Marlin 还通过分段计算路径,确保在路径的每一段都可以保持一致的速度和移动方向。 在圆弧插补中,Marlin 通过计算圆心位置、半径和旋转角度等参数,确定打印头的弧形路径。Marlin 能够处理从简单的弧形到复杂的螺旋路径。为了确保准确性,Marlin 使用了数学模型来逼近真实的圆弧路径,并在每个插补步骤中对路径进行微调。 另外,Marlin 还考虑到了其他因素,例如打印材料和打印机的特殊特性。它会根据打印材料的特点和打印机的机械结构,自动调整插补参数和运动规划,以获得最佳的打印结果。 总的来说,Marlin 插补算法是一种高度优化的运动控制算法,能够准确计算并控制3D打印机的移动路径。它考虑了加速度限制、速度限制和打印机特性等因素,以提供高质量的打印结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy_Robot

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值