资源描述
PID调节器参数整定分析
———————————————————————————————— 作者:
———————————————————————————————— 日期:
3
个人收集整理 勿做商业用途
《计算机控制技术》实验指导书
(软件部分)
编写:唐红雨 黄海峰
镇江高等专科学校电子信息系
2007年3月
目 录
实验一 PID调节器参数整定分析 2
实验二 采样控制系统分析 4
实验三 程序判断滤波 5
实验四 中值滤波 6
实验五 平均值滤波 8
实验一 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]); %系统传递函数
[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
实验二 采样控制系统分析
一、实验目的
考察连续时间系统的采样控制中,零阶保持器的作用与采样时间间隔对Ts对系统稳定性的影响
二、实验步骤
开机执行程序,用鼠标双击图标,进入MATLAB命令窗口:Command Windows
在Command Windows窗口中输入:simulink,进入仿真界面,并新建Model文件
在Model界面中构造连续时间系统的结构图。作时域仿真并确定系统时域性能指标.
带零阶保持器的采样控制系统如下图所示。作时域仿真,调整采样间隔时间Ts,观察对系统稳定性的影响.
三、实验要求
(1)按照结构图程序设计好模型图,完成时域仿真的结构图
(2)认真做好时域仿真记录
四、实验报告要求
(1)叙述零阶保持器的作用
(2)讨论采样时间间隔Ts对系统的影响。
附:step模块在sources库中
sum模块在math operations库中
scope模块在sinks库中
transfer fcn模块在continuous库中
zero-order hold模块在discrete库中
实验三 程序判断滤波
一、实验目的
1、 掌握数字滤波中程序判断滤波的设计思路和单片机程序实现方法;
2、 学会使用51汇编集成开发环境调试程序判断滤波;
3、 学会使用保护现场、恢复现场的方法。
二、实验内容
采样的信号如果因传感器不稳定而引起严重失真时,可以采用程序判断滤波。方法是:根据经验确定两次采样允许的最大偏差△y,若两次采样信号的差值大于△y,表明输入的是干扰信号,应该去掉,用上次采样值作为本次采样值.若小于或等于△y,则表明没有受到干扰,本次采样值有效。
例如,当前采样值存30H,上次采样值存31H,结果存32H.△y根据经验确定,本例设为03H,程序框图如图1所示.
程序清单:
ORG 0050H
PUSH ACC ;保护现场
PUSH PSW
MOV 30H,#33H
MOV 31H,#31H
MOV A,30H ;Yn→A
CLR C
SUBB A,31H ;求Yn-Yn—1
JNC LP0 ;Yn-Yn-1≥0吗?
CPL A
ADD A,#01H
LP0:CLR C
CJNE A,#01H,LP2;Yn-Yn—1>△y?
LP1:MOV 32H,30H;等于△y,本次采样值有效
AJMP LP3
LP2:JC LP1 ;小于△y,转本采样值有效
MOV 32H,31H ;大于△y, Yn-1→32H
LP3:POP PSW ;恢复现场
POP ACC
只有当本次采样值小于上次采样值才进行求补,保证本次采样值有效。
在调试过程中,分别对30H、31H置入数值,让两者差值分别大于、等于、小于△y,注意观察32H中数值的变化,以及程序的跳转情况.
实验四 中值滤波
一、实验目的
1、掌握数字滤波中中值滤波的设计思路和单片机程序实现方法;
2、学会使用51汇编集成开发环境调试中值滤波;
3、学会使用保护现场、恢复现场的方法。
二、实验内容
中值滤波就是连续输入3个检测信号,从中选择一个中间值作为有效信号。本例第一次采集的数据存R1,第二次采集的数据存R2,第三次采集的数据存R3,中间值存R0。程序清单如下:
ORG 0050H
MOV R1,#11H
MOV R2,#12H
MOV R3,#13H
PUSH PSW ;保护PSW、A
PUSH A
MOV A,R1 ;第1次采集的数据送A
CLR C
SUBB A,R2;
JNC LOB01 ;第1次采集数大于第2次采集数?
MOV A,R1
XCH A,R2 ;第1、2次采集数互换
MOV R1,A
LOB01: MOV A,R3
CLR C
SUBB A,R1
JNC LOB03 ;第3次采集数大于第1次采集数?
MOV A,R3
CLR C
SUBB A,R2
JNC LOB04 ;第3次采集数大于第2次采集数则转
MOV 32H,A
LOB02: POP A ;恢复现场
POP PSW
RET
LOB03: MOV A,R1
MOV 32H,A
AJMP LOB02
LOB04: MOV A,R3
MOV 32H,A
AJMP LOB02
END
调试过程中,首先分别对R1、R2、R3三个寄存器赋值,例如(R1)=24H,(R2)=30H,(R3)=2CH,程序运行结束后,(R0)=
重新对R1、R2、R3三个寄存器赋值,观察R0中数值的变化.
(R0)=
注:带下划线的数据可以自行改变。
实验五 平均值滤波
一、实验目的
1、掌握数字滤波中均值滤波的设计思路和单片机程序实现方法;
2、学会使用51汇编集成开发环境调试中值滤波;
3、学会使用保护现场、恢复现场的方法.
二、实验内容
均值滤波就是连续监测8个数据,分别放在30H—37H中,首先求出8个数的和,放在R6中,在求出平均值时,采用的方法是移位法,即对和向右移动3次,得到均值。此种方法适用于采样个数为2的幂次方,最后求出的均值放在38H单元.程序清单如下:
ORG 0050H
MOV A, #88H
MOV 30H, #12H
MOV 31H, #22H
MOV 32H, #42H
MOV 33H, #52H
MOV 34H, #11H
MOV 35H, #21H
MOV 36H, #32H
MOV 37H, #04H
PUSH PSW ;现场保护
PUSH A
MOV 7FH, #00H ;进位位清零,7FH单元存放进位
MOV R0, #30H ;设置数据存储区首址
MOV R7, #08H ;设置采样数据个数
CLR A ;清累加器
LOOP: ADD A,@R0 ;两数相加
JNC NEXT ;无进位,转NEXT
INC 7FH ;有进位,进位位加1
NEXT: INC R0 ;数据指针加1
DJNZ R7, LOOP ;未加完,继续加
MOV R7, #03H ;设置循环次数
DIVIDE: MOV R6, A ;保存累加器中的内容,R6暂存数据
MOV A, 7FH ;累加结果除2
CLR C
RRC A
MOV 7FH, A
MOV A, R6
RRC A
DJNZ R7, DIVIDE ;未结束,继续执行
MOV 38H, A ;保存结果至38H中
POP A ;恢复现场
POP PSW
RET
END
注:带下划线的数据可以自行改变.
调试过程中,首先分别对30H-37H 单元赋值,具体数值见程序,程序运行结束后,(R6)= (38H)= (7FH)=
重新对30H—37H 单元赋值,观察(R6)= ,(38H)= ,(7FH)=
数值的变化.
- 9 -
展开阅读全文