鄭 勇 趙婷婷 胡長斌 瞿 浩
(北方工業大學 電氣與控制工程學院, 北京 100144)
在自動化及相關專業的課程建設工作中,實踐教學效果如何很受重視,其中,虛擬仿真實驗教學內容的建設是一個重要環節,特別是對疫情期間的線上教學來說,更能發揮其獨特的作用。
Matlab是國際上流行的動態系統建模仿真工具,廣泛應用于控制工程設計和控制理論教學等諸多領域,其強大的圖形建模功能極大地提高了仿真應用的開發效率。但Simulink自身不支持實時仿真,從配合目前常用的半實物仿真式實驗教學的角度來說,也缺少一些“所見即所得”式的人機界面設計功能。為此,我們開發了一套基于C#的控制理論課程虛擬仿真實驗教學軟件,這套軟件可以與實驗室所開發的實驗教學設備無縫對接,該軟件具備易于快速更改實驗方案、控制算法及參數等優點,真正實現了“所見即所得”,具有較高的實用價值。
該平臺可將“計算機軟件開發”“控制系統仿真”“自控原理”“計算機控制”“現代控制理論”等課程的教學內容有機結合,在學習的廣度、深度方面形成對課程教學的有效補充,并可延伸至畢業設計等階段作為開放學習平臺繼續發揮作用。
虛擬仿真軟件開發的核心內容是將連續控制系統用計算機語言(差分方程)進行離散化仿真,連續系統的數字仿真主要方法有數值積分法和離散相似法,該項軟件開發采用的是離散相似法,在此首先對涉及到的一些離散化實現方法進行必要的討論。
以一階慣性系統
(1)
仿真步長均為10 ms為例:
1)采用一階前向差分方法(T=10 ms)

(2)
展開為:
0.2zX(z)-0.19X(z)=0.02U(z)
(3)
轉化為差分方程形式為:
x(k+1)=0.95x(k)+0.1u(k)
(4)
2)采用一階后向差分方法(T=10 ms)

(5)
展開為:
21X(z)-20z-1X(z)=2U(z)
(6)
轉化為差分方程形式為:
21x(k+1)-20x(k)=2u(k+1)
(7)
x(k+1)=0.95238x(k)+0.095238u(k+1)
(8)
3)采用雙線性變換方法(T=10 ms)

(9)
展開為:
41zx(z)-39x(z)=2zu(z)+2u(z)
(10)
轉化為差分方程形式為:
41x(k+1)-39x(k)=2u(k+1)+2u(k)
(11)
x(k+1)=0.95122x(k)+0.04878u(k+1)+0.04878u(k)
(12)
4)采用Matlab中的c2d函數方法(T=10 ms)
num=[2];
den=[0.2 1];
sys=tf(num,den)
sys_d=c2d(sys,0.01)
(13)
展開為:
zx(z)-0.9512x(z)=0.09754u(z)
(14)
轉化為差分方程形式為:
x(k+1)=0.9512x(k)+0.09754u(k)
(15)
幾種不同離散化方法的誤差對比:
其實際階躍響應輸出為:
(16)
如圖1、表1所示,是不同離散化方法的結果與誤差對比。

表1 不同離散化方法的誤差對比

圖1 不同離散化方法的誤差對比
結論:在以上幾種離散化方法中,Matlab中的c2d函數方法具有相對較高的精確度且較容易以差分方程的方式實現。
以公式(1)所表示的一階慣性系統為例,研究采用c2d方法時不同仿真步長對仿真精度的影響,如表2所示。

表2 c2d方法采用5 ms仿真步長對仿真精度的影響
結論:仿真步長越小精度越高,但步長太小,即使不計舍入誤差,也會使得仿真計算量增大,計算時間增長,本系統選用5 ms仿真步長,已能滿足計算精度要求。
如圖2所示的三階系統穩定性實驗為例,研究不同的離散化位置對仿真精度的影響。

(a)三階系統

(b)整體離散化

(c)前向通道離散化

(d) 各環節均離散化圖2 三階系統及不同離散化位置示意圖
系統中,T0=0.1,T1=0.5,K1=1,K2=1圖3與表3為不同的離散化位置對仿真精度的影響。

表3 幾種不同離散化位置仿真誤差對比

圖3 不同的離散化位置對仿真精度的影響
結論:整體離散化結果最精確,各環節均離散化有利于仿真實現,且仿真誤差在可接受范圍內,故本系統采用各環節均離散化仿真實現方案。
根據參考文獻并結合實例驗證,采用1.1中所述的Matlab中的c2d函數,其仿真效果相當于一階后向差分零階保持器后再加上一個超前補償裝置,以抵消零階保持器的滯后影響[1-2]。
超前補償裝置數學表達式為:
c=λerTs
(17)
通常取λ=1,為幅值補償;γ=1,為相位補償。
由此推導出:
x(k+1)=x(k)+kiTu(k)
(18)
(19)
(3)微分環節kds的差分方程表達式為:
(20)
對于絕大多數的控制系統,都可以化成規范化方框圖的描述形式,在規范化方框圖中,僅含有比例、積分、微分、慣性等環節,在仿真程序設計中,可以做成相應的子函數進行調用。
(21)
C#是一種面向對象的編程語言,對于開發控制理論虛擬仿真軟件而言,其相較于Matlab GUI等其他開發手段主要有以下優勢:
(1)使用Matlab GUI開發的虛擬仿真軟件需要電腦搭載Matlab軟件或者MCR運行環境,較為繁瑣;
(2)C#編程語言的控件種類和數量相較于Matlab GUI更多,且有著豐富的第三方資源庫,使用C#語言開發控制理論虛擬仿真軟件具有更好的實用性、靈活性、便捷性和兼容性;
(3)便于向開發實際控制工程軟件過渡。這套軟件配合相應的硬件設備,進一步擴展功能,可延伸至畢業設計等階段作為開放學習平臺繼續發揮作用。
這套軟件編程實現的要點主要包括以下方面:
(1)系統初始化(包括界面初始化、變量定義等);
(2)參數確認(主要包括輸入信號的類型與大小、電路的阻容值以及計控采樣時間等);
(3)計算系統的輸出(主要包括獲取輸入值、按5 ms仿真步長計算各環節的離散表達式,并得到系統的輸出);
(4)將C#的picture控件作為軟件界面的示波器,根據計算數值繪制各變量的波形圖。
虛擬仿真軟件使用的是仿真時間,而非實際時間,因而直接使用循環方式進行計算,設定虛擬仿真軟件中各環節的仿真計算步長為5 ms,循環總次數等于仿真總時長除以仿真步長5 ms。
在自控類項目仿真實驗程序中,所有的仿真計算步長均為5 ms(以較小的仿真步長來模擬一個連續系統的運行過程)。其程序流程圖如圖4所示。

圖4 自控類項目仿真實驗程序流程圖
在計控類項目的仿真實驗程序中,為體現計算機控制的作用,還引入了采樣周期,并將采樣周期設定為可選的5 ms的倍數,其中被控對象部分還是按照5 ms的仿真步長來進行計算,每次進入循環都判斷當前的仿真運行時間是否達到了采樣周期,如達到則進行一次控制器運算。其程序流程圖如圖5所示。

圖5 計控類項目仿真實驗程序流程圖
已開發完成的仿真實驗項目包括:
1)自控原理部分
(1)典型環節階躍響應
(2)典型二階系統階躍響應
(3)穩定性分析
(4)穩態誤差分析
(5)串聯校正
(6)模擬PI控制
(7)采樣系統分析
(8)系統頻率特性分析
部分軟件界面如圖6、圖7所示。

圖6 典型二階系統階躍響應

圖7 系統頻率特性
2)計算機控制部分
(1)DA&AD轉換實驗
(2)采樣與保持實驗
(3)模擬PI 控制實驗
(4)數字PID控制實驗
(5)最小拍控制實驗
(6)大林算法控制實驗
部分軟件界面如圖8、圖9所示。

圖8 數字PID控制實驗

圖9 最小拍控制實驗
虛擬仿真實驗教學軟件面向北方工業大學自研的自控計控多功能實驗裝置進行物理建模,基于原理分析和實體裝置運行數據,完成所有實物實驗在虛擬空間的映射。學生可以在虛擬環境下完成從系統建模、性能分析到控制調節的仿真和模擬,觀察評估不同的實驗效果。同時,可以在實物裝置平臺上引用虛擬實驗中的參數,輕松復現課程中的實驗內容。這種“虛實對照、以虛促實”的交互方式,不僅可以顯著提高學生對課程內容的理解應用能力,實驗設計與分析能力,同時也為實踐能力培養的自主學習模式提供了可能[3-5]。該軟件的運行使用不依賴特定工具和環境平臺支持,可以方便地在課堂講授、課后練習和實驗預習等環節使用。
軟件開發成功以后,已在北方工業大學多個控制理論課堂上實現了應用,以其功能全面、效果直觀、使用方便等特點受到師生的好評,在疫情期間的線上教學中也發揮了其獨特的作用。該軟件已推廣至三十余所其他院校,并收到了使用效果良好的反饋。今后,將嘗試增加與實際傳感器和執行機構的接口,完善人機界面,以期達到更好的使用效果。