• 大小: 171KB
    文件类型: .zip
    金币: 2
    下载: 2 次
    发布日期: 2021-05-13
  • 语言: Matlab
  • 标签: 数控  MATLAB  

资源简介

数控插补源程序代码以及课设报告模板,直线插补和圆弧插补都有,DDA直线插补和逐点比较圆弧插补

资源截图

代码片段和文件信息

% init part
close all
clear all
clc

global x y speed steplengh;


%初始化参数------------------------------
clockwise=0;%  1:clockwise 0: anti-clockwise
speed=0.1;    %speed of running插补速度.
xs =4;  % x start point x起始点
ys =-4;  % y start point y起始点
xe =4; % x end point x终点
ye =4; % y end point y终点
x0=0;%圆心坐标
y0=0;%圆心坐标
steplengh=0.5;%步长

%理论曲线绘制-----------------------------
    if clockwise==1%顺时针理论曲线
    r=sqrt((xe-x0)^2+(ye-y0)^2);%求半径
    rr=1.5*r;
    axis([0 rr -rr rr]);
   jd=atan((ys-y0)/(xs-x0)); 
 jd1=atan((ye-y0)/(xe-x0));
 t=jd1:0.001:jd;
  xt = r*cos(t)+x0;
yt = r*sin(t)+y0;
plot(xtyt‘g‘);
axis(‘equal‘);
grid on; %绘制网格
hold on;
elseif clockwise==0 %逆时针
     r=sqrt((xe-x0)^2+(ye-y0)^2);
    rr=1.5*r;
    axis([0 rr -rr rr]);
   jd=atan((ys-y0)/(xs-x0)); 
 jd1=atan((ye-y0)/(xe-x0));
 t=jd:0.001:jd1;
  xt = r*cos(t)+x0;
yt = r*sin(t)+y0;
plot(xtyt‘g‘);
axis(‘equal‘);
grid on;
hold on;   
    end 

% main part--------------------------------------------
%Go(  )--进给函数,每步进给绘图 
   %Go(10)-- x方向正向进给一步 
   %Go(01)-- y方向正向进给一步
   %Go(-10)-- x方向负向进给一步 
   %Go(0-1)-- y方向负向进给一步
Go(xsys); % move to start point.
f=0;  %f--偏差函数
x=xs;
y=ys; 
if ys*ye<0
    zero=sqrt(r^2-y0^2)+x0;
    N=abs(xe-zero)+abs(xs-zero)+abs(ye-ys);
else
N=abs(xe-xs)+abs(ye-ys);  %  进给步数
end
     if clockwise==1 %顺时针圆弧插补
     while (N>0)
         if y>0
         if f >= 0    % check error.
             Go(0-steplengh);    % x go            
             f = f-2*(y-y0)+steplengh;   % calculate new error f.   
             y = y-steplengh;  % change x coordination.         
             N=N-steplengh;
         else
             Go(steplengh0);    % y go
             f = f+2*(x-x0)+steplengh;   % calculate new error f.     
            x =x+steplengh;  % change y coordination.       
             N=N-steplengh;
         end
         elseif y<=0
              if f >= 0    % check error.
             Go(-steplengh0);    % x go            
             f = f-2*(x-x0)+steplengh;   % calculate new error f.   
             x = x-steplengh;  % change x coordination.         
             N=N-steplengh;
         else
             Go(0-steplengh);    % y go
             f = f-2*(y-y0)+steplengh;   % calculate new error f.     
             y = y-steplengh;  % change y coordination.       
             N=N-steplengh;
              end
         end           
     end
     %逆时针圆弧插补
     elseif clockwise==0
     while (N>0)
         if y>=0
         if f >= 0    % check error.
             Go(-steplengh0);    % x go            
             f = f-2*(x-x0)+steplengh;   % calculate new error f.   
             x =x-steplengh;  % change x coordination.         
             N=N-steplengh;
         else
             Go(0steplengh);    % y go
             f = f+2*(y-y0)+steplengh;   % calculate new error f.     
            y =y+steplengh;  % change y coordination.       
          

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      335797  2018-05-19 00:23  插补源程序\.doc.doc
     文件        3724  2018-05-19 00:11  插补源程序\Comparecircle.m
     文件        2017  2018-05-18 23:00  插补源程序\DDALINE.m
     文件        3469  2018-05-18 23:16  插补源程序\DDAcircle.m
     文件         161  2018-05-15 22:52  插补源程序\Go.m
     文件       45436  2018-05-17 04:09  插补源程序\untitled.fig
     文件       16315  2018-05-16 20:32  插补源程序\untitled.m
     目录           0  2018-05-19 00:27  插补源程序\

评论

共有 条评论