当前位置:首页 > PID调节器参数整定分析
《计算机控制技术》实验指导书
(软件部分)
编写:唐红雨 黄海峰
镇江高等专科学校电子信息系
2007年3月
计算机控制技术实验
目 录
实验一 PID调节器参数整定分析............................. 2 实验二 采样控制系统分析 .................................. 4 实验三 程序判断滤波 ...................................... 5 实验四实验五中值滤波 .......................................... 6 平均值滤波 ........................................ 8
- 1 -
计算机控制技术实验
实验一 PID调节器参数整定分析
一、实验目的
设计MATLAB的M文件,用来实现PID调节器的功能,分析Kp、Kd、Ki三个参数对系统性能的影响。
二、实验步骤
开机执行程序,用鼠标双击图标进入MATLAB命令窗口:Command Windows 新建M-file,然后,输入设计好的程序。 调试,检查错误,然后运行。
观察系统对不同参数的相应曲线,分析其原因。
三、实验要求
1、实验之前,查阅有关资料,编写好相应的程序。 2、认真做好仿真记录
四、实验报告要求
叙述Kp、Kd、Ki三个参数对系统性能的影响。 附程序:
1 % 比例控制
G=tf(10,[1 6 11 6]);P=[0.1:0.1:1];%传递函数,Kp变化范围 for i=1:length(P)
G_c=feedback(P(i)*G,1); %系统反馈 step(G_c),hold on %单位阶跃输入 end
2 % 比例积分控制
G=tf(10,[1 6 11 6]) %系统传递函数
Kp=1;Ti=[0.8:0.2:1.6]; %Kp一定,不同Ti的输入 for i=1:length(Ti)
Gc=tf(Kp*[1,1/Ti(i)],[1,0]); %分别计算不同Ti的系统参数 G_c=feedback(G*Gc,1);
step(G_c),hold on %阶跃响应曲线
3 % 比例、积分、微分控制
G=tf(10,[1 6 11 6]) %系统传递函数
Kp=1;Ti=0.6;Td=[0.1:0.2:2]; %Kp、Ti一定,不同Td的输入 for i=1:length(Td)
Gc=tf(Kp*[Ti*Td(i),Ti,1]/Ti,[1,0]); %分别计算不同Td的系统参数 G_c=feedback(G*Gc,1);step(G_c),hold on %阶跃响应曲线 end
4 %P、PI、PID三种控制策略
G=tf(10,[1 10 35 50 24]); %系统传递函数
- 2 -
计算机控制技术实验
[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
- 3 -
共分享92篇相关文档