作者/ 贺为婷 杨建华 西安工业大学 电子信息工程学院(陕西 西安 710032)
摘要:为了精确直观地观测电路的动态改动进程,选用四种办法对一电路实例进行仿真剖析:用积分法求解状况方程,用拉普拉斯改换法求解s域的方程组,用数值积分函数求微分方程的数值解,构建微分方程的Simulink模型观测呼应曲线。四种办法的仿真成果完全共同且与电路理论相符。试验成果表明,Matlab程序简练、可读性强且核算成果精确,一起它形象直观,改动参数便利,能够补偿硬件试验的缺乏。Matlab在电路理论学科研讨与工程实践中都具有很好的使用价值。
导言
高阶动态电路的剖析一般都归结为高阶微分方程或一阶微分方程组的求解,需求微分方程和矩阵理论的相关常识,把握起来比较困难。关于杂乱的高阶电路,用求解微分方程的办规则愈加困难,一是列写微分方程,二是依据变量及变量的各阶导数的初始值确认积分常数。若凭借适宜的仿真软件,则能够使电路的剖析变得便利、精确和直观。电路仿真是电路剖析及电路教育的重要手法,它形象直观,改动参数便利,能够补偿硬件试验的缺乏[1]。
Matlab是现在最为盛行的工程软件之一,它具有强壮的核算、仿真和绘图功用,能便利地制作二维、三维图形和相量图。运用该软件,能够便利地研讨各类体系问题,包含电路仿真剖析。关于动态进程,用图形来显现会愈加直观,它可动态地演示杂乱电路各参量的改动进程,然后加深对电路的了解和知道。关于动态进程中某时刻的状况能够有一个定量的知道,对工程上处理体系处在动态阶段的问题有必定的指导意义[2]。
本文以求解图1所示电路的电容电压和电感电流为例,介绍四种依据Matlab的电路动态进程的剖析办法。
1 积分法求解状况方程
一个二阶电路如图1所示,开关K原来是翻开的,电路现已安稳,uc(0)=1V,il(0)=2A。电源电压及各元件的参数值标明于图中。在t=0时,将开关K闭合,求t≥0时的电容电压uc(t)及电感电流il(t)的改换规则[3]。
积分法求解状况方程:假如一个体系的状况描绘方程为:
则该体系的状况呼应为:
其间。
关于图1所示的电路,以电容电压uc和电感电流il为状况变量,则树立电路的状况方程为:
编程求解状况呼应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
即电容端电压和电感中电流的解析解为:
积分法求解电路呼应的进程是:以电容电压和电感电流为状况变量树立电路的状况方程;依据状况方程确认矩阵A、B;求矩阵指数eAt;依据方程式(2)求状况变量的解析表达式,最终求出要求电量的解析表达式[4]。
2 用Matlab拉普拉斯改换法求解
时域剖析法用于高阶电路的剖析核算时,确认初始条件和积分常数十分繁琐。可选用拉普拉斯改换法来求解。将时域电路改换为复频域电路,即运算电路[5]。在运算电路的根底上,用与直流电阻电路相同的办法进行剖析,树立s域描绘方程。经过对s域方程的运算,得到电路中待求电量的象函数F(s),目标函数F(s)进行拉氏反改换就得到对应的时域解f(t)。
图1对应的运算电路如图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); %电容电压的象函数;
Is=X(2); %电感电流的象函数;
Uc(t)=ilaplace(Us), il(t)=ilaplace(Is)
程序运转成果为:
Uc(t) =3*exp(-3/2*t)-6*exp(-t)+4
Il(t) =-3*exp(-3/2*t)+3*exp(-t)+2
该成果与办法1的成果完全共同,即电容电压uc(t)和电感电流il(t)的解析表达式同式(5)。
3 用ODE函数求微分方程的数值解
依据龙格-库塔法,MATLAB供给了一套求常微分方程数值解的函数,能够依据不同的目标挑选不同的算法。其函数格局如下:
[X,Y]=ode23(‘f’,[x0,xn],Y0)
[X,Y]=ode45(‘f’,[x0,xn],Y0)
其间:X,Y是两个相量,X对应自变量x在求解区间[x0, xn]的一组采样点,其采样密度是自适应的,无需指定;Y是与X对应的一组解。f是一个M函数文件,代表待求解方程。[x0,xn]代表自变量的求解区间。Y0=Y(X0),由方程的初值给定。函数在求解区间[x0,xn]内,主动树立采样点向量X,并求出解函数Y在采样点X处的样本值[6]。
本文选用选用了四阶、五阶龙格-库塔法的ode45函数,它选用自适应变步长的求解办法,即当解的改动较慢时,选用较大的步长,然后进步了核算速度;当解的改动较快时,步长会主动地变小,能够进步核算的精确度。
图1的状况方程为式(1),初始条件为:uc(0)=1V,il(0)=2A,MATLAB程序如下:
function dy = myfun (t, y); % 将方程式界说为函数文件并取名存盘以便调用
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]); % 调用ODE函数并代入初始条件
t’; %转置显现自变量的一组采样点
y(:,1)’;y(:,2)’;% 转置显现y(1)、y(2)与采样点对应的一组数值解
uc= y(:,1);
il = y(:,2);
plot(t,uc,’linewidth’,1.5);%制作uc波形,波形线宽为1.5
grid; set(gcf,’color’,’w’) % 翻开网格;使输出图形的布景为白色
axis([0 10 0.8 4.2]); % 设定坐标轴的规模
set(gca,'xtick',[0 2 4 6 8 10]); %设置x轴刻度标明
set(gca,'ytick',[1 2 3 4]); %设置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]); %设定坐标轴的规模
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的波形’);
在此,因为篇幅有限,没有显现自变量的采样点和与采样点对应的数值解,而仅仅将解以图形的办法输出,如图3和图4。从成果看出,用数值积分ODE函数求解状况方程简略便利,易于了解和把握。与其它言语程序比较,可大大节省编程时刻[7]。
4 构建微分方程的simulink模型求解
关于形如y''=ay'+by+c的微分方程,构建simulink模型的中心思维是:y''经过积分得y',y'经过积分得y,而y'、y经过代数运算又可得到y''。由微分方程式(4)得:
依据式(7),可构建出图5所示的simulink模型。其间用到两个积分模块、两个求和模块、两个份额模块和一个稳定模块。两个示波器用于输出uc和il的图形[8]。
simulink模型建成今后,要对uc和il设置初值:uc(0)=1V,il(0)=2A,双击uc模块将初始值设为1V,双击il模块将初始值设为2A。设置示波器的信号显现规模:scope1,t:0—10s,Y:0.8—4.2;scope2,t:0—10s,Y:1.9—2.5。
开端仿真:挑选simulation下的parameter指令,设置仿真的start time为0s,stop time为10s。最终挑选simulation下的start指令进行仿真,或击模型窗口工具栏上黑色右三角图标进行仿真。
双击示波器scope1和scope2,则会得到图6和图7,与图3和图4的uc和il曲线完全相同,即两种仿真成果共同。
5 定论
经过本文介绍的几种动态电路的剖析办法看到:积分法求解动态电路,以%&&&&&%电压和电感电流为状况变量树立电路的状况方程,依据状况方程求出状况变量的解析表达式;用ODE函数求解微分方程组,对求解动态电路带来了极大便利,并给出了解的直观图形;使用Matlab言语直接进行拉氏改换求解动态电路,大大进步了核算功率;而使用Matlab的Simulink功用得到了一种全新的求解暂态电路的思路。 Matlab的编程功率高、言语简练、绘图便利。运用Matlab可使电路的剖析运算变得便利和方便。运用Matlab言语编程和Simulink仿真的办法对杂乱电路进行剖析和核算,不只能够节省核算时刻、便利地调试电路参数,还能够经过图形十分直观地观察到其呼应的过渡进程[10]。所以Matlab在电路理论学科研讨与工程实践中都具有很好的使用价值。
参考文献:
[1] 张洪宝.Matlab在动态电路剖析中的使用[J]. 鲁东大学学报, 2009(2):144—147.
[2] 王亮光.用Matlab编程完成动态电路仿真[J].江西电力工作技术学院学报,2007(3):8-10.
[3]杨红权,辜承林.Matlab符号运算在电路剖析中的使用[J].电气电子教育学报,2008(1):23-26.
[4]蔡启仲.控制体系核算机辅助设计[M].重庆:重庆大学出版社,2003.8.
[5]邱关源.电路[M].北京:高等教育出版社,1999.
[6]于润伟.Matlab根底及使用[M].北京:机械工业出版社,2003.10.
[7]张颖,甘正佳,金维香.依据Matlab的暂态电路剖析与核算[J]. 长沙电力学院学报,2002(3):44-47.
[8]王群, 耿云玲. Simulink在电路剖析中使用[J].电力主动化设备, 2007(4):71-75.
[9]陈怀琛.M at lab及在电子信息课程中的使用[M].北京:电子工业出版社,2002.
[10]黄忠霖,黄京.Matlab符号运算及其使用[M].北京:国防工业出版社,2004.
本文来源于我国科技期刊《电子产品世界》2016年第11期第59页,欢迎您写论文时引证,并注明出处。