P,PI D控制系统仿真设计的例子

源代码在线查看: p、pi、pid control files.m

软件大小: 2 K
上传用户: pj117
关键词: PI 控制系统 仿真设计
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				%P、PI、PID三种控制策略
				
				
				G=tf(10,[1 10 35 50 24]);                               %系统传递函数
				[Kc,pp,wg,wp]=margin(G);Tc=2*pi/wg;     %计算系统开环增益和剪切频率
				[Gc1,Kp1]=ziegler(1,[Kc,Tc,10]);Gc1     %调用自定义ziegler函数,P控制
				[Gc2,Kp2,Ti2]=ziegler(2,[Kc,Tc,10]);Gc2            %PI控制
				[Gc3,Kp3,Ti3,Td3]=ziegler(3,[Kc,Tc,10]);Gc3       %PID控制
				G_c1=feedback(G*Gc1,1);step(G_c1);hold on        % P控制,阶跃响应曲线
				G_c2=feedback(G*Gc2,1);step(G_c2);              %PI控制,阶跃响应曲线
				G_c3=feedback(G*Gc3,1);step(G_c3);  
				
				% 其中ziegler( )函数如下:
				function [Gc,Kp,Ti,Td,H]=ziegler(key,vars)
				Ti=[ ]; Td=[ ]; H=[ ];
				if length(vars)==4, 
				   K=vars(1); L=vars(2); 
				   T=vars(3); N=vars(4); a=K*L/T; 
				   if key==1,  Kp=1/a;     %P控制器
				   elseif key==2, Kp=0.9/a; Ti=3.33*L;   %PI控制器
				   elseif key==3    %PID控制器
				      Kp=1.2/a; Ti=2*L; Td=L/2; 
				   end
				elseif length(vars)==3, 
				   K=vars(1); Tc=vars(2); N=vars(3);
				   if key==1, Kp=0.5*K; 
				   elseif key==2, Kp=0.4*K; Ti=0.8*Tc; 
				   elseif key==3 
				      Kp=0.6*K; Ti=0.5*Tc; Td=0.12*Tc; 
				   end
				elseif length(vars)==5, 
				   K=vars(1); Tc=vars(2); 
				   rb=vars(3); pb=pi*vars(4)/180; 
				   N=vars(5); Kp=K*rb*cos(pb); 
				   if key==2, 
				      Ti=-Tc/(2*pi*tan(pb)); 
				   elseif key==3
				      Ti=Tc*(1+sin(pb))/(pi*cos(pb)); 
				      Td=Ti/4;
				   end
				end
				switch key
				   case 1, Gc=Kp;
				   case 2, Gc=tf(Kp*[Ti,1],[Ti,0]);
				   case 3
				      nn=[Kp*Ti*Td*(N+1)/N, Kp*(Ti+Td/N), Kp];
				dd=Ti*[Td/N,1,0]; Gc=tf(nn,dd);
				end
							

相关资源