第19卷第5期2006年10月
高等函授学报(自然科学版)
JournalofHigherCorrespondenceEducation(NaturalSciences)
Vol.19No.5August2006
文章编号:1006-7353(2006)05-0006(02)-04
*
MATLAB仿真在电子电路课程中的应用研究
高美珍,洪家平,程晓林
(湖北师范学院,湖北黄石435002)
摘要:电子电路相关课程是电类专业非常重要的专业基础课。本文以电子电路中的电路分析计算为例,分别给出了如何运用MATLAB语言编程和直接利用MATLAB的可视化仿真环境SIMULINK设计模块图来对复杂电路进行仿真分析和计算。结果表明,使用MATLAB的可视化仿真环境SIMULINK对电路进行分析,可以使复杂的计算变得非常简便,从而为电路分析提供了一个有效的辅助分析工具。
关键词:电子电路分析;仿真;MATLAB语言;可视化仿真环境中图分类号:TP312
文献标识码:B
电子电路相关课程是电类专业非常重要的基础课,我们经常要对电子电路求解,在电路比较复杂、方程数量较多的情况下,手工求解不仅费时
而且容易出错。为了提高效率,我们可以使用由美国MathWorks公司开发的一种使用简便的工程计算语言MATLAB,它以矩阵或数组为数据单位进行运算,可直接处理矩阵或数组。MATLAB还具有强大的绘图功能,能方便地绘制二维、三维图形。另外,其可视化的仿真环境Simulink为用户提供了方便的图形化模块功能,大大简化了设计流程。更重要的是,Simulink能够用MATLAB自身的语言或C、FORTRAN等语言,根据S函数的标准格式,写成自定义的功能模块,具有很强的扩充性。本文以电子电路中的电路分析计算为例,分别运用MATLAB语言编程及用Simulink设计模块图这两种方法,对电路进行仿真分析和计算。1.MATLAB软件简介
很多软件公司都开发了自己的计算机仿真软件,比较适合于电路分析和仿真的主要有Pspice,EDA,Protel,MATLAB等,它们各有优缺点,其中功能强大的就是MATLAB.
MATLAB源于MatrixLaboratory一词,原意为矩阵实验室。一开始它就是一种专门用于矩
*
阵数值计算的软件。随着MATLAB逐渐市场化,MATLAB不仅具有了数值计算功能,而且具有数据可视化功能。自MATLAB4.1版本的推出,
MATLAB拥有了它自己的符号运算功能,MATLAB的应用范围得到了进一步的拓展,而且增加了许多工具箱。目前,MATLAB已拥有数十个工具箱,如信号处理、通信系统、虚拟现实、系统辨识、神经网络、模糊逻辑、实时空间等学科和领域的工具箱,以供不同专业的科研技术人员使用。
由于MATLAB使用的编程运算与人们进行科学计算的思路和表达方式基本一致,所以不象学习其它高级语言如一般数值分析、矩阵运算、数字信号处理、数学建模、系统控制和系统优化等应用程序那样难于掌握,用MATLAB编写程序犹如在演算纸上排列出公式与求解问题一样,所以又被称为演算纸式科学算法语言。在这个环境下,对所要求解的问题,用户只需简单地按要求列出数学表达式,其结果便以数值或图形方式显示出来。
MATLAB自产生之日开始,就以其强大的功能和良好的开放性而在众多软件中独占鳌头。如今,新版本的MATLAB在符号运算上不甘落
收稿日期:2006-09-09
作者简介:高美珍(1966-),女,副教授,主要从事物理教学及其研究工作。
6
第19卷第5期2006年10月
高等函授学报(自然科学版)
JournalofHigherCorrespondenceEducation(NaturalSciences)
Vol.19No.5August2006
后,它在与符号运算最为强大的工具软件MAPLE接口后,可以说MATLAB的数值计算、符号运算及图形处理方面与同类产品相比占有很大的优势。再考虑到开放性、易学易用性等特点,MATLAB的确是高校教师、学生、科研人员和工程设计等技术人员的最好选择。2.Simulink仿真软件2.1Simulink的特点
Simulink的前身是simulib,问世于20世纪90年代初,以工具库的形式挂接在3.5版本的MATLAB上,以Simulink名称广为人知,是在MATLAB4.2x版本时期,Simulink不能运行,只能在MATLAB环境中运行。
Simulink是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户的交互接口是基于Windows模型化图形输入,使得用户可以把更多的精力投入到系统模型的构建,而非编程上。目前Mathworks公司已经把Simulink发展成为一个系列产品。例如,它与Stateflow状态流配合,可以建立清晰的、离散事件系统的概念化模型;与Real-timeworkshop配合,可以产生进行实时仿真和运行于各种硬件的C代码;与DSPBlockset配合使用,可以进行DSP装置和系统的快速设计和仿真。Simulink在CommunicationToolbox,NonlinearControlDesignBlockset,PowerSystemBlockset等专业工具包中可对通信系统、非线性控制系统、电力系统进行更深入的建模、仿真和分析研究。
Simulink是一个用来对动态系统进行分析建模和仿真分析的软件,它支持线性和非线性系统,连续和离散时间模型,或者是两者的结合。系统还可以是多采样率的,比如系统的不同部分拥有不同采样速率。
2.2Simulink仿真建模的方法
Simulink仿真建模的一般步骤如下:
(1)首先根据系统(对象)的具体情况建立模型;
(2)添加建立的对象模型模块;
(3)连接添加的对象模型模块;
(4)运行仿真,得到系统(对象)的仿真结果。
对于建模,Simulink提供了一个图形化的用户界面(GUI),用户可以采用鼠标点击或拖放模块图标的方法来建模。通过图形用户界面(GUI),用户可以像用铅笔在纸上画图一样画模型图。这是以前需要借助编程语言并用公式表达微分方程的仿真软件包所不能及的。Simulink包括一个复杂的由接收器、信号源、线性和非线性组件以及连接件组成的模块库,当然也可以是用户自己制定的模块,Simulink的所有模型是分级的,因此可以通过自上而下或者自下而上来建立模型,用户可以在最高层面上查看一个系统,然后通过双击系统的各个模型进入系统的低一级层面以查看模型的更多细节,Simulink的这一方法为用户提供了一个了解模型的组成以及组成的各个部分是如何相互联系的较好途径。
定义完一个模型后,就可以通过Simulink菜单或者在MATLAB的命令处理窗口输入命令对它进行仿真处理。菜单方式对于交互式工作非常方便,而命令行方式对于处理成批的仿真比较有效。使用Scopes(示波器)或者其它的显示模块,可以在运行仿真时及时观察到仿真结果。另外,还可以在仿真时改变参数并且立即就可以看到输出会有什么新的变化。仿真的结果可以放在MATLAB的工作空间(Workspace)中,以待进一步的处理或者可视化。
3.MATLAB应用于电路的分析计算
下面以一个微分方程和一个二阶电路的建模示例来说明。
例1给微分方程:x(t)=-2x(t)+u(t)建模。
式中u(t)是一个幅度为1、频率为1弧度/分的方波。这一模型的仿真建模步骤如下:
首先要找到对象需要的模型模块。例如Integrator(积分)模块,Gain(增益)模块,Sum(求和)模块,Scope(示波器)模块,SignalGenerator(信号发生器)模块,在信号发生器的模块设置中将波形的形式选择为SquareWave(方波)。然后添加这些对应的模块,再根据它们的相互关系进行连接,得到的建模图形如图1所示:
7
第19卷第5期2006年10月
高等函授学报(自然科学版)
JournalofHigherCorrespondenceEducation(NaturalSciences)
Vol.19No.5August2006
functiondy=myfile(t,y);%建立一个文件名为myfile的函数存盘供ODE调用
dy=zeros(2,1);
dy(1)=-300*y(1)+10*y(2)+2000;dy(2)=-1000*y(1)-100*y(2);
图1方程的仿真建模图
仿真之后得到的波形如图2所示:
在命令行中输入如下的命令:
[t,y]=ode45('myfile',[0,0.2],[5,100]);%调用ODE函数,数据初始化
plot(t,y(:,1),'LineWidth',1.5);%根据计算结果输出iL波形并规定显示的格式
set(gcf,'color','w');%使输出图形的背景色为白色
plot(t,y(:,2),'lineWidth',1.5);%输出Uc
波形
set(gcf,'color','w');grid;
运行结果可以得到如图4和图5的图形。
图2仿真波形图
例2一个二阶电路如下图3示,开关K原来是断开的,电路已经稳定,已知E=200V,R1=30,L=0.1H,R2=10,C=1000F,Uc=100V(参考方向由下至上),在t=0时将开关K闭合,求t 0时电感电流iL(t)及Uc(t)的变化规律。
图3二阶电路原理图
图4电容C电压波形
图中所示的电路可以在时域内求解,运用KCL,KVL以及电感、电容元件VCR,有以下的方程:
10-4!U'(c)+0.04U(c)+4U(c)+200=0.
下面在MATLAB中用两种方法来进行:第一种方法:调用数值积分ODE函数求解。对于题图3所示的电路取电流iL和电容电压Uc为状态变量,可列出如下状态方程:
初始条件:iL(0-)=5A,Uc(0-)=100V.对于状态方程求解,MATLAB提供了一套算法和结构都十分精良的计算程序ODESolver,可以根据不同的对象选用不同的算法。本题的基本程序如下:8
图5电感电流波形
第二种方法:利用Simulink仿真。
MATLAB命令窗口中新建模型命令,然后
第19卷第5期2006年10月
高等函授学报(自然科学版)
JournalofHigherCorrespondenceEducation(NaturalSciences)
Vol.19No.5August2006
打开Simulink模块库,新建一个模型。需要用到的模块是:积分模块(Integrator)1/s、比例运算模块(Gain)、求和模块(Sum)、恒定模块(Constant),原电路仿真模型的核心思想是:
U'(c)经积分得U(c),而U(c)、U(c)经代数运算又可得到U'(c).由前面式子可得:U'(c)=-400U(c)-40000U(c)-2!106.
在仿真前双击U(c)模块,将其初始值设为100V,双击模块U(c)将其初始值设定为-15000V.在菜单下选择∀simulation/simulationpatameter#的命令,设置仿真∀starttime#为0s,而stoptime为0.2s。最后选择∀simulation/start#命令进行仿真。双击示波器∀scope#得到了和方法一中一样的电容电压Uc变化曲线图,电容电压Uc仿真的模型图如图6所示。在求出电容电压Uc之后,由电路的约束关系就很容易得到电感电流iL的仿真模型图。
由前面提到的状态方程可以得出电感电流iL的方程如下:
iL=-300iL+10Uc+2000.
在前面电容电压模型的基础上加上关于电感电流iL的模块,可得到如图7所示的一个仿真模型。
由图6和图7经过仿真之后得到Uc的波形和电感电流iL的波形与图4和图5完全一致。
图7二阶电路的电容电压和电感电流仿真建模图
至此已完成了一个较为简单的电路模型分析与仿真,可以看到,MATLAB在作电路仿真时,第一步要做的就是数学建模,然后再在数学建模的基础之上进行相关的仿真。
本文通过两个简单的例子介绍了如何应用MATLAB语言编程和直接利用MATLAB的可视化仿真环境Simulink设计模块图的方法来对电路进行分析和计算,该方法不仅可以节约计算时间、方便地修改和调试电路参数,而且还可以非常直观地观察和测量电路中的电压、电流和功率等物理量的实时变化曲线。结果表明,MATLAB提供了高效简洁的编程方法,其强大而简易的绘图功能、矩阵和数组运算能力以及很强的扩充性,完全能满足电路分析、计算的需要,从而可以大大地提高计算精度和工作效率,在电子电路理论学研究与工程实践中均具有很好的应用价值。
参考文献
[1]
侯勇严,孙瑜,郭.MATLAB在复杂电路分析中的应用研究[J].微计算机信息,2004,(10).
图6二阶电路的电容电压仿真建模图
[2]王沐然.MATLAB与科学计算(第二版)[M].北京:
电子工业出版社,2003.
[3]刘瑞叶,任洪林,李志民.计算机仿真技术基础[M].
北京:电子工业出版社,2004.
[4]张葛祥,李娜.MATLAB仿真技术与应用[M].北
京:清华大学出版社,2003.
9