资源简介
我发表小论文用的程序代码,永磁直线电机的速度位置跟踪,用的无模型自适应控制
代码片段和文件信息
% MFac control for continuous plant
%初始化
clear all;
close all;
u(1)=12;
u(2)=12;
y(1)=0;
y(2)=0;
y(3)=0;
Phi(1)=2;
Phi(2)=2;
Epsilon=0.00001;%充分小的数
Eta=1;
Rho=1; %步长序列
Lambda=0.09;
Mu=5; %权重因子
%Sampling time
ts=0.001;
%期望输出
for k=1:1001;
time(k)=k*ts;
j=k*ts;
y_d(k)=(-0.2)*(15*j^4-6*j^5-10*j^3);
v_d(k)=(-0.2)*(60*j^3-30*j^4-30*j^2);
end
xk=zeros(21);
u_1=0;
%控制过程
for k=3:1000
%计算实际输出
para=u_1;
tSpan=[0 ts];
[ttxx]=ode45(‘plant‘tSpanxk[]para);
xk = xx(length(xx):);
y(k)=xk(1);
v(k)=xk(2);
%由控制率计算控制输入
d_u(k-1)=u(k-1)-u(k-2);
d_y(k)=y(k)-y(k-1);
%估计伪偏导数Phi
Phi(k)=Phi(k-1)+(Eta*d_u(k-1)/(Mu+abs(d_u(k-1)).^2))*(d_y(k)-Phi(k-1)*d_u(k-1));
if Phi(k)<=Epsilon | abs(d_u(k-1))<=Epsilon
Phi(k)=Phi(1);
end
u(k)=u(k-1)+(Rho*Phi(k)/(Lambda+abs(Phi(k)).^2))*(y_d(k+1)-y(k));
u_1=u(k);
end
figure(2);
plot(1:1000y_d(1:1000)1:1000y(1:1000)‘r‘);
xlabel(‘k‘);ylabel(‘y_dy‘);
% figure(2);
% plot(1:1000y_d(1:1000)-y(1:1000)‘r‘‘linewidth‘2);
% xlabel(‘k‘)ylabel(‘Positon error‘);
%
% figure(3);
% plot(1:1000v_d(1:1000)1:1000v(1:1000)‘r‘);
% xlabel(‘k‘);ylabel(‘v_dv‘);
% legend(‘Ideal Speed signal‘‘Speed tracking‘);
%
% figure(4);
% plot(1:1000v_d(1:1000)-v(1:1000)‘r‘‘linewidth‘2);
% xlabel(‘k‘)ylabel(‘Speederror‘);
%
% figure(5);
% plot(1:1000u(1:1000)‘r‘‘linewidth‘2);
%
% figure(6);
% plot(1:1000Phi(1:1000)‘r‘‘linewidth‘2);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1559 2013-03-31 21:36 MFac\MFac_plant.m
文件 341 2013-03-31 16:12 MFac\plant.m
目录 0 2013-03-31 22:05 MFac
----------- --------- ---------- ----- ----
1900 3
- 上一篇:Delphi实现多国语言
- 下一篇:基于观测器的PID控制
评论
共有 条评论