陳曉娟
(大連職業(yè)技術學院,遼寧大連 116037)
電路仿真指用仿真軟件在計算機中復現設計即將完成或待分析的電路,提供電路電源以及輸入信號,然后模擬示波器給出測試點波形或繪出相應的曲線的過程。當所研究的電路造價昂貴、特別是疫情期間實驗不方便或需要很長時間才能了解電路參數變化引起的后果時,仿真就是一種特別有效的研究手段。
Matlab 作為當今世界上應用最為廣泛的高性能計算和可視化軟件,具有非常強大的科學計算、數值分析、圖形顯示、系統(tǒng)分析和建模等功能,在電路分析、自動控制等領域得到了廣泛應用[1]。在Matlab 的仿真集成環(huán)境——Simulink 中,提供豐富的功能模塊,可以創(chuàng)建動態(tài)電路模型,在仿真進行的同時,就能看到仿真結果。Matlab GUI(Graphical User Interface,圖形用戶界面)是用圖形化方式顯示的計算機操作用戶界面(可視化)。如果能夠將GUI 和Simulink 結合起來,利用GUI 設計友好的人機交互界面,直接在界面中調整Simulink 模型參數,得到仿真結果,對于理解和分析電路,是極為有益的[2]。GUI 與Simulink 聯系方式如圖1 所示。
圖1 GUI 與Simulink 聯系方式
利用Matlab 2018b,以典型的二階零輸入響應電路為例,建立電路的Simulink 模型,然后設計符合功能要求的GUI 界面,可直接在編輯框中隨時修改參數,不需要進入Simulink 環(huán)境,點擊按鈕后即可在GUI 界面上得到二階電路零輸入響應中電感電流和電容電壓的波形,并判斷電路阻尼情況。
數學模型為二階微分方程的電路稱為二階電路。比較典型的二階電路是由1 個電容、1 個電感和若干電阻元件構成,由開關通斷控制電路響應類型。在圖2 所示的二階電路中,換路之前,既儲存電場能量又儲存磁場能量。當開關斷開時,電源被切斷,電容和電感同時釋放能量,電路中的響應完全由儲能元件的初始值引起,屬于零輸入響應,其電路響應存在多種情況。改變電路中R 數值,觀察電容電壓和電感電流波形,可以判斷電路阻尼性質[3]。
圖2 二階零輸入響應電路
開關S 打開之前,電路穩(wěn)定,由于是直流電源,電感相當于短路,電容相當于開路??梢郧蟮贸跏贾?,電容和電感充電。換路之后的瞬間,電容電壓和電感電流的初始值不變,并且uC-uR-uL=0,進一步求得電路的微分方程+uC=0。根據微分方程的特征根的形式可知,電路響應有如下4 種情況:
(4)當R=0 時,電路中響應為等幅振蕩,稱為無阻尼。
在Matlab 命令窗口鍵入Simulink,可以進入Start Page 界面,新建一個空白模型窗口,在模塊庫中選擇構建電路模型所需的電源和負載模塊,并把它們直接拖放到所建立的系統(tǒng)模型窗口中。將功能模塊放置合適的位置,按照電路圖,完成各模塊參數的修改和電路連接[4]。系統(tǒng)仿真的是開關打開之后的響應,所以電路的Simulink 仿真模型如圖3 所示。根據電阻R 阻值不同,設置好電感電流和電容電壓的初始值,點擊“仿真”按鈕,然后雙擊示波器,就可以觀察電感電流和電容電壓波形。
圖3 二階零輸入響應電路的Simulink 仿真模型
為了實現在GUI 界面中來進行仿真參數實時配置,需要建立二者之間的聯系,即通過示波器菜單“View”選項中“Configuration Properties”,將logging 中的Log data to workspace 勾上,即先把波形信息存入Matlab 工作區(qū)中,模塊的Save format 設置為Array 形式,對于1 個在示波器中用多個坐標系顯示波形的情況,可以將存儲形式改為Structure With Time。確定后再次運行仿真,可以看到Workspace 中多出了存進去的變量。在Matlab命令行中輸入get(gcbh)指令,可以獲得需要配置的參數Resistance、InitialCurrent 和InitialVoltage 名稱。
電路的Simulink 仿真模型建立之后,使用軟件自帶的GUIDE 編輯器編輯GUI 界面。界面設計包括3 個方面,即界面布局、設置控件的屬性、編寫回調函數[5]。
在GUI 界面中,設置了4 個坐標軸分別顯示電路圖、Simulink 仿真模型圖和響應曲線。利用4 個可編輯文本框Edit Text,輸入和顯示參數及信息。5 個按鈕,分別控制初始值的計算,分析阻尼形式、控制與顯示Simulink 仿真波形。GUI 界面布局及運行如圖4 所示。
圖4 二階電路的零輸入響應GUI 界面
控件的屬性一般都是默認屬性,可以調整背景顏色、字體大小及String 等,注意設置完成每一項,需要點擊其他選項,以應用設置,否則直接關閉對話框,該項不會保存。設定好各控件的大小、位置和屬性之后,保存,會自動生成2 個文件。一個是FIG(.fig),包含了GUI 對象的屬性設置及其布局信息,其中沒有任何函數;另一個是M 文件(.m)[6],M中則存著所需函數,之前并未編輯M,這是軟件根據GUI 框架,自動生成的,需要在M 中編輯個控件的回調函數,實現其具體功能。
在電路仿真平臺的GUI 界面中,根據二階零輸入響應電路的原理,原來開關閉合時,電容和電感都充電,但根據電阻阻值的不同,充電之后的初始值會不同,會影響后續(xù)的阻尼形式和響應波形,所以電阻R 非常關鍵。
global value %設置電阻值為全局變量
value=get(handles.edit3,'string');%阻值通過可編輯文本框輸入
v=str2num(value);%把輸入的字符串的數據變成數值型的數據
點擊“初始值”按鈕可以計算并顯示電感電流和電容電壓的初始值。點擊“電容電壓”或“電感電流”,可以打開電路的Simulink 模型,開始仿真。這樣只要在GUI 界面中改變電阻阻值,不用再回到Simulink 中,模型中電阻、電感電流初始值、電容電壓初始值會自動改變,示波器輸出波形也會實時顯示在相應的坐標軸中,不用每次雙擊元件修改參數,雙擊示波器觀察波形。電容電壓按鈕的主要程序如下:
點擊“阻尼形式”,可以看到,由于電容電壓和電感電流響應的波形都是衰減振蕩形式,所以,當電阻值為6 Ω 時,二階電路處于欠阻尼狀態(tài)。
以二階零輸入響應電路為例,針對參數改變較頻繁,Simulink 模型需要逐個參數修改的不便,設計了電路仿真的交互式GUI 界面,不僅能形象直觀的表示電路的特點,在GUI 界面觀察到的波形和Simulink 示波器輸出波形(圖5)完全一致,沒有失真。通過GUI 界面改變參數,控制Simulink 的仿真過程也變得簡單,有利于提高電路仿真的效率。
圖5 Simulink 示波器輸出電容電壓波形