資源簡介
我發表小論文用的程序代碼,永磁直線電機的速度位置跟蹤,用的無模型自適應控制

代碼片段和文件信息
%?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控制
評論
共有 條評論