Matlab 版 (精华区)

发信人: zjliu (秋天的萝卜), 信区: Matlab
标  题: [合集]关于simulink 中的PID调节器的选择
发信站: 哈工大紫丁香 (2003年05月16日16:41:24 星期五), 站内信件


────────────────────────────────────────
 zmq (zmq)                            于 Thu Apr 17 23:08:54 2003) 说道:




各位大虾:你们好!最近遇到一个问题,百思不得其解。特向高手们请教!
    我的控制对象是一个连续的,可以写出它的传递函数!现在要对它进行
 PID调节,那么在simulink中进行仿真,PID模块是选择离散的,还是连续的???为什么
???????着急,请大虾帮帮忙!!十分感谢!

────────────────────────────────────────
 zwren (蓝天@红云)                    于 Fri Apr 18 08:32:21 2003) 说道:

我想应选择连续的PID模块,在Simulink Extras下面的Additional Linear里有
连续PID controller模块!




────────────────────────────────────────
 zmq (zmq)                            于 Fri Apr 18 13:17:43 2003) 说道:





────────────────────────────────────────
 zmq (zmq)                            于 Fri Apr 18 13:20:36 2003) 说道:


,是不是应该用采样保持器把偏差离散化,再用数字pid模块算出结果,再用零阶保持器转
换成连续量去控制连续的被控对象呀?可是simulink里那里有采样保持器?或者是能代替的
开关
,而且 pid参数是怎么整定的,在连续系统里整定的参数能用在数字pid里吗?临界稳定法
适用吗?  很着急呀!!!!请一定帮帮忙,多谢多谢!!!!!




────────────────────────────────────────
 zwren (蓝天@红云)                    于 Fri Apr 18 14:37:00 2003) 说道:

那是否可以编写一段扩展名.m的程序,运行程序进行仿真.
我这儿有一段程序,用PID控制,采用龙格-库塔算法,对象20/1.6s*s+4.4s+1,
有延迟exp(0.02s),输出带有死区,并且限幅,采样周期0.01秒.你自己看看程序
,然后对你的控制对象进行仿真.
num=20;
den=[1.6,4.4,1];
[a1,b,c,d]=tf2ss(num,den);
x=[0;0];
T=0.01;h=T;
umin=0.07;
umax=0.7;
td=0.02;Nd=td/T;
N=500;R=1.5*ones(1,N);
e=0;de=0;ie=0;
kp=5;ki=0.1;kd=0.001;
for k=1:N
    uu1(1,k)=-(kp*e+ki*de+kd*ie);
    if k<=Nd
    u=0;
else
    u=uu1(1,k-Nd);
end
if abs(u)<=umin
    u=0;
elseif abs(u)>umax
    u=sign(u)*umax;
end
k0=a1*x+b*u;
k1=a1*(x+h*k0/2)+b*u;
k2=a1*(x+h*k1/2)+b*u;
k3=a1*(x+h*k2)+b*u;
x=x+(k0+2*k1+2*k2+k3)*h/6;
y=c*x+d*u;
e1=e;
e=y-R(1,k);
de=(e-e1)/T;
ie=e*T+ie;
yy1(1,k)=y;
end
kk=[1:N]*T;
figure(1);
plot(kk,R,'K',kk,yy1,'b');
xlabel('time(0.01)');
ylabel('output');



 


────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.068毫秒