基于MATLAB GUI的Ziegler-Nichols PID参数整定仿真系统
2020-08-25陈梅,王健
陈 梅, 王 健
(1.曲阜师范大学工学院,山东日照276826;2.山东水利职业学院经济管理系,山东日照276826)
0 引 言
PID控制器的设计是“自动控制原理”课程的重要内容,其应用越来越多[1-3]。PID控制器的参数整定决定了控制系统的性能,其主要整定方法有Ziegler-Nichols整定法、临界比例度法、衰减曲线法[4]等。各种整定方法都有相关的研究及应用[5-7]。本文主要研究Ziegler-Nichols法的PID参数整定。Ziegler-Nichols法是一种基于频域设计PID控制器的方法,该方法是在利用开环系统的单位阶跃响应曲线,得到系统延迟时间、放大系数和时间常数,根据经验公式计算PID参数。
随着计算机及多媒体在教学中的使用,越来越多的教学软件被开发[8-14],为课堂教学和实验带来了便利。Matlab GUI编程提供了Matlab图形用户接口开发对象,简化了设计和创建GUI的过程。Matlab GUI编程主要包括用户界面的创建和M文件的编写。该仿真系统以Matlab作为开发环境,实现了Ziegler-Nichols法PID参数的整定,图形化的界面直观形象地展示了整定过程。
1 Ziegler-Nichols法PID参数整定
Ziegler-Nichols整定法适用对象为带纯延迟的一阶惯性环节,即其开环系统的单位阶跃响应曲线近似是S形曲线,如图1所示。S形曲线的传递函数近似为:
式中:K为比例系数;T为时间常数;τ为延迟时间。其时域响应为:
图1 S形响应曲线
根据被控对象的单位阶跃响应曲线,K、T和τ参数确定方法:
(1)比例系数K为被控对象单位阶跃响应稳定后的幅值。
(2)延迟时间τ为曲线的拐点的切线在t轴上的交点。
(3)时间常数T为曲线的拐点处的切线在幅值为K时对应的t值减去延迟时间τ。
(4)根据K、T和τ值,使用表1中的经验公式[15],即可计算出调节器的各个整定参数值。
Ziegler-Nichols法整定中,K、T和τ参数的确定是关键,通常是通过Simulink仿真获取的。利用Simulink仿真绘制开环系统的单位阶跃响应曲线,根据示波器输出图形来确定3个参数。参数需要在曲线图中根据拐点及切线确定,通过图形分析不好直接得到其值。
表1 Ziegler-Nichols法整定控制器的参数
2 仿真系统的总体设计
为了准确、快速地确定K、T和τ参数,通过Matlab GUI编程[16],实现了Ziegler-Nichols的PID 参数整定系统。该系统实现了控制系统的设置,控制系统的开环和闭环单位阶跃响应曲线,PID整定中间参数K、T和τ获取及图形表示,PID整定参数Kp、Ki及Kd获取及相应单位阶跃响应曲线的绘制。设计过程主要包括fig和M两个文件,fig文件主要实现GUI用户界面的设计,M文件通过Callback函数实现各控件的功能。该仿真系统的功能模块如图2所示。
图2 仿真系统功能模块
3 仿真系统的实现
3.1 仿真系统界面
根据实现的功能,仿真系统界面设计如图3所示,主要包括4部分:
(1)控制系统的获取。2个编辑框中输入传递函数的分子和分母系数向量,2个按钮显示开环、闭环单位阶跃响应曲线。
(2)K、T和τ参数的获取。3个编辑框显示K、T和τ参数值;“z-n整定”按钮用来显示参数获取图形;滑动条用来微调切点。
(3)PID整定参数的获取。3个复选框用来选择显示PID、PI和P控制的图形;6个编辑框用来显示各PID整定的Kp、Ki和Kd参数。
(4)图形显示。1个坐标轴用来显示各种单位阶跃响应曲线。
图3 系统界面
3.2 控制系统的获取
控制系统的获取是输入开环系统传递函数的分子和分母系数向量实现的,如图4所示。
图4 控制系统参数的设置
参数设置后,点击“开环响应曲线”按钮,显示系统的开环单位阶跃响应曲线,如图5所示。该曲线形状满足S形,可用Ziegler-Nichols法整定PID参数。
图5 开环系统单位阶跃响应曲线
点击“闭环响应曲线”按钮,显示系统的闭环单位阶跃响应曲线,如图6所示。由图可知,系统存在稳态误差。
图6 闭环系统单位阶跃响应曲线
主要代码:
% 系统参数获取
num = get(handles.editnum,'string');
num=str2num(num);
den = get(handles.editden,'string');
den=str2num(den);
sys=tf(num,den);
hold off
step(sys);%开环系统单位阶跃响应函数
sys0=feedback(sys,1);%闭环系统单位阶跃响应函数
hold off
step(sys0);
3.3 Ziegler-Nichols参数的获取
Ziegler-Nichols参数包括放大系数K、延迟时间τ及时间常数T,3个参数由开环响应曲线获得。为了更好地表示3个参数的含义,需要画出S曲线的拐点及切线。在图7中,点击“z-n整定”按钮,便显示K、τ及T的值,并在开环单位阶跃响应曲线图中显示拐点及切线,并表示出K、τ及T,如图8所示。
图7 z-n参数的获取
图8 z-n参数求解曲线及参数表示
通过调节滑动条可以实现切点的微调,对应的参数及图形作相应修改。
主要实现代码:
sys= tf(num,den);
K=dcgain(sys)%求K
set(handles.editK,'string',num2str(K));
step(sys);
[y,t]= step(sys);
dy = diff(y);
[my,i]=max(dy)%求拐点位置
i=i+ii
hold on
plot(t(i),y(i),'ro')% 绘制拐点
k = (y(i+1)- y(i))/(t(i+1)- t(i));
t1 = t(1);
y1 = y(i)+ k*(t1 - t(i));
t2 = t(end);
y2 =y(i)+k*(t2 -t(i))
plot([t1 t2],[y1 y2],'g--')% 画切线
yy = linspace(y1,y2,1000);
tt= linspace(t1,t2,1000);
n1=find(yy> =0,1);
Tau=tt(n1) %求Tau
n2=find(yy> =K,1)
T=tt(n2)-Tau %求T
plot([tt(n2)tt(n2)],[y1 y2],'b--')
set(handles.editTau,'string',num2str(Tau));
set(handles.editT,'string',num2str(T));
text(Tau/2,0,'Tau');
text(Tau + T/2,0,'T');
text(tt(n2)/2,K,'K');
3.4 PID整定参数的获取
由K、τ及T值,根据经验公式,系统自动显示PID、PI及P控制对应的控制参数,如图9所示。
图9 PID整定参数
在图9中,选择复选框“PID控制”“PI控制”及“P控制”,便显示对应图形,如图10所示。由图可见,PID控制效果最好,PI控制超调量大,调节时间长,P控制的稳态值较小。
图10 PID控制单位阶跃响应曲线
主要实现代码:
%Kp、Ki和Kd求解
a=K*Tau/T;
Kp1 =1.2/a;
Ti1 =2.2*Tau;
Ki1 = Kp1/Ti1;
Td1 =0.5*Tau;
Kd1=Kp1*Td1;
Kp2 =0.9/a;
Ti2 = Tau/0.3;
Ki2 =Kp2/Ti2;
Kp3 =1/a;
%pid控制
sys= tf(num,den);
sys10 = tf([Kd1,Kp1,Ki1],[1 0]);
step(feedback(sys10*sys,1));
%pi控制
sys20 = tf([Kp2,Ki2],[1 0]);
step(feedback(sys20*sys,1));
%p控制
step(feedback(Kp3*sys,1));
4 结 语
针对Ziegler-Nichols法PID参数整定中,K、T和τ参数不容易直接获取,通过Matlab GUI界面编程实现了Ziegler-Nichols PID参数整定的仿真系统。该仿真系统具有K、T和τ参数的显示及图形表示,PID整定参数的获取及单位阶跃响应曲线的显示等功能,获取参数快速、直观、准确。图形化的界面使该仿真软件操作方便,节省了参数的确定和计算的时间。该仿真软件可用于“自动控制原理”课程的课堂教学和实验,有助于学生更好地理解Ziegler-Nichols法PID参数的整定过程,提高学生的分析问题和设计能力。
·名人名言·
只有严格的专业化能使学者在某一时刻,大概也是他一生中唯一的时刻,相信自己取得了一项真正能够传至久远的成就。今天,任何真正明确而有价值的成就,肯定也是一项专业成就。
——马克斯·韦伯