习题:考虑简单的线性微分方程:y(4)+3y(3)+3y(2)+4y(1)+5y=exp(-3t)+exp(-5t)sin(4t+pi/3)
其中初值条件:y(0)=1,y(1)(0)=y(2)(0)=0.5,y(3)(0)=0.2。试用Simulink搭建起系统的仿真模型,并绘制出仿真结果曲线。 提高:封装子系统并能,设置子系统参数。
分析:首先我们将方程改写为如下形式a4y(4)+a3y(3)+a2y(2)+a1y(1)+a0y=f(t)=
x1*exp(m1*t)*sin(n1*t+p1)+x2*exp(m2*t)*sin(n2*t+p2)
初值条件:y(0)=b0,y(1)(0)=b1,y(2)(0)=b2,y(3)(0)=b3。对于这一类方程需要设定的参数(常数)就有17个。关于微分部分的设计比较简单,重点是对信号源u(t)的设计。主要有两种方式:1:从工作空间中输入;2:采用matlab自带模块生成。
一,信号源设计
1:从工作空间输入:编辑如下函数(m文件为xinhao.m)注意参数间的对应。
function xinhao=xinhao(x1,m1,n1,p1,x2,m2,n2,p2)
t=0:(1/500):10; %10为仿真时间
Data=x1*exp(m1*t).*sin(n1*t+p1)+x2*exp(m2*t).*sin(n2*t+p2);
xinhao=[t' Data'];
end
其mdl模型为z3.Mdl
运行时在command windows中输入simin=xinhao(1,-3,0,pi/2,1,-5,0,pi/3)得到信号源输入。
2:采用matlab自带模型实现(mdl文件为z1.mdl)。
信号源INPUT为(选中INPUT模块:右键—look under mask查看)
原理:终值为1的阶跃信号u(t)进行初值为0的积分可得到u=t*u(t)的信号,再通过自定义函数模块Fuction—x1*exp(m1*u)*sin(n1*u+p1)+x2*exp(m2*u)*sin(n2*u+p2)运算即可得(注意参数对应)所需的输入信号:f(t)=x1*exp(m1*t)*sin(n1*t+p1)+x2*exp(m2*t)*sin(n2*t+p2)
二:积分部分:
两种输入的积分均相同,(选中integrator子系统:右键—look under mask查看)
各级积分器需要设置积分初值,为了保证精确将积分步长由0.2 改为0.05(simulation菜单—Configuration Parameters 菜单—max step size)。各级比例器需要设置放大倍数。
三:子系统封装及参数设定:
1:信号源,由工作空间输入时不需要封装为子系统。由自带模块产生时需封装。
2:积分部分整个封装为一个双输出单输入的模块。
3:封装方式选中所需模块:右键—Creat Subsystem,封装成,由于系统是连续时间系统因
而不需要设定为条件执行子系统。
4:参数设定:由工作空间输入的信号源参数无需设定,自带模块产生参数设定(双击z1.Mdl
模型的INPUT 模块可见)。由上到下依次为 m1,n1,p1,x1,m2,n2,p2,x2。(选中
INPUT子系统:右键—Edit Mask—Parameters 中设定,Type 选定为Edit,Evaluate,Tunable
均选定)。并将fuction模块中的
达式改为相应的参数表达式。
5:积分部分参数:(双击积分模块查看)从上到下依次为a0,a1,a2,a3,a4,b0,b1,
b2,b3九个参数。(选中Integrator子系统:右键—Edit mask—Parameters 中设定)。
注意将积分器的初值及比例器的比例系数改为相应参数表达。
两参数表如下:
z1.mdl的INPUT参数表
积分模块参数表
四:注意事项,1;示波器设置:输出到工作空间以Array形式,输出scope:保存为SHUCHU,
信号源scope1保存为SHURU(去掉Limit Data Point)用于作图,(双击Scope,Scope1模
块 Parameters—Data History中设定)。2:输出到工作空间模块的输出形式:Array形式,
输出保存为J2,信号源保存为J1。只有采样点信号值不含时间,只能用于
而不能用于作
图。
五:运行结果:先输入参数再运行,为了保证结果精确进行时间为10s与30秒两次仿真。
参数输入:信号源—1:由工作空间输入的信号源,在command windows 中键
simin=xinhao(1,-3,0,pi/2,1,-5,4,pi/3)。2,自带模型产生,双击INPUT模块—从上到下
依次输入参数,1,-3,0,pi,2,1,-5,4,pi、3。 积分部分:由上到下依次输入参
数5,1,4,0.5,3,0.5,3,0.2,1,0.5,0.2九个参数。
运行结果:
设置好仿真时间后运行:
1:信号源图像两次一样,先仿真运行后在command windows中输入以下命令,既得如下图像(参见1.jpg)(30s仿真时m文件中的仿真时间要改为30):
figure(1);
plot(SHURU(:,1),SHURU(:,2));
xlabel('t/s');
ylabel('输入信号');
grid on;
2:输出两次运行后,在command windows中输入以下命令,既得以下图像。
(1):10s仿真图(参见2.jpg):
figure(2);
plot(SHUCHU(:,1),SHUCHU(:,2));
xlabel('t/s');
ylabel('输出信号');
grid on;
(2)30s仿真图(参3..jpg):
figure(3);
plot(SHUCHU(:,1),SHUCHU(:,2));
xlabel('t/s');
ylabel('输出信号');
grid on;
查看图像既可以采用以上方式查看亦可以用模型中自带的示波器查看。
以上图示效果较差,可直接在matlab中查看。
六—讨论:
若我们要采用传递函数做,必须把响应分为0输入响应Yzi,,0状态响应Yzs两部分
(mdl模型为z4.mdl)设L[f(t)]=F。由此对方程做拉普拉斯变换。
L(Yzs)=F/(a4*s^4+a3*s^3+a2*s^2+a1*s+a0)=F*h。
L(Yzi)=[( a4*b0*s^4+(a4*b1+a3*b0)*s^3+(a4*b2+a3*b1+a2*b0)*s^2+(a4*b3+a3*b2+a2*b1+a1*b0)+0)/ (a4*s^4+a3*s^3+a2*s^2+a1*s+a0)]*(1/s)=k*L(u(t))。
令k的分子为c1*s^4+c2*s^3+c3*s^2+c4*s+0 本题中 c1=1,c2=3.5,c3=5,c4=7.2
因而得到Yzs的传递函数为h,信号源为f(t)而Yzi的传递函数为K,信号源为u(t)。
f(t)由自带模块产生,需要设定的参数已在传递函数中。其他步骤与上面的设定完全类似,运行结果也相同再此便不再赘述,具体在matlab中查看。(这种做法比较复杂不建议采用)
习题:使用Combinatoinal Logic模块完成对 以下函数功能的建模和仿真:
Z1=X+Y Z2=XY
解:【方法一】:
(1)解算思路:先对X、Y的逻辑表达式进行化简,然后分别列出其真值表,可使用Combinational Logic模块完成对X及Y的建模和仿真。对Z1和Z2,可将X和Y作为输入,由于输入个数只有2个,列出其真值表十分简单,由此可再次使用Combinational Logic模块完成对Z1和Z2的建模及仿真。
(2)解算进程:
(ⅰ):化简: =
=
(ⅱ):列真值表
A
B
C
X
Y=
0
0
0
1
1
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
1
0
1
1
1
0
1
X
Y
Z1=X+Y
Z2=XY
0
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
(ⅲ)建模:具体电路图如下(ex7_2.mdl)
其各参数设置如下:
三:仿真结果:运行后,结果显示如下图(详见display7_1.jpg)
四:结果分析:
1:本题中采用Combinational Logic模块进行仿真是通过对各输入的不同状态列真值表来实现的,输入为A、B、C,为了在波形结果显示中比较直观地看出(ABC)的逻辑由(000)到(111)变化时对应的X、Y、Z1、Z2的结果,可将A、B和C的周期分别设为8、4和2,相位延迟分别设为4、2、1,这样可以将A、B和C各种可能组合状态的结果都依次显示出来而不会有遗漏。
【方法二】:
一、思路:可以将X、Y、Z1和Z2一起在真值表中显示,然后直接利用Combinational Logic模块进行仿真。
二、过程:(ⅰ)真值表
A
B
C
X=
Y
Z1=X+Y
Z2=XY
0
0
0
1
1
1
1
0
0
1
1
0
1
0
0
1
0
1
0
1
0
0
1
1
1
0
1
0
1
0
0
1
0
1
0
1
0
1
1
0
1
0
1
1
0
1
0
1
0
1
1
1
0
1
1
0
(ⅱ):电路图(ex7_11.mdl):
参数设置(仅Z1、Z2的有变化)
仿真结果与方法一相同(详见display7_11.jpg),图略。
习题:采用触发器(D or J-K)构建10分频器,完成对输入时钟10分频的功能。
要求:1、思路
2、逻辑表达式
3、模型图和输出波型
4、分析和总结
解答:
1:思路:由经验知N进制计数器的进位信号CO即相当于对计数脉冲CP的N分频,而在其后加一个T’触发器后所输出的信号Y,即为一个2N分频占空比为0.5的信号。因而构建一个10分频电路,只需要一个10进制的计数器,其CO信号既所求的十分频信号,再其他电路来调节CO信号的占空比,或者构建一个五进制计数器,其CO信号后接一个T’触发器,即形成10分频信号。占空比调节电路需要555定时器等其它器件搭建较为麻烦,在此不做介绍只给出占空比为0.5(m62..mdl),0.1(z61.mdl)的两个模型。
(1)m62.mdl模型如下
五进制计数子系统WUJ如下:
(2)z62.mdl模型如下
十进制计数器子系统BCD模型如下:
除计数部分不同外,两者不同之处还在于分频输出信号:
m62.mdl在MUJ的CO后加一个JK触发器接成一个T’触发器,当其触发脉冲CO下降沿来到时状态反转(并设其初态为零),形成10分频,0.5占空比的输出信号。
z62.mdl在BCD的CO后接了一个JK触发器行成一个延时器,将CO的高电平区间延时一个CP周期来到,占空比任为0.1,当然将JK触发器6的CLK接Q1时其占空比变为0.2。
2:输出波形及部分参数设置:为了方便观察将仿真时间设为40s
运行m62.mdl模型的如下结果:
从上图可以看见Y信号占空比为0.5,一个周期为10个CP脉冲周期为十分频。
参数设置:JK触发器的初态设为设为0。至于示波器的设置与第一题相同,仿真方式的设置与第一题的设置也相同,只是将时间延长为40s。CP脉冲的幅值设为一,直流电压设为1。重点是逻辑门的设置,在z62.mdl的结果后给出其参数设置。
Z62.mdl的运行结果如下。
由图知Y是对CP的十分频,且占空比为0.1
将T’触发器CLK改接Q1后运行得到结果如下
由上图易见,Y是对CP的十分频,且占空比为0.2。
Z62.mdl的参数设置与m62.mdl的参数设置完全相同。
逻辑与门AND的参数设置如下。
逻辑非门NOT的设置与上相同只是要将类型更改为非门即可。
注意:OUT DATA type必须改为逻辑运算。
3:结果分析
(1):关于同步,异步任意进制计数器的构成,参考《数字电子技术基础》第四版 高教出版社(阎石主编)。
(2):z62.mdl模型中BCD计数器的进位输出CP用Q4直接输出亦可以实现相同的功能。
(3):BCD部分的驱动方程:
J1=K1=1
J2=K2=(!Q4)&Q1
J3=K3=Q1&Q2
J4=Q1&Q2&Q3,K4=Q1
状态方程:由JK触发器的特征方程为,Qn+1=J&(!Qn)+!K&Qn将驱动方程带入即可得状态方程。
输出方程:CO=Q1&Q4,Qi=Qi(i=1,2,3,4)。
(4)WUJ部分的驱动方程:
J1=!Q3 K1=1
J2=K2=Q1
J3=Q1&Q2 K2=!(Q1&Q2)
状态方程,将驱动方程带入JK触发器的特征方程即可得到。
输出方程:CO=Q3,Qi=Qi(i=1,2,3)。
有上述方程即可从理论上验证WUJ,BCD的计数功能。
(5)JK触发器构成T’触发器由T’触发器特征方程Qn+1=!Qn既只需将J,K同接高电平即可。JK触发器构成一周期延时器,只需将J,!K同接所需延时的信号,待下一个CP脉冲来时才输出相应波形。
习题:构建全桥整流滤波电路并完成其仿真。
要求1:确定电路图
2:确定各元件合适的参数值
3:使用simulink 建模
4:给出仿真结果及分析
一:分析:全桥整流滤波电路可以分为:变压部分,全波整流部分,滤波部分,稳压部分,以及负载5部分。(以下电压未注明皆为幅值)
1:变压部分:将V1=220V(有效值),50HZ的电压转换V2=[5/0.9 +2*Vd]/sqrt(2),50HZ的电压(5为最终直流电的有效值,Vd为整流二极管的正向导通电压取为0.7V,V2为幅值,0.9为全波直流电的电平分量与幅值),取V2的幅值为7V。
2:全桥整流部分:将V2由交流转换为全桥直流电V3=5(峰值)。
3:滤波部分:将V3中的高次纹波滤掉得到纹波较小的5V直流电V4。
4:稳压部分:保证输出的5V直流电较为稳定,不受负载的影响。
二:所采用电路图。
1:总体电路图如下:
2:整流电路图如下:
D为整流二极管正向导通压Vd=0.7V,V3+2Vd=V2。
3:滤波电路如下:(为了保证滤波特性良好,且纹波较小,采用C—RC型滤波电路既Π型滤波电路)
直流电V4幅值V4=V3*K,V3中直流分量与其幅值之间的比例一般取为K=0.9。
4:稳压电路,由于稳压电路设计较为复杂,且三极管的用法尚未弄清,也无自带稳压芯片,无法搭建稳压电路,在此仅用一个简单的二极管模型代替。(正向导通压为5V的二极管)。(注:本来应该用齐纳二极管稳压,但由于simulink中没有现成模型,且尚不懂如何用M文件编写模型带入,由于时间紧迫在此做一个不恰当的近似,不当之处见结果分析)。
5:为了使V4=5V,得V3=5V,因而V2=6.4V(实际取为7V)(其中的计算较复杂未列出)。
三:simulink建模:
1:总体模型如下(具体见:m1.mdl)
变压器部:V1 取220*sqrt(2)V,50HZ的正弦电压,输出V2为7/sqrt(2) V,50HZ的
正弦电压。
红色部分问存在明显不恰当之处的模型。
四:参数设定
1:V1的参数:
3:整流电路参数:滤波电容C1,C2相同(π型滤波电路的一般要求)。
为了使滤出波形纹波较小,取RC=2*T,经调试的C该区为E-8量级
因此取C1,C2如上,电阻R1=4e6欧。
2:变压器参数:
只需设定输入的频率fn,V1,V2(为有效值)三个参量即可。
二极管D:设定依据见参考资料(Matlab软件在电路与磁路中的应用技巧.ppt)
R2=1(稳压电阻)欧(取阻值较小,额定功率较大的电阻)。
稳压二极管D:(只是近似的稳压电路)取稳定电压为5V(其他取为理想二极管参数)。
五:仿真结果及分析:
1:V2波形如下(具体见1.Jpg)
可见V2输出的为7V,50HZ的正弦交流电。
2:V3的波形如下(具体见2.Jpg)
上图可见,V3一阶滤波的纹波是极小的。
V4的波形如下:(具体见3.Jpg)
上图可见经π形的二阶滤波后得到的波形已经稳定与5V。
Vo的波形如下:(具体见4.Jpg)
稳压后,空载时电路的电压是很稳定的。
注意:
1:为了能够顺利得到仿真结果,最好采用ode23tb算法进行仿真(在simulation—configuration parameters中设定),若采用ode45仿真由于变压器的存在,无法计算。
2:整流二极管在设定参数时不能全部设定为理想二极管(提示,无法运行),必须有一个不是理想二极管。
3:关于其中的参数计算有很大一部分是根据仿真结果调整调整而得的,没有具体的计算过程。
4:matlab版本为(2010b)每个模型必须添加powergui否则无法计算。
分析:
1:纹波,由V3的波形可得滤波出来后产生的纹波是很小的。我们可以将仿真时间改为0.2s
在进行一次仿真,再观测还是很难见到纹波,说明此电路的滤波特性已较好。且运行一次0.2s的结果可以看见,输出的稳定时间为0.09s,可见电路稳态建立的时间是极小的。
2:模型的功率消耗:Po=Vo*Vo/RL=25/RL,而其余部分消耗的功率主要集中在各元件的有效电阻消耗的功率。可以计算其余部分的消耗的功率Pc1=0,Pc2=0。可以采用在变压器入出端加一个电流量模块,测出电流,电压计算功率。(但事实上用于本电路有缺陷上方法不可行,理由如下3:负载特性)
3:负载特性:由于稳压电路设计不当,虽然目的是隔绝负载对电压的影响,但是事实上模型无法隔绝负载的影响,因而负载电阻的接入会改变输出电压,使其输出5V此时稳压二极管开路。模型等效于m2.mdl,运行m2.mdl
会得如下结果
(1)RL=1E6欧(图5.jpg)
(2)RL开路(图6.jpg)
对比上图可以见上模型的负载特性是非常差的。改进方法即采用稳压芯片设计真正的集成稳压电路代替简单的稳压二极管模型才能有好的负载特性。
4:正因为其负载特性太差因而用2中方法去测量时总会得出电流为0的错误结果。
5:其他因素受知识所限在此便不再分析。
4:参考书目:《电子技术基础模拟部分》高教出版社 康光华编第四版P445。第九,十章
以及一些来自网上查找的资料(见参考资料文件夹)
输入A
输入B
输入C
输入为A,B,C时,X的真值表
输入为A,B,C时,Y的真值表
输入为X,Y时,,Z1的真值表
输入为X,Y时,Z2的真值表
Z1对于输入为A、B、C的真值表
Z2对于输入为A、B、C的真值表
整
流
电
路
滤
波
电
路
稳
压
电
路
整
流
电
路
滤
波
电
路
稳
压
电
路
u
1
u
2
u
3
u
4
u
o
u
2
D
4
D
2
D
1
D3
R
L
u
3
U3
U4
R
C
1
C
2
R
L