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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Galaxy_Robot

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

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

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

打赏作者

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

抵扣说明:

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

余额充值