资源描述:
《matlab对直流暂态电路的分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、05—06第一学期科学计算及程序设计课程论文Matlab对直流暂态电路的分析关键字:matlab/simulink直流暂态电路仿真摘要:Matlab现在已广泛应用于科学计算和解决各种具体问题,利用matlab来处理电路问题能够达到事半功倍的效果。文章对典型的直流暂态电路进行了分析,并利用matlab和simulink编写程序求解及仿真。引言Matlab是美国Mathworks公司开发的大型数学计算软件,他主要包括两大内容:核心函数和工具箱,提供了强有力的矩阵处理和绘图功能。Matlab编程代码接近于数学推导公式,简洁
2、直观,与科技人员的思维方式和书写习惯相适应,操作容易,人机交互性能好,其编程相对于C、FORTRAN、BASIC语言来说方便得多,被称为草稿纸式的编程工具。在设计研究单位和工业部门,Matlab也被广泛应用于科学计算和解决各种具体问题。作者在学习过程中运用Matlab语言解决电路分析计算问题方面作了些实践和探讨。无论是直流还是交流,是稳态还是暂态,是实数还是复数、是单频系统还是多品系统,matlab均可方便处理,避免了大量繁琐计算。下面是我利用matlab对直流咱台电路的分析,分别应用函数编程和用simulink来处
3、理同一个问题。该例是直流暂态的典型电路,要实现对其它电路的分析,只要对其中的数据或模块做简单的修改即可实现。电路描述直流暂态电路如图所示电路,再t<0时,开关K位于1,电路处于稳态,在t=0时,开关K闭合到2,求电路的响应,画出Ir2和Uc的波形图。已知R1=3Ω,R2=12Ω405—06第一学期科学计算及程序设计课程论文,R3=6Ω,C=1F,Is=12A,Us=18V.分析:首先确定这是个暂态过程问题的分析,应该找到其初始值和终值。在t=0_时,Uc0(0_)=Us*R3/(R1+R3)=-12V,Ic(0_)=
4、0A;当t=0+时,因为电容器端电压不能突变,仍有Uc(0+)=Uc(0_)=-12V,电流源向两个电阻和一个电容的并联供电,两个电阻的电流应等于电容电压除以两个电阻,即Ir2(0+)=Uc(0+)/R2=-1A,Ir3(0+)=Uc(0+)/R3=-2A,电容的充电电流为电流源总电流减去电阻电流,故Ic(0+)=Is-Ir2-Ir3=17A,再分析终止,达到稳态后,电容中将无电流,电流源的全部电流将在两个电阻之间分配,其端电压应相同,也就是电容上的终电压,结果为Ucf=48V,Ir2f=4A,最后按三要素法计算。U
5、c(t)=Ucf+(Uc0-Ucf)*exp(-t/T),Ir2(t)=Ir2f+(Ir20-Ir2f)*exp(-t/T),其中T=R2*R3/(R2+R3)*C。程序描述编写的程序见附录。图1通过编程输出的图形如图1所示。输出结果与计算结果完全吻合。405—06第一学期科学计算及程序设计课程论文Simulink建模图2仿真模型如图2所示,在simpowerlib中找到相应的模块,设置好就可以了。其仿真结果如下图所示。图3从仿真结果看来,利用simulink所得到的仿真效果明显优于利用编程所得到结果,应用simul
6、ink更接近于实际情况。比如说,在编程中,我们认为Ir2在t<0时,流过其中的电流为0,而实际上,电流源与电阻R2组成闭合回路,其中是有电流通过的为34A。如图3所见。且利用simulink通俗易懂,省去了编写程序的麻烦。其缺点是,内部运行机理不为我们知道,不便于修改和发现错误。而且由于模块本身的限制,我们不能做出特别精确的理论值。总之,编程方法和模块仿真各有利弊,两个的有效结合,更能发挥matlab的强大功能。405—06第一学期科学计算及程序设计课程论文附录本程序是对直流暂态电路的求解和画图分析程序代码:func
7、tioncircuitr1=3;r2=12;r3=6;c=1;us=18;is=12;uc0=-12;%电容C的初始电压ir20=uc0/r2;%流过电阻R2的电流初始值ir30=uc0/r3;ic0=is-ir20-ir30;ir2f=is*r3/(r2+r3);%流过电阻R2的终值电流ir3f=is*r2/(r2+r3);ucf=ir2f*r2;%电容C的终值电压icf=0;%电容C的终值电流t=[-2:1:19];uc(1:3)=-12;T=r2*r3/(r2+r3)*c;uc(4:19)=ucf+(uc0-u
8、cf)*exp(-t(4:19)/T);%三要素法列出电容C的电压subplot(2,1,1);h1=plot(t(1:19),uc(1:19));gridon;set(h1,'linewidth',2);gtext('Uc');ir2(1:3)=0;subplot(2,1,2);h2=plot(t(1:3),ir2(1:3));set(h2,