南航机电控制作业DDA插补matlab编程_精品文档.doc
《南航机电控制作业DDA插补matlab编程_精品文档.doc》由会员分享,可在线阅读,更多相关《南航机电控制作业DDA插补matlab编程_精品文档.doc(4页珍藏版)》请在冰豆网上搜索。
![南航机电控制作业DDA插补matlab编程_精品文档.doc](https://file1.bdocx.com/fileroot1/2022-10/14/402da1fd-74e7-49bb-be8b-ccc8e01bd6c1/402da1fd-74e7-49bb-be8b-ccc8e01bd6c11.gif)
1、采用DDA脉冲当量插补算法完成单轴的运动控制,并绘制速度图
(1)各物理量初值设置如下:
输入位移的初始值:
0
输入速度的初始值:
10
输入加速度的初始值:
3
输入加加速度的初始值:
5
输入时间长度:
2
输入脉冲当量值:
0.05
(2)DDA插补Matlab代码
clearall;
P0=input('输入位移的初始值');
V0=input('输入速度的初始值');
A0=input('输入加速度的初始值');
B0=input('输入加加速度的初始值');
T=input('输入时间长度');
DT=input('输入脉冲当量值');
%确定K值
K=T/DT
t=zeros(1,K+1);
B=zeros(1,K+1);
A=zeros(1,K+1);
V=zeros(1,K+1);
P=zeros(1,K+1);
%确定时间离散值
fori=1:
K
t(i+1)=t(i)+DT;
end
%确定各物理量的初始值
B
(1)=B0;
A
(1)=A0;
V
(1)=V0;
P
(1)=P0;
%使用DDA插补算法,确定各物理量离散值
forj=1:
K
B(j+1)=B(j);
end
fork=1:
K
A(k+1)=A(k)+B(k);
V(k+1)=V(k)+A(k);
P(k+1)=P(k)+V(k);
end
plot(t,V,'b+-','LineWidth',1.5)
title('速度曲线图像');
xlabel('t坐标轴');
ylabel('V坐标轴');
(3)速度曲线图像
2、采用DDA脉冲当量插补算法,完成一平面三次样条曲线的运动控制程序仿真。
(注:
三次样条曲线为y=a0+a1x+a2x^2+a3x^3)
(1)三次曲线各项系数:
输入常数项系数:
5
输入一次项x的系数:
2
输入二次项x^2的系数:
-3
输入三次项x^3的系数:
7
(2)DDA插补Matlab代码
clearall;
a0=input('输入常数项系数');
a1=input('输入一次项x的系数');
a2=input('输入二次项x^2的系数');
a3=input('输入三次项x^3的系数');
%求K值
sum1=0;
sum2=0;
A=[a1,a2,a3];
Pos=[0,0,0];
Neg=[0,0,0];
fori=1:
3
if(A(i)>=0)
Pos(i)=A(i);
elsePos(i)=0;
end
sum1=sum1+i*Pos(i);
end
forj=1:
3
if(A(j)<0)
Neg(j)=A(j);
elseNeg(j)=0;
end
sum2=sum2+j*Neg(j);
end
sum2=-sum2;
if(sum1>=sum2)
K=sum1
elseK=sum2
end
%计算插补初值
D1y0=a1/K-a2/(K^2)+a3/(K^3);
D2y0=(2*a2)/(K^2)-(6*a3)/(K^3);
D3y0=(6*a3)/(K^3);
%DDA增量插补,使用差分递推算法
x=zeros(1,K+1);
y=zeros(1,K+1);
D1y=zeros(1,K+1);
D2y=zeros(1,K+1);
D3y=zeros(1,K+1);
fori=1:
K
x(i+1)=x(i)+1/K;
end
y
(1)=a0;
D1y
(1)=D1y0;
D2y
(1)=D2y0;
D3y
(1)=D3y0;
fori=1:
K
D3y(i+1)=D3y(i);
end
forj=1:
K
D2y(j+1)=D2y(j)+D3y(j+1);
D1y(j+1)=D1y(j)+D2y(j+1);
y(j+1)=y(j)+D1y(j+1);
end
plot(x,y,'bo-','LineWidth',1.5)
title('三次样条曲线的图像');
xlabel('x坐标轴');
ylabel('y坐标轴');
legend('y=a0+a1x+a2x^{2}+a3x^{3}');
(3)三次样条曲线的图像
4