6.1 Matlab在电路中的仿真应用
利用Matlab编写M文件和利用Simulink搭建仿真模型都可以实现对电路的仿真, Matlab编写M文件实现仿真,虽然烦琐,但是如果对电路有较深刻的理解或要进行较深入的理论分析时是比较适合的。采用Simulink搭建模型仿真则直观高效。
通过M文件实现仿真,一般工作过程包括:分析仿真电路,确定算法,编写仿真程序,运行得到输出结果。采用Simulink搭建模型仿真时,直接根据电路图从模块库中选取模块搭建仿真模型。在Simulink中,模块库Simscape下的SimPowerSystems子库提供了可用于电路仿真的很多模块。
6.1.1电阻电路
电阻电路指电路中除了电压源、电流源之外,只含有电阻元件的电路。根据基尔霍夫电压定律、基尔霍夫电流定律导出的一切分析方法都可以用于分析电阻电路,如支路电流法、节点电压法、回路电流法等等。

图6-1电阻电路
方法一:编写M程序实现
采用网孔法,列出电流方程如下:

编写程序如下:
a=[80 -20 0 ;-20 60 -40;0 -40 80 ];
b=[40;10;40];
i=a\b;
disp('流过电阻R1支路电流'),disp(i(1));
disp('流过电阻R2支路电流'),disp(i(1)-i(2));
disp('流过电阻R3支路电流'),disp(i(2)-i(3));
disp('流过电阻R4支路电流'),disp(i(3));
运行结果显示:
流过电阻R1支路电流
0.7857
流过电阻R2支路电流
-0.3571
流过电阻R3支路电流
0.0714
流过电阻R4支路电流
1.0714
方法二:采用Simulink搭建模型仿真
首先选取模块,搭建Simulink仿真模型,设置模块参数,主要模块取自“Simscape\SimPowerSystems\Specialized Technology”下的各子模块库。
(1)直流电压源DC Voltage Source取自ElectricalSources库。
(2)SeriesRLC Branch、Ground取自模块库Elemtents库,双击Series RLC Branch将它设置为纯电阻支路。
(3)CurrentMeasurement 取自模块库Measurement,用于测量电流值。
(4)取出powergui。
搭建完成的模型如图6-2所示,进行模型参数设置,运行仿真并查看结果,如图6-2所示Display模块上显示仿真结果数值与程序设计结果一致。
图6-2电阻电路仿真模型

图6-3含受控源的电阻电路
方法一:编写m程序实现
采用网孔法,列出方程如下:

编写程序如下:
r1=2;r2=4;r3=6;us=2;g=3;r=2;
a=[-r2 (r2+r3) r 0;1 0 0 g;r2 -r2 0 -1;1 -1 -1 0 ];
b=[us;0;0;0];
x=a\b;
disp('电流i2'),disp(x(3));
disp('电压u2'),disp(x(4));
运行结果显示:
电流i2
-0.0250
电压u2
-0.1000
方法二:采用Simulink搭建模型仿真
搭建Simulink模型,主要模块取自Simscape\SimPowerSystems\SpecializedTechnology下的各子模块库。
(1)受控电流源ControlledCurrent Source取自模块库ElectricalSources子库。
(2)受控电压源ControlledVoltage Source取自模块库ElectricalSources子库。
(3) Gain取自Simulink模块库的Math Operations子库。
设置模块参数,设置仿真模型参数,搭建完成的模型如图6-4所示。运行仿真后,Display模块上显示了仿真结果,与程序设计结果一致。


图6-4含受控源电阻的电路仿真模型

图6-5RLC电路
方法一:应用常微分方程的数值方法求解
分析这个电路动态过程,根据电路图,列出电路方程:

以电容两端的电压为变量,可得到微分方程:

将表达式右端写成函数。
function xdot=rlc(t,x)
us=10;r=14;l=0.2;c=0.47e-6;
xdot=[x(2)/c;1/l*(us-x(1)-r*x(2))];
% xdot=[0,1/c;-1/l,-r/l]*x+[0;1]*(us/l);
编写主程序如下:
clear;clc;close all;
t0=0;tfinal=0.15;
x0=[0.5;0];
[t,x]=ode45('rlc',t0:0.0001:tfinal,x0);figure(1)
subplot(2,1,1);plot(t,x(:,1));title('电容端电压波形');xlabel('时间')
subplot(2,1,2);plot(t,x(:,2));title('电感电流波形');xlabel('时间')
仿真结果如图6-6所示。

图6-6电容端电压与电感电流波形
方法二:应用dsolve求解微分方程
计算微分方程系数:
us=10;r=14;l=0.2;c=0.47e-6;
a1=l*c
a2=r*c
得到:
a1 =
9.4000e-08
a2 =
6.5800e-06
应用dsolve求解微分方程:
y=dsolve('9.4e-8*D2y+6.58e-6*Dy+y=10','Dy(0)=0','y(0)=0.5');
得到解析表达形式。
y =
10 -(133*939891759^(1/2)*exp(-35*t)*sin((5*939891759^(1/2)*t)/47))/39995394 -(19*exp(-35*t)*cos((5*939891759^(1/2)*t)/47))/2
应用表达式,编写程序,绘出结果如图6-7所示,与微分方程数值法求解结果一致。
t=0:0.0001:0.16;
y=10 -(133*939891759^(1/2)*exp(-35*t).*sin((5*939891759^(1/2)*t)/47))/39995394 -(19*exp(-35*t).*cos((5*939891759^(1/2)*t)/47))/2
plot(t,y);

图6-7dsolve求解的电容端电压波形
6.1.3正弦稳态电路
在正弦电源激励下的线性非时变电路达到稳态时,电路中的电压、电流都是与激励源同频率的正弦量,这种电路称为正弦稳态电路。分析正弦稳态电路主要采用相量法,同时电阻电路分析中的各种分析方法和网络定理也适用于正弦稳态电路。
正弦量用复数来表示,用复数的模代表正弦量的振幅或有效值,用复数的相角代表正弦量的初相。

编写程序如下:
r1=5;r2=100;l=1;c=20e-6;w=628;
u=100*exp(j*60*pi/180); %信号源
z1=j*w*l;
z2=1/(j*w*c);
z=r1+z1+1/(1/z2+1/r2); %计算总阻抗
i=u/z;
i1=i*r2/(r2+z2);
i2=i-i1;
disp('幅值'),disp(abs([i,i1,i2]));
disp('相角'),disp(angle([i,i1,i2])*180/pi);
运行结果如下:
幅值
0.1721 0.1347 0.1072
相角
-25.6763 12.8498 -77.1502


图6-9含受控源的正弦稳态电路
首先,搭建Simulink仿真模型,其中,AC Voltage Source模块取Electrical Sources库,Peak amplitude设置为100,Frequency(Hz)设置为60。搭建完成的模型如图6-10所示。之后设置仿真参数,将终止时间设为0.1。最后进行仿真,仿真实验结果见图6-11。

图6-10含受控源的正弦稳态电路仿真模型

图6-11含受控源正弦稳态电路的仿真结果