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