概述
本帖最后由 志辉Ben 于 2018-10-5 06:52 编辑
一个IPT系统被调制电压和生成的脉冲宽带调制波控制,波的相位角alpha范围在0~pi。波形生成器产生两个正弦波u11和u12,频率是20KHz,相差alpha/2的相位差。两个sin波幅度阈值是-Vpdc/2~+Vpdc/2,最后输入到系统的控制usys=u11-u12. alpha相位差是通过两个正弦波的差值控制占空比。电路图如下:
WechatIMG70.jpeg (90.14 KB, 下载次数: 19)
2018-10-5 06:50 上传
我的问题是,我想试着用等效控制法计算出Ueq,但是最后不管设置参考值是多少都不能控制输出结果,我不知道程序在哪里写的有问题,以下是我的思路:
WechatIMG71.jpeg (82.43 KB, 下载次数: 17)
2018-10-5 06:51 上传
我的程序如下:因为求导的部分比较大,可以不用关注这部分。
function [dx]=IPT_SMC_function(t,x,u)
%Define the parameters
L1=20*10^-6;
Li=20*10^-6;
L2=50*10^-6;
c1=3.16*10^-6;
c2=1.26*10^-6;
M=10*10^-6;
Ri=0.1000;
R1=0.1000;
R2=0.1000;
Rl=50;
Rac=((pi^2)*Rl)/8;
Rac=(pi^2/8)*Rl;
beta=M/(L1*L2);
gamma=1/(1-M*beta);
% Define the state equations
dx(1,1)=(u-x(2)-Ri*x(1))/Li;
dx(2,1)=(x(1)-x(3))/c1;
dx(3,1)=gamma*((x(2)/L1)-(R1*x(3)/L1)-beta*R2*x(4)-beta*x(5));
dx(4,1)=gamma*(beta*x(2)-beta*R1*x(3)-(R2*x(4)/L2)-x(5)/L2);
dx(5,1)=(x(4)-x(5)/Rac)/c2;
% a11 = -Ri/Li; a12 = -1/Li;
% a21 = 1/C1; a23=-1/C1;
% a32 = gamma/L1; a33 = -R1*gamma/L1; a34 = -gamma*beta*R2; a35 = -beta*gamma;
% a42 = beta*gamma; a43 = -beta*gamma*R1; a44 = -R2*gamma/L2; a45 = -gamma/L2;
% a54 = 1/C2; a55 = -1/(Rac*C2);
%
%
% b11=1/Li;
% c15=1;
%
% % sets up the state space matrixes
% A=zeros(5,5); B=zeros(5,1);
%
% % C=zeros(1,5); D=0;
%
% A(1,1) = a11; A(1,2) = a12;
% A(2,1) = a21; A(2,3) = a23;
% A(3,2) = a32; A(3,3) = a33; A(3,4)=a34; A(3,5)=a35;
% A(4,2) = a42; A(4,3) = a43; A(4,4) = a44; A(4,5) = a45;
% A(5,4) = a54; A(5,5) = a55;
%
% B(1,1)=b11;
% C(1,5)=c15;
%
% % sys=ss(A,B,C,D);
%
% dx=A*x+B*u;
%dx=dx';
--------------
主程序:
clc
clear; close;
% Setting parameters' vlaue
L1=20*10^-6;
Li=20*10^-6;
L2=50*10^-6;
c1=3.16*10^-6;
c2=1.26*10^-6;
M=10*10^-6;
Ri=0.1000;
R1=0.1000;
R2=0.1000;
Rl=50;
Rac=(pi^2/8)*Rl;
beta=M/(L1*L2);
gamma=1/(1-M*beta);
fs=4e06; % Sanpling frequency
h=1/fs; % Sampling Time
% Integration steps
t0=0;
tfinal=0.007;
iterations=ceil((tfinal-t0)*fs);
t=t0:h:tfinal;
t=t';
f=20000; % System frequency 20 kHz
w=2*pi*f;
Vdc=100; % Input voltage to the Inverter
%______________________________
% Initial conditions
x0=[0,0,0,0,0];
x1(1,1)=x0(1,1);
x2(1,1)=x0(1,2);
x3(1,1)=x0(1,3);
x4(1,1)=x0(1,4);
x5(1,1)=x0(1,5);
Pout(1,1)=x5(1,1)^2/Rac;
Pout_avg(1,1)=Pout(1,1);
alpha(1,1)=2*pi/3;
%____________________________
k=10;
j=10;
% Design Pref as reference
u=ones(iterations,1);
Pref=0*ones(length(t),1);
tfinal=0.0;
% Setting the tracking error
e(1,1)=Pref(1,1)-Pout_avg(1,1);
%de(1,1)=-2*x5(1,1)*(x4(1,1)/c2-x5(1,1)/(Rac*c2))/Rac;
% Setting the sliding surface function 's' and the control law 'u'
s=j*x1(1,1)+x2(1,1)+x3(1,1)+x4(1,1)+x5(1,1);
ds=j*(u(1,1)/Li-x2(1,1)/Li-Ri*x1(1,1)/Li)+(x1(1,1)+x3(1,1))/c1+(-gamma*beta*R2*x4(1,1)-gamma*beta*x5(1,1)+gamma*x2(1,1)/L1-gamma*R1*x3(1,1)/L1)+(gamma*beta*x2(1,1)-gamma*beta*R1*x3(1,1)-gamma*R2*x4(1,1)/L2-gamma*x5(1,1)/L2)+(x4(1,1)/c2-x5(1,1)/(Rac*c2));
u(1,1)=(Li/j)*(((j*x2(1,1)-j*Ri*x1(1,1))/Li)-((x1(1,1)-x3(1,1))/c1)-(-gamma*beta*R2*x4(1,1)-gamma*beta*x5(1,1)+gamma*x2(1,1)/L1-gamma*R1*x3(1,1)/L1)-(gamma*beta*x2(1,1)-gamma*beta*R1*x3(1,1)-gamma*R2*x4(1,1)/L2-gamma*x5(1,1)/L2)-(x4(1,1)/c2-x5(1,1)/(Rac*c2)));
u=u(1,1)-k*sign(s);
for i=2:length(t)
uc=u(i-1);
% Solving the differential equation;
[dum,allx]=ode45(@IPT_SMC_function,[t(i-1) t(i)],x0,[],uc);
xx=flipud(allx);
[m1 n1]=size(xx);
x0=xx(1,1:n1);
% Save the state variables and output variables;
x1(i,1)=xx(1,1);
x2(i,1)=xx(1,2);
x3(i,1)=xx(1,3);
x4(i,1)=xx(1,4);
x5(i,1)=xx(1,5);
Pout(i,1)=x5(i,1)^2/Rac;
Pout_avg(i,1)=((i-1)/i)*Pout_avg(i-1,1)+(1/i)*Pout(i,1);
%calculating the tracking error
e(i)=Pref(i)-Pout_avg(i);
s=j*x1(i,1)+x2(i,1)+x3(i,1)+x4(i,1)+x5(i,1);
% Limiting the alpha value between -pi tp +pi
alpha(i)=(e(i)-e(i-1))+alpha(i-1);
if alpha(i)>pi
alpha(i)=pi;
elseif alpha(i)
alpha(i)=-pi;
end
% Generating output; Input voltage to the inverter
u1_1(i,1)=sin((w*t(i))+alpha(i)/2);
u1_2(i,1)=sin((w*t(i))-alpha(i)/2);
if u1_1(i,1)>0
u1_1(i,1)=+Vdc/2;
elseif u1_1(i,1)<0
u1_1(i,1)=-Vdc/2;
end
if u1_2(i,1)>0
u1_2(i,1)=+Vdc/2;
elseif u1_2(i,1)<0
u1_2(i,1)=-Vdc/2;
end
u(i,1)=u1_1(i,1)-u1_2(i,1);
% Saving the variables into 's'
%s=j*x1(i,1)+x2(i,1)+x3(i,1)+x4(i,1)+x5(i,1);
%ds=j*(u(i,1)/Li-x2(i,1)/Li-Ri*x1(i,1)/Li)+(x1(i,1)+x3(i,1))/c1+(-gamma*beta*R2*x4(i,1)-gamma*beta*x5(i,1)+gamma*x2(i,1)/L1-gamma*R1*x3(i,1)/L1)+(gamma*beta*x2(i,1)-gamma*beta*R1*x3(i,1)-gamma*R2*x4(i,1)/L2-gamma*x5(i,1)/L2)+(x4(i,1)/c2-x5(i,1)/(Rac*c2));
%u(i,1)=(Li/j)*(((j*x2(i,1)-j*Ri*x1(i,1))/Li)-((x1(i,1)-x3(i,1))/c1)-(-gamma*beta*R2*x4(i,1)-gamma*beta*x5(i,1)+gamma*x2(i,1)/L1-gamma*R1*x3(i,1)/L1)-(gamma*beta*x2(i,1)-gamma*beta*R1*x3(i,1)-gamma*R2*x4(i,1)/L2-gamma*x5(i,1)/L2)-(x4(i,1)/c2-x5(i,1)/(Rac*c2)))-k*sign(s);
end
figure;
plot(t,Pout_avg,'r',t,Pref,'k','linewidth',1);
xlabel('time(s)');ylabel('Step response');
最后
以上就是无情大地为你收集整理的MATLAB滑膜控制器原理,基于等效控制法的滑模控制器问题,多谢帮忙解答!的全部内容,希望文章能够帮你解决MATLAB滑膜控制器原理,基于等效控制法的滑模控制器问题,多谢帮忙解答!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复