基于MATLAB平台的工程控制仿真系统开发
2022-01-11张雅娴
唐 柳,张雅娴
(1.贵阳职业技术学院,贵州 贵阳 550081;2.贵州交通职业技术学院,贵州 贵阳 551400)
0 引言
工程控制原理课程是机械类专业学生的必修课程,本课程理论性较强,知识点难于理解,需要配套相应完善的实验环节加强学生的实践知识。受实验设备及场地的限制,我系所开设的操作性实验尚不能满足课程实验要求。从增强本课程理论认识的角度,希望通过开发相应的控制仿真实验交互系统,加强学生的实践认识,并能提升教学效果。
1 交互系统设计
1.1 界面设计
MATLAB拥有图形用户编辑能力(GUI),也就是MATLAB中的Visual Basic,可以使MATLAB程序的终端用户轻易操作该程序,而这和本次的仿真实验的目的要求相吻合,可以利用GUI来实现工程控制系统建模的仿真。
拖动GUI中的控件到方格主界面进行编辑和布局,并能通过属性查看器修改控件的属性,最终完成本次仿真的主界面设计。
为了方便学生和用户更好地应用此系统,主界面的风格设计简洁实用,整个界面就是一个典型的工程控制反馈系统框图(图1)。
图1 主界面
用户可以手动输入系统传函,不论是开环还是闭环,想用MATLAB实现这一功能,需要在GUI里建立几个编辑文本框(Edit Text),以及一个普通按钮(Pushbutton),在编辑文本框内输入系统传函的系数或者零极点,然后点击这个按钮,系统就会提取编辑文本框里的东西,然后再通过一些命令把它变成传递函数,并将它显示出来。
按照以上的构思,需要在普通按钮(Pushbutton)对应的m文件里的Callback里输入相应的代码。
1.2 生成数学模型
在“应用”按钮(Pushbutton)的Callback下键入如下的代码,便可实现用户想要实现的功能。
global num den sel;
num=str2num(get(handles.fenzi,'string'));
den=str2num(get(handles.fenmu,'string'));
sys=tf(num,den);
set(handles.text6,'string',evalc('sys'));
sel=get(hObject,'Value');
Value=1;
首先将num、den和sel定义为全球变量,方便在不同的子文件中提取应用,num和den分别为编辑文本框里的字符串(传函系数)中输入的分子和分母系数,sel是下拉菜单的一个变量。
.fenzi和.fenmu则是两个编辑文本框的tag,提取各式为“string”,用MATLAB里自带的函数语句“tf”,可以把提取出来的num和den转换为系统传函,再用set语句配合evalc(‘sys’),可以把传函显示在tag为text6的静态文本框里,最后设置下拉菜单value值为1。
2 时域分析功能实现
2.1 阶跃响应
利用定位回调函数的方法找到阶跃响应的callback,开始编写代码:figure(‘NumberTitle’,‘off’,‘Name’,‘阶跃响应’); 意思是点击菜单栏里的阶跃响应后会跳出一个figure窗口,窗口名字叫阶跃响应。
然后再将要用到的变量用global唤出,方便接下来的使用,因为时域分析一般都是针对闭环传函,所以还是要用feedback将sys转换成闭环传函,并赋值予G,再用MATLAB自带的step函数便可在figure里画出系统的阶跃响应曲线,假设一控制系统,H(s)=1,运行后得到的曲线图像如图2。
图2 阶跃响应曲线
为了更完整的分析,要求显示图像的同时显示出其性能指标,所以要用GUI新建一个fig文件,在里面拖入一些静态文本框,调整好位置,这些特征量包括超调量、延迟时间、上升时间、峰值时间和调整时间。
在性能指标的子编程文件里写好相应的代码,保存名为“xnzb.m”。返回主编程文件,也就是“zhujiemian.m”的阶跃响应的callback里写入:“run xnzb”。这样,点击阶跃响应按钮后便会跳出除响应曲线以外的第二个窗口,性能指标分析如图3所示。
图3 性能指标
2.2 脉冲响应
和阶跃响应的编码相仿,也是先建立一个figure,用global提取有用的变量,用feedback将系统转换成闭环的,最后用impulse命令画出脉冲响应的曲线,仍采用前述系统模型,得到的曲线图像如图4。
图4 脉冲响应曲线
3 结论
可以用两种输入方式建立起系统的传递函数,一个实际的系统,一旦建立起数学模型,就可以采用适当的方法对其性能进行全面的分析和计算,本次仿真实验从时域方面采用了包含阶跃响应和脉冲响应的分析方法,既能得到性能指标的数值,也能生成相应的图像供读者分析。