matlab电路仿真.docx
- 文档编号:11806788
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:35
- 大小:767.22KB
matlab电路仿真.docx
《matlab电路仿真.docx》由会员分享,可在线阅读,更多相关《matlab电路仿真.docx(35页珍藏版)》请在冰豆网上搜索。
matlab电路仿真
matlab电路仿真
1.1.1.
1.1.2.
1.1.3.对于经验丰富的模块用户(略)
1.1.4.所有用户(略)
1.2.创建和仿真简单的电路
1.2.1.介绍
SymPowerSystem允许你对包含线性或非线性的电子电路进行建模和仿真。
在本章节中,您将学习到:
(1)浏览SymPowerSystems的powerlib库
(2)如何利用SymPowerSystem创建一个简单的电路
(3)如何将电路与simulink模块互联。
下述电路是即将创建的电路:
图1要建模和仿真的电路
1.2.2.使用powerlib创建电路
(1)使用如下命令打开powerlib:
powerlib
(2)从powerlib的文件菜单下,允许“新建”菜单命令,新建一个空白电路稳定,存为:
circurt1
(3)打开ElectricalSources库,复制其中的ACVoltageSource模块到circuit1中
(4)双击ACVoltageSource,打开其属性设置对话框,按图1所示进行设置
(5)改模块的名称为“Vs”
(6)将elements库中的ParallelRLCBranch模块复制到circuit1中,按图1进行参数设置
(7)用同样的方法加入其他模块到电路中
(8)注意加入的传输线模块:
传输线模块模型图如下(这是一段模型,一条导线通常有若干段,每一段参数都一样,如图1所示):
该模型是对参数分布一致的传输线的模拟。
它能传输的电信号最大频率近似为:
fmax=Nv/(8l)
其中,N---PI节数,
v---导线传输速度,v=1/(sqrt(L*C))
l----导线长度。
关于SeriesRLCLoad模块:
描述该模块的有如下参数:
normalvoltageVn(Vms):
额定电压(有效值)
normalfrequency(Hz):
额定频率
activepower(w):
有效功率(有功功率)
InductivereactivepowerQL:
感性无功功率
CapacitivereactivepowerQC:
容性无功功率
(9)加一个电压测量模块(Voltagemesureblock)到电路中,该模块位于mesurements库中
然后将simulink中的scope模块添加到电路中,并将其与电压测量模块互联。
1.2.3.将电子电路与simulink连接起来
电压测量模块(Voltagemesureblock)是SymPowerSystem模块与simulink模块直接的接口。
对于上面的例子,你实现了一种从电路到simulink信号的接口。
电压测量模块将电压转换成simulink信号。
类似的,电流测量模块(currentmesureblock)能将电流转换为simulink信号。
你也可以将simulink信号连接到电路中,例如,你也可以将受控电压源加入到电路中。
如图2所示。
图2
1.2.4.测量电压和电流
电压测量模块和电流测量模块有方向规定,标+为正向,规定的方向是从正到负,若电压值或电流值为+,则表示他们的方向与规定方向相同,否则,相反。
万用表模块(multimeter)则没有事先规定的方向,它是根据仿真结果仿真后才显示方向的。
可以通过如下命令了解方向:
get_param(gcb,'Orientation')
1.2.5.连接电容和电感的基本原则
(1)理想电压源不能与纯电容并联
(2)理想电流源不能与纯电感串联。
违反上述原则,电路将无法仿真。
必须修正。
方法是在电容旁串联一个小电阻或在纯电感两端并联一个大电阻。
1.2.6.使用powergui模块仿真simpowersystem模型
powergui模块对于任何包含simpowersystems模块的simulink模型的仿真是必须的。
他用于存储等价的simulink电路,这些电路用来表示simpowersystem模块的状态方程。
当您在仿真中使用该模型,应遵循以下原则:
●将powergui模块置于仿真图的顶层用以优化性能。
然而,你也可以把它置于任何需要的地方。
例如,在一个子系统中。
这不会影响系统功能;
●其他(略)
1.3.简单电路分析
1.3.1.介绍
本节你将学习:
●使用power_analyze命令获取模型的状态空间描述
●使用powergui的图形用户接口计算电路的稳态电压和电流
●电路的频域分析
1.3.2.电路状态变量
电路状态变量是与电路中的电感和电容元件有关的状态变量。
许多模块中包含了电感或电容,如并联RLC模块,PISectionLine模块,等等。
电路的状态变量有电路中各电容的两端电压和流经各电感的电流组成。
电路状态变量的名称由系统自动产生,其命名规则如下:
●变量名由两部分组成:
前导符_后缀。
前导符和后缀之间用下划线隔开;
●前导符为Il或Uc(Il表示流经电感的电路,Uc表示电容器两端的电压)‘
●后缀为模块名称。
1.3.3.使用power_analyze进行状态空间描述
你可以使用power_analyze获取一个电路模型的状态空间描述,例如输入下面的命令,可以获取上面创建的简单电路的状态空间描述信息:
[A,B,C,D,x0,electrical_states,inputs,outputs]=power_analyze('circuit1')
x’=Ax+Bu
y=Cx+Du
要判定电路是否稳定,只要求A的特征值,看看A的特征值的实部是否都小于0,只有满足此条件,电路才是稳定的。
1.3.4.稳态分析
使用powergui的图形用户接口命令可以进行电路的稳态分析。
菜单命令:
Analysistools-->Steady-StateVoltagesandCurrents
1.3.5.频率分析
powerlib包含了一个阻抗测量模块(ImpedanceMeasurement),可以用于测量电路中任意两点间的阻抗。
接下来,你将使用两种方法,利用该模块测量节点B2点的阻抗:
●基于状态空间模型进行计算
●使用阻抗测量模块和powergui模块进行测量
(1)利用状态空间模型获取阻抗-频率之间的关系
注:
下面已经假定你的电脑上已经安装了控制系统工具箱
要测量B2点的阻抗与频率间的关系,需要在B2处加入另一个电流源,打开前面绘制的仿真模型图,将ACCurrentSource复制到电路中,最终如图3所示。
图3
接着,计算该电路的状态空间方程:
sys1=power_analyze('circuit1','ss')
该方程描述的是电路的连续状态空间方程。
在laplace域,B2点的阻抗定义为:
由交流电流源注入的电流与U2测量的电压间的传递函数。
利用下面的命令获取状态空间方程中的输入输出变量的名称:
sys1.InputName
ans=
'U_Vs'
'I_ACCurrentSource'
sys1.OutputName
ans=
'U_U2'
'U_U1'
节点B2处的阻抗与该状态空间模型的输出2和输入1间的传递函数相关,对于0~1500Hz频率范围,阻抗可由下式计算并显示出来:
freq=0:
1500;
w=2*pi*freq;
bode(sys1(1,2),w);
(2)利用阻抗测量模块(impedancemesurement)和powergui模块求阻抗与频率关系
打开powerlib的mesurement库,将阻抗测量模块(impedancemesurement)复制到你的模型中,重命名为ZB2,将ZB2的两个输入分别连接到B2点和地(这样便可以测量B2点对地的阻抗)。
现在打开powergui对话框,窗口中显示只有一个阻抗在测,命名为(ZB2,与模块名相同),设置频率范围为0:
2:
1500,Z幅度显示请选择对数刻度(logarithmic),选中“Savedatawhenupdated”复选框,并输入zData作为变量名用来保持阻抗-频率数据。
单击“update”按钮,可以看到改变参数后的阻抗幅值-频率图、阻抗相位-频率图。
注:
ZData的第1列是频率,第2列是阻抗(复数表示)。
1.4.指定电路初始状态
1.4.1.介绍
在这一节中,你将学习:
●包含有simpowersystems模块的simulink模型图的状态变量有哪些?
●设定状态变量的初始值
1.4.2.状态变量
包含有simpowersystems模块的simulink模型图的状态变量由以下组成:
●与simpowersystems中的RLC支路模块类型有关的电路状态。
他们在模型的状态空间描述中被定义。
●SimPowerSystems的电气simulink模型的simulink状态,例如同步机械模块,饱和变压器模块和三相动态负载模块
●你的模型中的其他模块的simulink状态
下图给出了包含上述三种模块的一个实例。
1.4.3.初始状态
所谓初始条件,是指仿真前应用在整个系统上的各状态变量的初始值,也称作初始状态。
初始状态可以在模块中设定。
大多数模块允许用户在设计时指定初始状态。
对于电路模型,simpowersystems可自动设置模型的初始状态,并保证开始仿真时直接进入稳态。
然而,你可以自行设定电路中的电容和电感的初始状态。
使用power_init函数也可以设定初始状态
1.4.4.使用powergui设定电路初始状态
第1步:
在Matlab命令行中键入power_transient,打开标题为Transient
AnalysisofaLinearCircuits的SimPowerSystems实例。
重命名其中RLC支路模块
第2步:
从powergui模块的分析工具菜单下,选择“初始状态设定”选项,5个电路状态变量的初始值已经设定,这些初始设定能使电路一开始仿真,就为稳态。
第3步:
打开scope模块,并开始仿真。
第4步:
返回到第2步,试着改变某些变量的初始值,再仿真,看看结果是否发生变化。
若不懂,请看在线帮助。
1.5.仿真暂态过程
1.5.1.介绍
本节你将学习到:
●怎样创建电路子系统(subsystem)
●使用断路器进行电路的暂态过程仿真
●比较不同传输线模型下的时域仿真结果
●如何离散化电路并将其仿真结果与相应的连续的可变步长算法的仿真结果相比较
1.5.2.使用开关仿真暂态过程
simpowersystems的一个重要功能是对电路的暂态过程进行仿真。
可以在电路中加入机械开关或使用功率电子开关来完成暂态过程的仿真。
首先,打开前面创建的circuit1仿真模型,删除连接到B2节点上的电流源,将新的系统另存为circuit2。
在接入开关前,最好修改一下电路,simpowersystems允许用户将多个元器件组合在一起形成一个电路子系统。
这一特点能使复杂电路大大简化。
使用这一特点,将源阻抗转换到一个子系统中:
(1)框选标识为Rs_eq和Z_eq的两个模块,选择“Edit-->createsubsystem”菜单命令,这两个模块变成了一个子系统模块(subsystem)
(2)选择“Edit>Masksubsystem”菜单命令,改变子系统图标,在封装编辑器中的icon选项中,输入下列命令:
disp('Equivalent\nCircuit')
subsystem上就会显示相应文字。
(3)选择“Format>Showdropshadow”菜单命令,给子系统模块设置阴影。
(4)双击子系统模块,可以查看其组成。
(5)插入电路断路器(acircuitbraker)
断路器是理想开关与一个小电阻串联组成的模型。
关于断路器的模型说明,请参考matlab相关帮助。
按如下设置断路器的参数:
(1)打开braker模块对话框,将其参数作如下设置:
Ron0.001Ω
Initialstate0(open)
Rsinf
Cs0
Switchingtimes[(1/60)/4]
(2)按前面的图形连接各模块
(3)打开scopeU2,单击参数图标,选择“DataHistory”选项卡,单击“Savedatatoworkspace”按钮,指定变量名为U2来保存仿真结果,然后将U2的格式(format)选项设为“array”,同时,去除“Limitrowstolast”选项,以便显示整个波形。
接着,便可以仿真系统了。
1.5.3.连续、变步长积分算法Continuous,VariableTimeStepIntegrationAlgorithms
打开“PIsectionLine”对话框,确认sections的数目设为1,打开“Simulation>Simulationparameters”对话框,由于你的系统包含开关,故需要一个刚性的积分算法(astiffintegrationalgorithm)进行仿真。
在“solver”面板,选择变步长刚性积分算法(astiffintegrationalgorithm)ode23t。
保留其他默认参数值(如相对误差1e-3),设置仿真结束时间(stoptime)为0.02秒,打开示波器(scope),开始仿真。
观察示波器U1和示波器U2上的波形。
一旦仿真结束,将U2的值保存给变量U2_1,即在工作空间中执行如下命令:
U2_1=U2;
打开PIsectionLine对话框,将sections的数目设为10,再次仿真,仿真结束,把U2的值保存给变量U2_2。
在将电路修改为分布参数模型之前,将系统另存为circuit2_10pi,以便以后重复使用。
用分布参数线(distributedparameterline)模块替换图中的pi段线模块,设置其相(phase)数为1。
将该系统保存为circuit2_dist.
重新仿真,将U2赋给变量U2_d。
现在可比较上面三种不同模型的仿真结果了。
每一个变量U2_1,U2_10,U2_d是一个两列的矩阵,第1列是时间,第2列是对应的电压值。
使用下列命令在同一幅图上打印出三个波形(如图5所示)。
plot(U2_1(:
1),U2_1(:
2),U2_10(:
1),U2_10(:
2),U2_d(:
1),U2_d(:
2));
1.5.4.离散化电路系统
simpowersystems的一个重要特征是,他不仅能用连续或变步长积分算法进行仿真,而且可以使用离散化电路系统的算法进行仿真。
对于小系统,变步长算法一般要比固定步长算法快,因为它需要的积分的步长的数目较少;而对于包含了许多状态和非线性模块(如功率电子开关)的大型电路系统,离散化电路系统则具有较大的优势。
当你离散化系统时,仿真的精度由时间步长控制。
若使用太大的时间步长,精度可能不够。
确定时间步长是否合适的唯一方法是通过改变时间步长,反复仿真,比较仿真结果。
通常,对于在50Hz或60Hz的功率系统上或使用了线性整流功率电子(line-commutatedpowerenectronic)元件(如二极管、可控硅等)的系统上进行暂态仿真,取20us-50us的时间步长一般能取得较好的仿真效果。
对于使用了强制整流功率电子开关的系统,必须减小时间步长。
绝缘栅极双极性晶体管(insulated-gatebipolartransistor(IGBT)),场效应管(field-effecttransistor,FET),门极关断晶闸管(gate-turnoffthyristor)等工作在很高的开关频率状态下。
例如,要仿真一个工作在8Hz的脉宽调制(pulse-width-modulated,PWM)转换器,需要设置步长大约为8us。
现在学习怎样离散化你的系统并将仿真结果同连续和离散系统做比较。
打开你在前面保存的circuit2_10pi系统,该系统包含24个电路状态和一个开关。
打开powergui然后选择离散化电路模型(discretizeelectricalmodel)。
设置采样周期25e-6s。
重新开始仿真,功率系统将使用Tustin方法(相应于梯形积分)并以25us采样周期进行离散化。
打开“Simulation>Simulationparameters>Solver”对话框,设置仿真时间为0.2s。
启动仿真。
注:
一旦系统被离散化,电路系统再无连续状态了。
因此,如果你不需要变步长积分方法进行仿真,在“Simulation>Simulationparameters>Solver”对话框中,可选择Fixed-step和discrete选项,并设定固定步长为25us
(nocontinuousstates)
为测量仿真时间,可运行下面的命令重新仿真:
tic;sim(gcs);toc
当仿真完成后,其间所经历的时间会显示在Matlab命令行窗口。
要返回连续仿真状态,打开powergui模块,选择“continuous”选项。
如果比较一下连续仿真和离散仿真,你会发现离散仿真比连续仿真将近快3.5倍。
要比较两种仿真方法的精度,请完成下列三个仿真:
(1)仿真连续系统,Ts=0
(2)仿真离散系统,Ts=25us
(3)仿真离散系统,Ts=50us
对于每一个仿真,将U2值保存到不同的变量中,相应的为U2c,U2d25,U2d50,使用下列命令绘制U2波形:
plot(U2c(:
1),U2c(:
2),U2d25(:
1),U2d25(:
2),
U2d50(:
1),U2d50(:
2))
从上图中,可以看出,25us的离散化系统已经非常接近连续系统了,50us有较大误差。
1.6.矢量仿真方法简介
1.6.1.介绍
本节你将学会:
●将矢量仿真方法用于简单的线性电路中
●了解该方法的优点和局限性
到目前为止,你已经学会了两种仿真电路的方法:
●使用连续simulink求解器及变步长进行仿真
●用离散化方法及固定步长进行仿真
本节介绍的是第三种方法-矢量求解法进行仿真
1.6.2.何时使用矢量求解法
矢量求解法主要用于研究功率系统的电子机械振荡,这类系统一般由大型的发电机和电动机组成。
例如,可以使用这种方法对三相系统和机械类的多机械系统进行仿真。
然而,该不方法不仅仅局限在机械的暂态稳定性研究领域,完全可以拓展应用到任何线性系统上。
在一个线性电路中,如果你所感兴趣的仅仅是当开关处于关或开的状态下所有电压和电流的幅值和相位,那么,就没有必要求解由电阻、电容和电感交互作用而带来的差分方程(也即状态空间模型)。
你仅仅需要求解相对而言简单得多的与电压和电流相位有关的代数方程组,这正是矢量求解法所要解决的问题。
顾名思义,该方法以矢量描述电压和电流。
矢量是一个复数,可以用来表示特定频率下的正弦电压和电流。
矢量既可以用笛卡尔坐标(Cartesiancoordinates)表示(复数的实部与虚部),也可以用极坐标(polarcoordinates)表示。
在忽略电路状态的情况下,矢量求解法无需特定的求解器用于求解系统的电路部分。
因此仿真速度要快得多。
但应始终记住,这种快速求解技术只能给出某个特定频率下的结果。
1.6.3.电路暂态过程的矢量仿真
下面你将会把矢量求解法应用到一个简单的线性电路上。
打开powerlib的演示实例库,打开通用演示库(GeneralDemoslibrary),选择名称为“暂态分析”的示例,一个名为power_transient的系统打开了,如下图所示:
可以通过各模块参数设置对话框,看看各模块设置的参数。
(1)激活powergui中的矢量求解法
现在,你将使用矢量求解法仿真同样的电路。
这种选项可以通过打开powergui来设定,具体设置请参考在线帮助。
设定该选项后,continues变为phasors,在启动仿真前,还需指定输出到示波器上的信号的格式。
(2)选择矢量信号测量的格式
双击“VoltageMeasurement”模块或“CurrentMeasurement”模块,可以看到有一个菜单,通过该菜单可设置矢量信号的四种输出格式:
complex(复数,默认),real-imag(实部-虚部),magnitude-angle(幅度-角度),magnitude(幅度)。
当你要处理的信号为复数信号时,由于示波器(scope)只能观察信号幅度,因此,这里选择“magnitude”。
重新启动仿真,60Hz的电压和电流的幅度显示在示波器(scope)上。
从连续仿真和矢量仿真得到的波形上,可以看出他们的波形是有区别的。
但他们反映了统一规律。
注意到:
连续仿真情况下,电路波形状态改变出现在断路器打开时电流的下一个0点位置。
而对于矢量仿真,电路波形状态改变与断路器开关时刻是同步的。
(3)处理电压和电流矢量
“complex”格式允许运用复数运算和矢量处理,无需将实部和虚部分离。
例如,假设你要计算负载的功耗(有功功率P和无功功率Q),而复数功率s可通过下式计算:
这里的I*是电流矢量的共轭复数。
1/2用于将电压和电流的幅度从峰值转换为有效值。
设置电压和电流的输出值均为“complex”格式,利用来自SimulinkMath库的模块,实现功率的测量,如下图所示:
2.高级组件和技术
2.1.功率电子简介
2.2.仿真变速发动机的控制
2.3.三相系统和机械
2.4.构建和定制非线性模型
2.4.1.介绍
SimPowerSystems提供了大量非线性元器件模型。
然而,有时,你可能需要定制自己的模型并将其与SimPowerSystems提供的标准器件模型相连。
定制的模型可能是一种用来模拟一段电弧或变阻器的非线性电阻,也可能是可饱和的电感,一种新的类型的发电机或电动机等等。
在本节中,你将学习如何在simulink中定制自己的非线性模型。
这里以一个简单的可饱和的非线性电感和非线性电阻为例来说明。
2.4.2.一个非线性电感的建模
考虑一个工作在额定频率为fnom=60Hz、额定电压Vnom=120VRMS的2H的电感。
从0-120VRMS范围内,电感值为一个常数:
2H,当电压超过其额定电压时,电感饱和,将为0.5H,下图绘制的是该电感的非线性特征曲线,电流量(current)和磁通量(flux)的刻度为每单位(perunit),额定电压和电流被选为每单位的基准值。
流经电感的电流是磁通量
的非线性函数,依次,磁通量是电感两端电压的非线性函数,该关系可用下列方程描述:
或
因此,该电感的非线性模型可以用一个受控电流源来描述,电流i是电压v的非线性函数,如下图所示:
“非线性电感的实现”一节给出了一个包含2H非线性电感的电路,该非线性电感与两个电压源(1个120V、60Hz的交流电压源和一个直流电压源)和一个5欧的电阻串联。
所有用于构建非线性电感的元件都被组合在一个名为非线性电感的子系统中,电感的两端标有“in”和“out”。
注意,第2个输出返回的是磁通量
,也被加到子系统中,将该输出连接到scope模块,可以观察磁通量的变化。
该非线性模型使用了两个powerlib模块和两个simulink模块。
这两个powerlib模块分别是电压测量模块(用于读取电感两端的电压)和控制电流源模块(controledcurrentsource),根据模型上的标示,该电流的箭头方向是从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 电路 仿真