matlab电路仿真.docx
《matlab电路仿真.docx》由会员分享,可在线阅读,更多相关《matlab电路仿真.docx(43页珍藏版)》请在冰点文库上搜索。
matlab电路仿真
SHANDONGUNIVERSITY OF TECHNOLOGY
数学软件结业论文
题目:
电路仿真方法研究
学院:
电气与电子工程学院
专业:
电气工程及其自动化
学生:
武奥
学号:
指导教师:
周世祥
2015年11月
摘要Ⅰ
目录Ⅲ
第一章引言1
1.1课题的背景和意义1
1.2深度学习的前世今生2
第二章自编码器模型构建4
2.1入门4
1.1.2.2SymPowerSyste是什么5
2.引言
2.1.1.1课题的背景和意义
随着计算机技术和互联网的发展,人类开始步入大数据时代,我们需要从海量的数据中找到自己感兴趣或者对自己有用的信息,这就要求计算机能在短时间检索出满意的结果。
伴随着搜索引擎的发展我们在文字检索方面已经取得了值得骄傲的成就,但是在更加直观,更加方便的图片检索方面仍然有待发展。
试想一下,如果我们能通过图片检索到自己想要的信息我们的生活将会更加便利,我们只要对着自己感兴趣的东西扫一扫就能获得我们需要的信息。
要实现上述目标就要求计算机能像人的视觉系统一样能识别图片、对图片进行分类处理。
然而,每幅图片的信息量就很大,要从海量的图片中进行识别处理数据量可想而知,而且并不是图片中的所有信息都是有用的。
这就需要我们对图片进行降维处理和特征提取。
虽然已有的降维方法在理论支持上很成熟,但是基于线性的方法并不适合图像识别而且实际效果也不尽人意。
深度学习算法是2006年提出的一种新的方法,虽然缺乏理论支持但在实际应用中取得良好效果。
深度学习算法在计算机视觉、图像识别方面已经开始普遍使用,相对于以前的方法准确率大大提高。
除了在图像识别领域,深度学习在语音识别、自然语言处理等方面也有突破性进展:
2012年11月,在中国XX举行的“21世纪的计算机大会”上微软公开演示了一个全自动同声传译系统,微软首席研究员的英文演讲被后台的计算机自动识别、翻译、合成并转换成和演讲者音色相近的中文发音,这背后的关键技术就是深度学习算法。
深度学习研究的日益成熟和完美应用一定可以给我们的生活带来极大的便利和智能化。
Matlab电路仿真软件包-simpowersystems
3.入门
3.1.SymPowerSystem是什么
3.1.1.介绍
在Matlab提供的simulink仿真环境下,与其他建模产品结合在一起,用于对电子、机械系统进行建模。
要学会使用SymPowerSystem,应首先学会使用Simulink仿真。
3.1.2.设计中的仿真的作用(略)
3.1.3.SymPowerSystem仿真库
你可迅速将SymPowerSystem投入使用。
该库包含了许多典型的功率设备模型,例如,变压器、导线、机械、能源电子等。
这些仿真模型来源于产品手册,基于工程实际。
SymPowerSystem包含一个主要的库:
powerlib。
powerlib库显示了所有包含的模块和模块名称。
3.1.4.SymPowerSystem中的非线性模块(略)
3.1.5.仿真时需要的环境:
Maltab和Simulink
3.2.如何使用该指南
3.2.1.对于新用户
将学会如下知识和技能:
(1)使用该库创建和仿真电子电路模型
(2)将一个电子电路于simulink模块连接在一起
(3)分析电子电路的稳定状态和频率响应
(4)离散化模型,以便加快仿真速度
(5)使用矢量图仿真方法
(6)构建自定义的非线性仿真模型
3.2.2.对于经验丰富的模块用户(略)
3.2.3.所有用户(略)
3.3.创建和仿真简单的电路
3.3.1.介绍
SymPowerSystem允许你对包含线性或非线性的电子电路进行建模和仿真。
在本章节中,您将学习到:
(1)浏览SymPowerSystems的powerlib库
(2)如何利用SymPowerSystem创建一个简单的电路
(3)如何将电路与simulink模块互联。
下述电路是即将创建的电路:
图1要建模和仿真的电路
3.3.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模块添加到电路中,并将其与电压测量模块互联。
3.3.3.将电子电路与simulink连接起来
电压测量模块(Voltagemesureblock)是SymPowerSystem模块与simulink模块直接的接口。
对于上面的例子,你实现了一种从电路到simulink信号的接口。
电压测量模块将电压转换成simulink信号。
类似的,电流测量模块(currentmesureblock)能将电流转换为simulink信号。
你也可以将simulink信号连接到电路中,例如,你也可以将受控电压源加入到电路中。
如图2所示。
图2
3.3.4.测量电压和电流
电压测量模块和电流测量模块有方向规定,标+为正向,规定的方向是从正到负,若电压值或电流值为+,则表示他们的方向与规定方向相同,否则,相反。
万用表模块(multimeter)则没有事先规定的方向,它是根据仿真结果仿真后才显示方向的。
可以通过如下命令了解方向:
get_param(gcb,'Orientation')
3.3.5.连接电容和电感的基本原则
(1)理想电压源不能与纯电容并联
(2)理想电流源不能与纯电感串联。
违反上述原则,电路将无法仿真。
必须修正。
方法是在电容旁串联一个小电阻或在纯电感两端并联一个大电阻。
3.3.6.使用powergui模块仿真simpowersystem模型
powergui模块对于任何包含simpowersystems模块的simulink模型的仿真是必须的。
他用于存储等价的simulink电路,这些电路用来表示simpowersystem模块的状态方程。
当您在仿真中使用该模型,应遵循以下原则:
●将powergui模块置于仿真图的顶层用以优化性能。
然而,你也可以把它置于任何需要的地方。
例如,在一个子系统中。
这不会影响系统功能;
●其他(略)
3.4.简单电路分析
3.4.1.介绍
本节你将学习:
●使用power_analyze命令获取模型的状态空间描述
●使用powergui的图形用户接口计算电路的稳态电压和电流
●电路的频域分析
3.4.2.电路状态变量
电路状态变量是与电路中的电感和电容元件有关的状态变量。
许多模块中包含了电感或电容,如并联RLC模块,PISectionLine模块,等等。
电路的状态变量有电路中各电容的两端电压和流经各电感的电流组成。
电路状态变量的名称由系统自动产生,其命名规则如下:
●变量名由两部分组成:
前导符_后缀。
前导符和后缀之间用下划线隔开;
●前导符为Il或Uc(Il表示流经电感的电路,Uc表示电容器两端的电压)‘
●后缀为模块名称。
3.4.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,只有满足此条件,电路才是稳定的。
3.4.4.稳态分析
使用powergui的图形用户接口命令可以进行电路的稳态分析。
菜单命令:
Analysistools-->Steady-StateVoltagesandCurrents
3.4.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列是阻抗(复数表示)。
3.5.指定电路初始状态
3.5.1.介绍
在这一节中,你将学习:
●包含有simpowersystems模块的simulink模型图的状态变量有哪些?
●设定状态变量的初始值
3.5.2.状态变量
包含有simpowersystems模块的simulink模型图的状态变量由以下组成:
●与simpowersystems中的RLC支路模块类型有关的电路状态。
他们在模型的状态空间描述中被定义。
●SimPowerSystems的电气simulink模型的simulink状态,例如同步机械模块,饱和变压器模块和三相动态负载模块
●你的模型中的其他模块的simulink状态
下图给出了包含上述三种模块的一个实例。
3.5.3.初始状态
所谓初始条件,是指仿真前应用在整个系统上的各状态变量的初始值,也称作初始状态。
初始状态可以在模块中设定。
大多数模块允许用户在设计时指定初始状态。
对于电路模型,simpowersystems可自动设置模型的初始状态,并保证开始仿真时直接进入稳态。
然而,你可以自行设定电路中的电容和电感的初始状态。
使用power_init函数也可以设定初始状态
3.5.4.使用powergui设定电路初始状态
第1步:
在Matlab命令行中键入power_transient,打开标题为Transient
AnalysisofaLinearCircuits的SimPowerSystems实例。
重命名其中RLC支路模块
第2步:
从powergui模块的分析工具菜单下,选择“初始状态设定”选项,5个电路状态变量的初始值已经设定,这些初始设定能使电路一开始仿真,就为稳态。
第3步:
打开scope模块,并开始仿真。
第4步:
返回到第2步,试着改变某些变量的初始值,再仿真,看看结果是否发生变化。
若不懂,请看在线帮助。
3.6.仿真暂态过程
3.6.1.介绍
本节你将学习到:
●怎样创建电路子系统(subsystem)
●使用断路器进行电路的暂态过程仿真
●比较不同传输线模型下的时域仿真结果
●如何离散化电路并将其仿真结果与相应的连续的可变步长算法的仿真结果相比较
3.6.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”选项,以便显示整个波形。
接着,便可以仿真系统了。
3.6.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));
3.6.4.离散化电路系统
simpowersystems的一个重要特征是,他不仅能用连续或变步长积分算法进行仿真,而且可以使用离散化电路系统的算法进行仿真。
对于小系统,变步长算法一般要比固定步长算法快,因为它需要的积分的步长的数目较少;而对于包含了许多状态和非线性模块(如功率电子开关)的大型电路系统,离散化电路系统则具有较大的优势。
当你离散化系统时,仿真的精度由时间步长控制。
若使用太大的时间步长,精度可能不够。
确定时间步长是否合适的唯一方法是通过改变时间步长,反复仿真,比较仿真结果。
通常,对于在50Hz或60Hz的功率系统上或使用了线性整流功率电子(line-mutatedpowerenectronic)元件(如二极管、可控硅等)的系统上进行暂态仿真,取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。
启动仿真。
为测量仿真时间,可运行下面的命令重新仿真:
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有较大误差。
3.7.矢量仿真方法简介
3.7.1.介绍
本节你将学会:
●将矢量仿真方法用于简单的线性电路中
●了解该方法的优点和局限性
到目前为止,你已经学会了两种仿真电路的方法:
●使用连续simulink求解器及变步长进行仿真
●用离散化方法及固定步长进行仿真
本节介绍的是第三种方法-矢量求解法进行仿真
3.7.2.何时使用矢量求解法
矢量求解法主要用于研究功率系统的电子机械振荡,这类系统一般由大型的发电机和电动机组成。
例如,可以使用这种方法对三相系统和机械类的多机械系统进行仿真。
然而,该不方法不仅仅局限在机械的暂态稳定性研究领域,完全可以拓展应用到任何线性系统上。
在一个线性电路中,如果你所感兴趣的仅仅是当开关处于关或开的状态下所有电压和电流的幅值和相位,那么,就没有必要求解由电阻、电容和电感交互作用而带来的差分方程(也即状态空间模型)。
你仅仅需要求解相对而言简单得多的与电压和电流相位有关的代数方程组,这正是矢量求解法所要解决的问题。
顾名思义,该方法以矢量描述电压和电流。
矢量是一个复数,可以用来表示特定频率下的正弦电压和电流。
矢量既可以用笛卡尔坐标(Cartesiancoordinates)表示(复数的实部与虚部),也可以用极坐标(polarcoordinates)表示。
在忽略电路状态的情况下,矢量求解法无需特定的求解器用于求解系统的电路部分。
因此仿真速度要快得多。
但应始终记住,这种快速求解技术只能给出某个特定频率下的结果。
3.7.3.电路暂态过程的矢量仿真
下面你将会把矢量求解法应用到一个简单的线性电路上。
打开powerlib的演示实例库,打开通用演示库(GeneralDemoslibrary),选择名称为“暂态分析”的示例,一个名为power_transient的系统打开了,如下图所示:
可以通过各模块参数设置对话框,看看各模块设置的参数。
(1)激活powergui中的矢量求解法
现在,你将使用矢量求解法仿真同样的电路。
这种选项可以通过打开powergui来设定,具体设置请参考在线帮助。
设定该选项后,continues变为phasors,在启动仿真前,还需指定输出到示波器上的信号的格式。
(2)选择矢量信号测量的格式
双击“VoltageMeasurement”模块或“CurrentMeasurement”模块,可以看到有一个菜单,通过该菜单可设置矢量信号的四种输出格式:
plex(复数,默认),real-imag(实部-虚部),magnitude-angle(幅度-角度),magnitude(幅度)。
当你要处