retin 发表于 2009-1-7 10:36

滑膜变结构控制matlab仿真 这本书里面一个仿真程序问题

哪位朋友能帮我解释下面我的一个问题嫩?谢谢赐教!
第一部分主代码:
clear all;
close all;
global S A F c alfa beta
xk=;
ts=0.001;
T=1;
TimeSet=;
=ode45('chap2_1eq',TimeSet,xk,[],[]);   %%求解微分方程函数
x1=y(:,1);
x2=y(:,2);   
if S==1
   rin=1.0;
   drin=0;
elseif S==2
   rin=A*sin(F*2*pi*t);
   drin=A*F*2*pi*cos(F*2*pi*t);
end                                 
e1=rin-x1;
e2=drin-x2;
s=c*e1+e2;
for k=1:1:T/ts+1
   u(k)=(alfa*abs(e1(k))+beta*abs(e2(k)))*sign(s(k));
end
下面的画图代码,不写出来了。


第二部分控制子程序:
function dx=PlantModel(t,x,flag,para)
global S A F c alfa beta%%定义全局变量

S=1;                              %%这个S=1的意思选取S=1时候的状态

if S==1
   rin=1.0;
   drin=0;
elseif S==2
   A=0.5;F=3;
   rin=A*sin(F*2*pi*t);
   drin=A*F*2*pi*cos(F*2*pi*t);
end

c=30;                  %%未知变量设置
alfa=500;
beta=10;

e1=rin-x(1);
e2=drin-x(2);
s=c*e1+e2;
u=(alfa*abs(e1)+beta*abs(e2))*sign(s);

dx=zeros(2,1);         %%定义状态方程结构数
dx(1)=x(2);             %%设置系统状态方程
dx(2)=-(25+5*sin(3*2*pi*t))*x(2)+(133+50*sin(1*2*pi*t))*u;


我的问题是:
1蓝色代码部分,为什么第一部分主程序和第二部分控制子程序都需要写出来,难道这个是规定的吗?还有就是第一部分的没有写出   A=0.5;F=3;而第二部分却写明了,这个是为什么嫩;
答:需要写出;A=0.5;F=3写在控制子程序里面,主程序好比是一个未知参数的控制方法的模型(比如simulink里面的一个结构模型,结构模型的具体参数需可以任意设定,要是A=0.5;F=3加在前面主程序,好比simulink里面的一个结构模型被固定了,扩展应用性就受到限制),控制子程序就是一个被控制器,在这里就需要一些确定的参数了。
2红色代码部分,为什么前面和后面也不一样,就是一个是x1,后面却成了x(1)?
答:同样和上面一样,因为主程序要适应大众性,给的仅仅是一个控制结构,而控制子程序才是你所需要控制的部件的状态,所以这里x1和x(1)更本没有关系,你也可以写成x1和xx(1);
3橘黄代码部分,这个定义是什么意思?
答:定义空间输出结构,就是有多少输出,必须指出来(我是这样理解的,不知道对不对)



[ 本帖最后由 retin 于 2009-1-7 16:56 编辑 ]

retin 发表于 2009-1-7 16:47

看样子,没有朋友来回答,下午猛然醒悟,理解了,呵呵~我上面编辑再解释下吧,也可以给别的朋友参考~

ChaChing 发表于 2009-1-7 18:08

早上看过, 刚刚再看一次, 个人还是看不太懂楼主的东东!:@L

飞一会儿 发表于 2013-5-8 10:58

有道理,学习啦。
页: [1]
查看完整版本: 滑膜变结构控制matlab仿真 这本书里面一个仿真程序问题