王曉慧, 初 航, 朱光苗, 孫孟暉,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圖比較
自動控制原理虛擬實驗教學平臺將抽象的自動控制理論形象化、可視化,且便于交互,能激發學生的學習興趣。該平臺應用于自動控制原理課程實驗,學生可以隨時隨地進行仿真實驗,沒有硬件損耗問題,有助于培養學生用實驗手段解決控制理論理解問題。平臺的綜合實驗部分來源于典型工程控制實例,能夠幫助學生建立工程意識,有助于提高教學質量。