王晓慧, 初 航, 朱光苗, 孙孟晖,2
(1. 青岛大学 应用技术学院, 山东 青岛 266101;2. 昆山巨林科教实业有限公司, 江苏 昆山 215313)
自动控制原理课程是高等学校自动化专业的核心专业课程。该课程包含控制系统分析和系统设计的基本理论,特点是综合性强、概念抽象、不易理解[1-2]。实验教学是加深学生对理论知识的理解、培养学生工程实践能力的重要教学环节[3]。传统的自动控制原理实验一般采用实验箱进行模拟实验,验证基础理论知识。采用实验箱进行实验的主要问题是实验资源紧张、实验场地设备不足、实验和理论课程教学进度不同步、巩固理论知识的效果不尽如人意。学生在实验中按图接线,更改参数不够灵活[1],不易理解参数值与系统响应的关系。
虚拟实验教学平台突破了传统实验对时间、空间的限制,能够满足理论教学与实验教学同步的要求,具有增加新实验方便、人机交互性好、实验仿真直观等优点,因而受到高校的普遍重视,加强了对于仿真平台研究、开发与建设[4-8]。笔者根据自动控制实验教学内容的要求,重新设计了基于Matlab和LabWindows CVI的自动控制虚拟实验平台,以提高该实验课程的教学质量。
National Instruments公司开发的交互式C语言开发平台LabWindows CVI功能强大、使用灵活,适合用于界面设计和数据采集编程,但在控制算法的实现方面较为薄弱,限制了应用程序的快速开发[4];而Matlab具有强大的数学运算能力和图形表示功能[9],并具有丰富的工具箱,是控制系统分析设计的首选工具,但是其数据输入和文字界面开发比较繁琐。综合以上两种软件的优缺点,笔者采用MatlabGUI和LabWindows CVI编程软件相嵌套的方法,开发设计了自动控制虚拟实验平台。该实验平台对学生免费开放共享,与课程内容同步使用,加深学生对理论知识的理解,实现自动控制原理课程的辅助学习。
如图1所示,自动控制虚拟实验平台由基础实验、综合实验2大部分的8个实验组成。基础实验侧重于基本理论和基本设计方法,培养学生的系统分析能力;综合实验侧重于系统设计和控制策略研究。
图1 虚拟实验教学平台功能结构图
(1) 线性系统时域分析实验。要求学生了解二阶系统欠阻尼、临界阻尼、过阻尼的阶跃响应曲线,掌握二阶欠阻尼系统的动态性能指标计算方法,能分析二阶系统的特征参量ξ和wn对过渡过程的影响。
(2) 线性系统频域分析实验。要求学生了解利用传递函数绘制Bode图和Nyquist图的方法,学习计算相位裕度和幅值裕度,掌握利用Bode图和Nyquist图分析控制系统性能的频域分析方法。
(3) 典型环节特性分析实验。要求学生掌握比例环节、积分环节、惯性环节、一阶微分环节、振荡环节、延迟环节的频率特性,通过观察典型环节的Nyquist曲线和Bode图,分析参数变化对典型环节频率特性影响。
(4) 线性系统的根轨迹分析。要求学生熟悉根轨迹绘制方法,掌握控制系统的根轨迹分析方法。
(5) 线性系统校正实验。要求学生掌握串联超前校正和串联滞后校正设计方法,能够根据仿真结果验证校正装置设计的准确性。
(6) 倒立摆控制方法研究实验。提供PID、线性二次型和极点配置等3种控制方式,观察不同控制方式下一级倒立摆偏转角度变化曲线和一级倒立摆小车位移变化曲线,分析控制系统的稳定性、快速性、准确性,研究控制策略的优劣。
(7) PI、PID控制方法研究。以具有滞后、非线性、耦合性的三容水箱为研究对象,进行线性系统分析设计,建立数学模型,进行PID参数整定,研究PID参数变化对系统的影响。
(8) 仿生眼的模拟实验。模拟仿生眼的单目运动、双目运动、头眼协调运动,学习控制算法的编写,从简单到复杂地设计控制系统。
串联校正是控制系统常见的校正方法之一。控制系统串联校正的思路是:根据规定的系统参数要求,设计串联校正装置,对原系统特性加以校正,使之达到要求的性能指标[10]。
在自动控制原理虚拟实验教学平台的主界面,点击“线性系统的校正”按钮,进入该实验辅助学习界面。辅助学习界面包含实验目的、实验内容、实验步骤和实验分析4个标签页,帮助使用者熟悉实验的基本操作、了解实验原理、进行实验预习。辅助学习界面是由LabWindows CVI软件编写,通过Matlab和LabWindows CVI的封装功能,生成可执行文件(.exe)后,执行调用语句。调用语言是system语句。主界面上“实验五 线性系统的校正”按钮功能是由CVI软件调用Matalb中 执行文件程序,实现Matlab和LabWindows CVI的交互,其回调函数如下:
#include
#include
#include
#include ″START.h″
#include ″toolbox.h″
#include
int CVICALLBACK panelCB (int panel, int event, void *callbackData, int eventData1, int eventData2)
{
if (event == EVENT_CLOSE)
QuitUserInterface (0);
return 0;
}
int CVICALLBACK ONE (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
system(″.\线性系统的校正.exe″);
\调用Matlab中线性系统的校正可执行文件。
break;
}
return 0;
}
以“线性系统的校正实验”为例说明自动控制虚拟实验平台的设计过程。该实验的设计步骤是:
(1) 明确实验目的,理解实验原理,编写实验内容,设计实验界面;
(2) 打开Matlab/GUI界面,添加控件,调整控件位置,合理布局[11];设置控件属性,编辑控件的回调函数,完成各个控件的功能;
(3) 运行调试程序,生成可执行文件。
根据实验内容设计实验界面,如图2所示。该界面主要功能是仿真模型初始参数设定、校正算法调用、仿真结果输出和仿真曲线绘制。
图2 线性系统的校正实验界面
2.2.1 初始参数设定
校正方法的选择与参数输入区域主要用来输入校正前系统的开环传递函数、校正后系统的期望相位裕度、相角滞后补偿量,并在系统提供的超前校正、滞后校正中选择校正方法。初始参数的设定使用文本框edit,用户输入初始参数,便以字符格式确定该控件的string值,由Matlab中的str2num函数将字符串转化为数据[12],实现校正前系统传递函数模型的参数、期望相位裕度、相角滞后量补偿的赋值。
num=str2num(get(handles.edit1,′string′))
den=str2num(get(handles.edit2,′string′))
d1=str2num(get(handles.edit3,′string′))
d2=str2num(get(handles.edit4,′string′))
2.2.2 校正算法调用
校正方法选择的下拉条控件是实现校正功能的关键,其超前校正回调函数为:
num=str2num(get(handles.edit3,′string′));
%校正前系统分子多项式系数
den=str2num(get(handles.edit4,′string′)) ;
% 校正前系统分母多项式系数
[gm,pm,wcg,wcp]=margin(num,den);
%求校正前的相位稳定裕度pm
dpm=d1-pm+d2;
%d1期望的相位裕度,d2为相角滞后补偿量
phi=dpm*pi/180;
a=(1+sin(phi))/(1-sin(phi));
mm=-10*log10(a);
[mu,pu,w]=bode(num,den);
mu_db=20*log10(mu);
wc=spline(mu_db,w,mm)
T=1/(wc*sqrt(a));
p=a*T;
nk=[p,1];%校正装置分子多项式系数
dk=[T,1];% %校正装置分母多项式系数
gc=tf(nk,dk);%校正装置传递函数
nk=num2str(p);
dk=num2str(T);
h=tf(num,den);%校正前系统传递函数
g=h*gc;%校正后系统传递函数
[gm1,pm1,wcg1,wcp1]=margin(g);
%求取校正后系统的相位裕度pm1
2.2.3 仿真结果输出
显示校正前和校正后相位稳定裕度,输出校正装置的传递函数。若校正后系统的相位稳定裕度不满足规定要求,则调整相角的滞后补偿量,重现进行校正。校正结束后,校正前、后的相位相位裕度和校正装置的传递函数,传递到GUI的edit编辑框中:
set(handles.edit5,′string′,pm);
%输出校正前的相位稳定裕度
set(handles.edit6,′string′,pm1);
%输出校正后系统的相位裕度
set(handles.edit7,′string′,nk);
%输出校正装置的分子多项式参数
set(handles.edit8,′string′,dk);
%输出校正装置的分母多项式参数
2.2.4 仿真曲线绘制
绘制校正前、后系统的Bode图,用于比较分析控制系统的性能。添加坐标轴控件axe,用bode函数在坐标轴回调函数中完成曲线的绘制:
axes(handles.axes1); bode(num, den); grid;
axes(handles.axes2); bode(g); grid;
2.2.5 程序运行提示
提示校正成功或校正过程出现的错误。在按钮控件的回调函数中比较校正后相位裕度pm1和期望相位稳定裕度d1。若pm1大于等于期望的相位裕度,在按钮控件上提示文字“超前(滞后)校正成功”,同时按钮控件显示绿色;若pm1小于期望相位裕度,按钮控件变为洋红色,并提示“超前矫正完成,但距离目标值较大”;若参数输入错误,也会有相应的出错提示。程序运行提示的实现部分程序如下:
if pm1≥d1 set(handles.edit12,′BackgroundColor′,′green′)
set(handles.edit12,′string′,′超前校正成功′);
else
set(handles.edit12,′BackgroundColor′,′magenta′)
set(handles.edit12,′string′,′超前矫正完成,但距离目标值较大′);
end
编译、调试、运行实验界面,生成实验可执行文件“线性系统的校正.exe”。
根据系统静态误差的要求,选开环增益K>10。选取K=12,在“校正前系统开环传递函数”分子多项式num项输入[12],分母多项式den输入[1,1,0],输入校正前系统开环传递函数。期望相位稳定裕度输入45°,相角滞后量补偿设置为5°。选择校正方式后,系统开始校正。
若选择“超前校正”方式,仿真后得到超前校正后的相位裕度是45.6°,校正装置的传递函数为
图3所示为超前校正前、后系统的Bode图。系统运行提示呈绿色,显示“校正成功”。
图3 超前校正系统前后Bode图比较
自动控制原理虚拟实验教学平台将抽象的自动控制理论形象化、可视化,且便于交互,能激发学生的学习兴趣。该平台应用于自动控制原理课程实验,学生可以随时随地进行仿真实验,没有硬件损耗问题,有助于培养学生用实验手段解决控制理论理解问题。平台的综合实验部分来源于典型工程控制实例,能够帮助学生建立工程意识,有助于提高教学质量。