close all;
clear all;
nx=10;
nt=40000;
tmax=20;L=0.6;
%Compute mesh spacing and time step
dx=L/(nx-1);
T=tmax/(nt-1);
%Create arrays to save data for export
t=linspace(0,nt*T,nt);
x=linspace(0,L,nx);
%Parameters
EI=2;m=6.78;rho=0.2211;Ih=0.0139;
thd=0.5;dthd=0;ddthd=0;
kp=30;kd=50;k=10;
F_1=0;
%Define viriables and Initial condition:
y=zeros(nx,nt); %elastic deflectgion
th_2=0;th_1=0;
dth_1=0;
for j=1:nt
th(j)=0; %joint angle
end
for j=3:nt %Begin
e(j)=th_1-thd;
de(j)=dth_1-dthd;
%th(j)
yxx0=(y(3,j-1)-2*y(2,j-1)+y(1,j-1))/dx^2;
tol(j)=-kp*e(j)-kd*de(j); %PD control for the joint
th(j)=2*th_1-th_2+T^2/Ih*(tol(j)+EI*yxx0); %(A1)
dth(j)=(th(j)-th_1)/T;
ddth(j)=(th(j)-2*th_1+th_2)/T^2;
%get y(i,j),i=1,2, Boundary condition (A2)
y(1,:)=0; %y(0,t)=0, i=1
y(2,:)=0; %y(1,t)=0, i=2
%get y(i,j),i=3:nx-2
for i=3:nx-2
yxxxx=(y(i+2,j-1)-4*y(i+1,j-1)+6*y(i,j-1)-4*y(i-1,j-1)+y(i-2,j-1))/dx^4;
y(i,j)=T^2*(-i*dx*ddth(j)-EI*yxxxx/rho)+2*y(i,j-1)-y(i,j-2); %i*dx=x, (A3)
dy(i,j-1)=(y(i,j-1)-y(i,j-2))/T;
end
%get y(nx-1,j),i=nx-1
yxxxx(nx-1,j-1)=(-2*y(nx,j-1)+5*y(nx-1,j-1)-4*y(nx-2,j-1)+y(nx-3,j-1))/dx^4;
y(nx-1,j)=T^2*(-(nx-1)*dx*ddth(j)-EI*yxxxx(nx-1,j-1)/rho)+2*y(nx-1,j-1)-y(nx-1,j-2); %(A6)
dy(nx-1,j)=(y(nx-1,j)-y(nx-1,j-1))/T;
%get y(nx,j),y=nx
yxxx_L=(-y(nx,j-1)+2*y(nx-1,j-1)-y(nx-2,j-1))/dx^3;
y(nx,j)=T^2*(-L*ddth(j)+(EI*yxxx_L+F_1)/m)+2*y(nx,j-1)-y(nx,j-2); %(A7)
dy(nx,j)=(y(nx,j)-y(nx,j-1))/T;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dzL=L*dth(j)+(y(nx,j)-y(nx,j-1))/T;
F(j)=-k*dzL; %P Control for the end
F_1=F(j);
th_2=th_1;
th_1=th(j);
dth_1=dth(j);
end %End
%To view the curve, short the points
tshort=linspace(0,tmax,nt/100);
yshort=zeros(nx,nt/100);
dyshort=zeros(nx,nt/100);
for j=1:nt/100
for i=1:nx
yshort(i,j)=y(i,j*100); %Using true y(i,j)
dyshort(i,j)=dy(i,j*100); %Using true dy(i,j)
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1);
subplot(211);
plot(t,thd,'r',t,th,'k','linewidth',2);
title('Joint angle tracking');
xlabel('time(s)');ylabel('angle tracking');
legend('thd','th');
subplot(212);
plot(t,dth,'k','linewidth',2);
xlabel('Time (s)');ylabel('Angle speed response (rad/s)');
legend('dth');
figure(2);
subplot(211);
surf(tshort,x,yshort);
title('Elastic deflection of the flexible arms');
xlabel('time(s)'); ylabel('x');zlabel('deflection,y(x,t)');
subplot(212);
surf(tshort,x,dyshort);
xlabel('Time (s)'); ylabel('x');zlabel('Deflection rate, dy(x,t) (m/s)');
figure(3);
subplot(211);
for j=1:nt/100
yshortL(j)=y(nx,j*100);
end
plot(tshort,yshortL,'r','linewidth',2);
xlabel('Time (s)');ylabel('y(L,t)');
subplot(212);
for j=1:nt/100
yshort1(j)=y(nx/2,j*100);
end
plot(tshort,yshort1,'r','linewidth',2);
xlabel('Time (s)');ylabel('y(x,t) at half of L');
figure(4);
subplot(211);
plot(t,tol,'r','linewidth',2);
xlabel('Time (s)');ylabel('control input,tol');
subplot(212);
plot(t,F,'r','linewidth',2);
xlabel('Time (s)');ylabel('control input,F');
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab挠性及奇异摄动系统的PD控制(源码).rar
共10个文件
m:8个
mdl:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
4星 · 超过85%的资源 3 下载量 8 浏览量
2023-07-21
09:49:37
上传
评论 1
收藏 19KB RAR 举报
温馨提示
1、资源内容:基于Matlab挠性及奇异摄动系统的PD控制(源码).rar 2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计中的部分功能,作为“参考资料”使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab挠性及奇异摄动系统的PD控制(源码).rar (10个子文件)
基于Matlab挠性及奇异摄动系统的PD控制(源码)
chap13_1ctrl.m 694B
chap13_2plot.m 483B
chap13_2sim.mdl 26KB
chap13_1plant.m 760B
chap13_1sharp.m 1KB
chap13_1plot.m 379B
chap13_3.m 3KB
chap13_2plant.m 739B
chap13_2ctrl.m 725B
chap13_1sim.mdl 26KB
共 10 条
- 1
资源评论
- qq_500575552024-04-23无注释,无说明,有s函数无simulink仿真,垃圾资源,服! #毫无价值
- 晩萤2023-12-28支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
- 2301_767426422024-03-07感谢大佬,让我及时解决了当下的问题,解燃眉之急,必须支持!
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2179
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功