APP下载

基于MATLAB GUI 的PID 控制仿真系统设计

2020-09-29梅,王

实验技术与管理 2020年2期
关键词:性能参数阶跃传递函数

陈 梅,王 健

(1. 曲阜师范大学 工学院,山东 日照 276826;2. 山东水利职业学院 经济管理系,山东 日照 276826)

随着计算机技术的发展,越来越多的教学软件为课堂教学和实验教学带来了便利[1-5]。“自动控制原理”课程是自动化、电子信息工程等专业的核心课程[6-10],PID 控制是自动控制原理课程中的重要内容[11-13]。在PID 控制中,各参数的设置直接决定控制系统的性能优劣。为了更好地理解PID 控制对系统性能参数的影响,通过MATLAB GUI 编程实现了控制系统的3 种获取形式:传递函数、零极点及状态控件形式;PID参数的动态调整;以及对应控制系统的单位阶跃响应曲线和系统性能的参数。该演示系统操作方便,可实时更新数据和图形,有助于理解和分析PID 参数对系统的影响。

1 仿真系统总体设计

基于MATLAB GUI 的PID 控制仿真系统包括了“自动控制原理”课程中PID 控制理论和实验教学的4 个主要模块,即控制系统的获取、PID 参数设置、系统动态性能参数的获取、单位阶跃响应曲线的绘制,该仿真系统的主要模块如图1 所示。

图1 仿真系统主要模块

GUIDE 是MATLAB 图形用户接口开发环境[14-15],它提供了一系列工具用于建立GUI 对象,简化了设计和创建的过程。使用GUI 可以完成GUI 图形界面布局和GUI 编程两项工作,对应2 个扩展名分别为“.fig”和“.m”的文件。“.fig”文件用来向界面中添加所需要的控件并设置其属性;“.m”文件通过Callback 回调函数实现控件操作中的相关功能。GUI 设计流程如图2 所示。

图2 GUI 设计流程

2 仿真系统界面设计

根据设计的功能模块,仿真系统的界面主要功能是控制系统设置、显示所绘制的单位阶跃响应曲线、设置PID 参数及动态性能参数。界面设计包括编辑框、滑动条、单选按钮、按钮及坐标轴框、静态文本框等控件。仿真系统主要包括4 个面板,用于对各功能进行分类管理,具体设计如下:

(1)控制系统设置。3 个单选按钮选择数据的形式,9 个编辑框获取控制系统的参数,2 个按钮分别实现不同形式参数的转换和从工作空间获取数据。

(2)单位阶跃响应曲线绘制。2 个按钮选择开环或闭环响应曲线,1 个坐标轴框用来显示图形。

(3)PID 参数设置。3 个滑动条分别调节KP、KI和KD参数,3 个编辑框设置3 个参数的最大值,3 个编辑框显示3 个参数的当前值,6 个静态文本起到提示作用。

(4)动态性能参数。4 个静态文本和4 个编辑框分别用来提示和显示各性能参数。

3 仿真系统的实现

3.1 控制系统设置

控制系统是通过设置系统参数来获取的。控制系统的主要有传递函数、零极点和状态空间3 种形式,分别对应3 种形式的数据设置,数据设置形式的选择是通过单选按钮实现的。传递函数的参数为分子num和分母den 的系数:零极点形式的参数为比例k、零点z 和极点p;状态空间的参数为A、B、C、D。各种形式的参数是以矩阵的形式给出的,不同形式之间可以相互转换。控制系统的描述可以通过直接输入数据和从工作空间获取数据。

3.1.1 直接输入数据

直接输入数据是在选择对应的编辑框中直接输入需要的参数。点击“形式转换”按钮便可显示其他形式的数据。例如,选中“传递函数”单选按钮,输入分子num 和分母den 的系数,点击“形式转换”,即可显示零极点形式和状态空间的参数。“形式转换”按钮主要通过get 和set 函数获取和设置数据;通过str2num 和num2str 函数实现字符串和矩阵间数据的相互转化;通过tf2zp、tf2ss、zp2tf、zp2ss、ss2tf、ss2zp函数实现传递函数、零极点及状态空间不同形式参数间的转化,主要实现语句如下:

%选中“传递函数”单选按钮

if(get(handles.rbtf,'Value'))

%获取num 和den 参数

num=get(handles.editnum,'string');

num=str2num(num);

den=get(handles.editden,'string');

den=str2num(den);

%转换成零极点形式

[z p k]=tf2zp(num,den);

%转换成状态空间

[A B C D]=tf2ss(num,den);

%设置零极点参数z、p、k

z=num2str(z);

set(handles.editz,'string',z);

p=num2str(p);

set(handles.editp,'string',p);

k=num2str(k);

set(handles.editk,'string',k);

%设置状态空间参数A、B、C、D

….

%选中“零极点形式”单选按钮

elseif(get(handles.rbzpk,'Value'))

…..

%选中“状态空间”单选按钮

else

….

end

3.1.2 从状态空间获取数据

为了方便操作,控制系统的参数也可从工作空间获取。该操作是通过“从工作空间获取”按钮实现。数据的获取主要通过evalin 函数实现,传递函数参数从工作空间获取的语句为:

num=evalin('base','num');

den=evalin('base','den') ;

选择“传递函数”单选按钮,在工作空间中输入num=1, den=[1 3 2],点击“从工作空间获取”按钮,便将数据显示到num 和den 后的编辑框中,点击“形式转换”便可显示其他形式的数据。

3.2 单位阶跃响应曲线的绘制

对于控制系统,通常需要绘制单位阶跃响应曲线来反映系统的性能,包括开环系统和闭环负反馈系统的响应曲线,曲线的绘制通过step 函数实现。

设置完控制系统的参数后,点击“开环绘制”按钮,即可显示开环曲线,如图3 所示。点击“闭环负反馈”按钮,即可显示闭环负反馈响应曲线,如图4所示。

图3 开环曲线

图4 闭环负反馈响应曲线

3.3 PID 参数设置

PID 控制由比例、积分和微分组成,其对应的参数分别为KP、KI和KD,其控制规律传递函数描述为:在PID 控制中,3 个参数的设置直接影响系统的性能参数。对每个参数,先设置最大值即取值范围,通过滑动条拖动调节当前值。KP参数的实现代码如下:

%获取Kp 最大值

mkp=get(handles.editmkp,'string');

mkp=str2num(mkp);

%获取滑动条的位置,确定Kp 的值

kp=get(handles.sliderkp,'value')*mkp;

skp=num2str(kp);

set(handles.editkp,'string',skp);

设置控制系统的传递函数 num 为 50,den 为1,20,100,0。在“PID 参数设置”中,在最大值编辑框中设置KP、KI和KD参数的最大值分别为100、1 和1,通过拖动滑动条可以调节3 个参数,并在当前值编辑框中显示各参数的调节值,如图5 所示。

图5 PID 参数调节

3.4 动态性能参数

控制系统动态性能参数主要包括上升时间、调整时间、稳态值及超调量。根据设置的控制系统,在PID参数调节过程中,实时显示动态性能参数,如图5 所示;对应的单位阶跃响应曲线如图6 所示。主要实现代码如下:

%获取PID 控制传递函数

syspid=tf([kd kp ki],[1 0]);

sys1=sys*syspid;

%获取PID 控制反馈系统

sys2=feedback(sys1,1);

%绘制单位阶跃响应曲线

step(sys2)

[y,t]=step(sys2);

[max_y,k]=max(y);

tp=t(k);

%稳态值

C=dcgain(sys2);

set(handles.editss,'string',num2str(C));

max_overshoot=100*(max_y-C)/C;

set(handles.editos,'string',num2str(max_overshoot));

%超调量

r1=1;

while (y(r1)<0.1*C)

r1=r1+1;

end

r2=1;

while (y(r2)<0.9*C)

r2=r2+1;

end

tr=t(r2)-t(r1)%上升时间

set(handles.editrt,'string',num2str(tr));

s=length(t);

while y(s)>0.98*C&&y(s)<1.02*C

s=s-1;

end

ts=t(s)%调整时间

set(handles.editst,'string',num2str(ts));

图6 PID 控制单位阶跃响应曲线

4 结语

通过MATALB GUI 设计实现的PID 控制仿真系统,具有系统参数设置方式多样、PID 参数调节灵活、能动态显示性能参数和阶跃响应曲线的特点。该仿真系统界面简洁、操作方便,可用于“自动控制原理”课程的教学和实验中,从而帮助学生加深理解PID 控制的工作原理和PID 参数对系统动态性能参数的影响,培养学生的研究能力和实践能力。

猜你喜欢

性能参数阶跃传递函数
多尺度土壤入渗特性的变异特征和传递函数构建
长江上游低山丘陵区土壤水分特征曲线传递函数研究
PSS2A模型在水泥余热机组励磁中的实现与应用
安全卸荷减速顶性能参数试验研究
探讨单位阶跃信号的教学
LCSR法响应时间原位测量装置的设计与实现
基于核主成分分析的发动机性能参数评价研究
气动铆钉机性能参数测试系统的研制
无超调不限阶数的M型次多容惯性标准传递函数
晶体管驱动的阶跃二极管大幅度窄脉冲源