高階電路動態(tài)特性的仿真分析
作者/ 賀為婷 楊建華 西安工業(yè)大學(xué) 電子信息工程學(xué)院(陜西 西安 710032)
本文引用地址:http://www.biyoush.com/article/201611/340860.htm摘要:為了準確直觀地觀測電路的動態(tài)變化過程,采用四種方法對一電路實例進行仿真分析:用積分法求解狀態(tài)方程,用拉普拉斯變換法求解s域的方程組,用數(shù)值積分函數(shù)求微分方程的數(shù)值解,構(gòu)建微分方程的Simulink模型觀測響應(yīng)曲線。四種方法的仿真結(jié)果完全一致且與電路理論相符。實驗結(jié)果表明,Matlab程序簡潔、可讀性強且計算結(jié)果準確,同時它形象直觀,改變參數(shù)方便,能夠彌補硬件實驗的不足。Matlab在電路理論學(xué)科研究與工程實踐中都具有很好的應(yīng)用價值。
引言
高階動態(tài)電路的分析通常都歸結(jié)為高階微分方程或一階微分方程組的求解,需要微分方程和矩陣理論的相關(guān)知識,掌握起來比較困難。對于復(fù)雜的高階電路,用求解微分方程的方法則更加困難,一是列寫微分方程,二是根據(jù)變量及變量的各階導(dǎo)數(shù)的初始值確定積分常數(shù)。若借助合適的仿真軟件,則可以使電路的分析變得方便、準確和直觀。電路仿真是電路分析及電路教學(xué)的重要手段,它形象直觀,改變參數(shù)方便,能夠彌補硬件實驗的不足[1]。
Matlab是目前最為流行的工程軟件之一,它具備強大的計算、仿真和繪圖功能,能方便地繪制二維、三維圖形和相量圖。運用該軟件,可以方便地研究各類系統(tǒng)問題,包括電路仿真分析。對于動態(tài)過程,用圖形來顯示會更加直觀,它可動態(tài)地演示復(fù)雜電路各參量的變化過程,從而加深對電路的理解和認識。對于動態(tài)過程中某時刻的情況可以有一個定量的認識,對工程上解決系統(tǒng)處在動態(tài)階段的問題有一定的指導(dǎo)意義[2]。
本文以求解圖1所示電路的電容電壓和電感電流為例,介紹四種基于Matlab的電路動態(tài)過程的分析方法。
1 積分法求解狀態(tài)方程
一個二階電路如圖1所示,開關(guān)K原來是打開的,電路已經(jīng)穩(wěn)定,uc(0)=1V,il(0)=2A。電源電壓及各元件的參數(shù)值標示于圖中。在t=0時,將開關(guān)K閉合,求t≥0時的電容電壓uc(t)及電感電流il(t)的變換規(guī)律[3]。
積分法求解狀態(tài)方程:如果一個系統(tǒng)的狀態(tài)描述方程為:
則該系統(tǒng)的狀態(tài)響應(yīng)為:
其中。
對于圖1所示的電路,以電容電壓uc和電感電流il為狀態(tài)變量,則建立電路的狀態(tài)方程為:
編程求解狀態(tài)響應(yīng)uc(t)與il(t):
syms x1 x2 s t z ;
A=[-1/2,1;-1/2,-2]; Bu=[0;6];
X=[x1;x2];X0=[1;2];
Asi=eye(2)*s-A; % s*I-A;
AA=inv(Asi); % [s*I-A]-1;
eAt=ilaplace(AA); %e A t=L-1[([sI-A]-1];
eAtz=subs(eAt,t,t-z); %求eA(t-z);
X= eAt*X0+int(eAtz*Bu,z,0,t); % Bu= B*u(z);
uc=X(1), il=X(2)
運行程序得:
uc = 3*exp(-3/2*t)-6*exp(-t)+4
il = -3*exp(-3/2*t)+3*exp(-t)+2
即電容端電壓和電感中電流的解析解為:
積分法求解電路響應(yīng)的過程是:以電容電壓和電感電流為狀態(tài)變量建立電路的狀態(tài)方程;根據(jù)狀態(tài)方程確定矩陣A、B;求矩陣指數(shù)eAt;根據(jù)方程式(2)求狀態(tài)變量的解析表達式,最后求出要求電量的解析表達式[4]。
2 用Matlab拉普拉斯變換法求解
時域分析法用于高階電路的分析計算時,確定初始條件和積分常數(shù)非常繁瑣??刹捎美绽棺儞Q法來求解。將時域電路變換為復(fù)頻域電路,即運算電路[5]。在運算電路的基礎(chǔ)上,用與直流電阻電路相同的方法進行分析,建立s域描述方程。通過對s域方程的運算,得到電路中待求電量的象函數(shù)F(s),對象函數(shù)F(s)進行拉氏反變換就得到對應(yīng)的時域解f(t)。
圖1對應(yīng)的運算電路如圖2所示,由運算電路得:
針對方程組(6)進行MATLAB編程:
syms t s;
A=[-1 4*s^2+8*s+2;2*s+1 -2];
B=[8*s+22;2];
AA=inv(A); %A的逆陣;
X=AA*B;
Us=X(1); %電容電壓的象函數(shù);
Is=X(2); %電感電流的象函數(shù);
Uc(t)=ilaplace(Us), il(t)=ilaplace(Is)
程序運行結(jié)果為:
Uc(t) =3*exp(-3/2*t)-6*exp(-t)+4
Il(t) =-3*exp(-3/2*t)+3*exp(-t)+2
該結(jié)果與方法1的結(jié)果完全一致,即電容電壓uc(t)和電感電流il(t)的解析表達式同式(5)。
3 用ODE函數(shù)求微分方程的數(shù)值解
基于龍格-庫塔法,MATLAB提供了一套求常微分方程數(shù)值解的函數(shù),可以根據(jù)不同的對象選擇不同的算法。其函數(shù)格式如下:
[X,Y]=ode23(‘f’,[x0,xn],Y0)
[X,Y]=ode45(‘f’,[x0,xn],Y0)
其中:X,Y是兩個相量,X對應(yīng)自變量x在求解區(qū)間[x0, xn]的一組采樣點,其采樣密度是自適應(yīng)的,無需指定;Y是與X對應(yīng)的一組解。f是一個M函數(shù)文件,代表待求解方程。[x0,xn]代表自變量的求解區(qū)間。Y0=Y(X0),由方程的初值給定。函數(shù)在求解區(qū)間[x0,xn]內(nèi),自動設(shè)立采樣點向量X,并求出解函數(shù)Y在采樣點X處的樣本值[6]。
本文選用采用了四階、五階龍格-庫塔法的ode45函數(shù),它采用自適應(yīng)變步長的求解方法,即當解的變化較慢時,采用較大的步長,從而提高了計算速度;當解的變化較快時,步長會自動地變小,可以提高計算的精確度。
圖1的狀態(tài)方程為式(1),初始條件為:uc(0)=1V,il(0)=2A,MATLAB程序如下:
function dy = myfun (t, y); % 將方程式定義為函數(shù)文件并取名存盤以便調(diào)用
dy= zeros(2,1); %變量y為兩行一列相量
dy(1)= -1/2*y(1)+ y(2);
dy(2)= -1/2*y(1)-2*y(2)+6;
[t,y]= ode45(‘myfun’,[0,10],[1,2]); % 調(diào)用ODE函數(shù)并代入初始條件
t’; %轉(zhuǎn)置顯示自變量的一組采樣點
y(:,1)’;y(:,2)’;% 轉(zhuǎn)置顯示y(1)、y(2)與采樣點對應(yīng)的一組數(shù)值解
uc= y(:,1);
il = y(:,2);
plot(t,uc,’linewidth’,1.5);%繪制uc波形,波形線寬為1.5
grid; set(gcf,’color’,’w’) % 打開網(wǎng)格;使輸出圖形的背景為白色
axis([0 10 0.8 4.2]); % 設(shè)定坐標軸的范圍
set(gca,'xtick',[0 2 4 6 8 10]); %設(shè)置x軸刻度標示
set(gca,'ytick',[1 2 3 4]); %設(shè)置y軸刻度標示
xlabel(‘自變量t /s’) ; % x軸加注釋
ylabel(‘因變量uc /v’); % y軸加注釋
title(‘uc的波形’); % 圖形正上方加注釋
figure; %打開第二個圖形界面
plot(t,il,’linewidth’,1.5); %繪制il波形,波形線寬為1.5
grid; set(gcf, ‘color’, ’w’);
axis([0 10 1.9 2.5]); %設(shè)定坐標軸的范圍
set(gca,'xtick',[0 2 4 6 8 10]);
set(gca,'ytick',[2 2.2 2.4]);
xlabel(‘自變量t /s’);
ylabel(‘因變量il /A’);
title(‘il的波形’);
在此,由于篇幅有限,沒有顯示自變量的采樣點和與采樣點對應(yīng)的數(shù)值解,而只是將解以圖形的方式輸出,如圖3和圖4。從結(jié)果看出,用數(shù)值積分ODE函數(shù)求解狀態(tài)方程簡單方便,易于理解和掌握。與其它語言程序相比,可大大節(jié)省編程時間[7]。
4 構(gòu)建微分方程的simulink模型求解
對于形如y''=ay'+by+c的微分方程,構(gòu)建simulink模型的核心思想是:y''經(jīng)過積分得y',y'經(jīng)過積分得y,而y'、y經(jīng)過代數(shù)運算又可得到y(tǒng)''。由微分方程式(4)得:
根據(jù)式(7),可構(gòu)建出圖5所示的simulink模型。其中用到兩個積分模塊、兩個求和模塊、兩個比例模塊和一個恒定模塊。兩個示波器用于輸出uc和il的圖形[8]。
simulink模型建成以后,要對uc和il設(shè)置初值:uc(0)=1V,il(0)=2A,雙擊uc模塊將初始值設(shè)為1V,雙擊il模塊將初始值設(shè)為2A。設(shè)置示波器的信號顯示范圍:scope1,t:0—10s,Y:0.8—4.2;scope2,t:0—10s,Y:1.9—2.5。
開始仿真:選擇simulation下的parameter命令,設(shè)置仿真的start time為0s,stop time為10s。最后選擇simulation下的start命令進行仿真,或擊模型窗口工具欄上黑色右三角圖標進行仿真。
雙擊示波器scope1和scope2,則會得到圖6和圖7,與圖3和圖4的uc和il曲線完全相同,即兩種仿真結(jié)果一致。
5 結(jié)論
通過本文介紹的幾種動態(tài)電路的分析方法看到:積分法求解動態(tài)電路,以電容電壓和電感電流為狀態(tài)變量建立電路的狀態(tài)方程,根據(jù)狀態(tài)方程求出狀態(tài)變量的解析表達式;用ODE函數(shù)求解微分方程組,對求解動態(tài)電路帶來了極大方便,并給出了解的直觀圖形;利用Matlab語言直接進行拉氏變換求解動態(tài)電路,大大提高了計算效率;而利用Matlab的Simulink功能得到了一種全新的求解暫態(tài)電路的思路。 Matlab的編程效率高、語言簡練、繪圖方便。運用Matlab可使電路的分析運算變得方便和快捷。運用Matlab語言編程和Simulink仿真的方法對復(fù)雜電路進行分析和計算,不僅可以節(jié)約計算時間、方便地調(diào)試電路參數(shù),還可以通過圖形非常直觀地觀察到其響應(yīng)的過渡過程[10]。所以Matlab在電路理論學(xué)科研究與工程實踐中都具有很好的應(yīng)用價值。
參考文獻:
[1] 張洪寶.Matlab在動態(tài)電路分析中的應(yīng)用[J]. 魯東大學(xué)學(xué)報, 2009(2):144—147.
[2] 王光亮.用Matlab編程實現(xiàn)動態(tài)電路仿真[J].江西電力職業(yè)技術(shù)學(xué)院學(xué)報,2007(3):8-10.
[3]楊紅權(quán),辜承林.Matlab符號運算在電路分析中的應(yīng)用[J].電氣電子教學(xué)學(xué)報,2008(1):23-26.
[4]蔡啟仲.控制系統(tǒng)計算機輔助設(shè)計[M].重慶:重慶大學(xué)出版社,2003.8.
[5]邱關(guān)源.電路[M].北京:高等教育出版社,1999.
[6]于潤偉.Matlab基礎(chǔ)及應(yīng)用[M].北京:機械工業(yè)出版社,2003.10.
[7]張穎,甘正佳,金維香.基于Matlab的暫態(tài)電路分析與計算[J]. 長沙電力學(xué)院學(xué)報,2002(3):44-47.
[8]王群, 耿云玲. Simulink在電路分析中應(yīng)用[J].電力自動化設(shè)備, 2007(4):71-75.
[9]陳懷琛.M at lab及在電子信息課程中的應(yīng)用[M].北京:電子工業(yè)出版社,2002.
[10]黃忠霖,黃京.Matlab符號運算及其應(yīng)用[M].北京:國防工業(yè)出版社,2004.
本文來源于中國科技期刊《電子產(chǎn)品世界》2016年第11期第59頁,歡迎您寫論文時引用,并注明出處。
評論