此示例显示如何在分析逐块线性化时获取Simulink模型的频率响应,由于线性化路径中的基于事件的动态,由于基于事件的动万博1manbetx态而提供和准确的答案。这种系统的示例是使用脉冲宽度调制(PWM)输入信号的触发子系统或模型的模型。
打开引擎定时的Si万博1manbetxmulink模型。
mdl ='scdengine';Open_System(MDL)
由于线性化路径中的触发压缩子系统,该模型从节气门角度到发动机速度的分析块线性化给出了线性化结果为零。
IO = GetLinio(MDL);Linsys =线性化(MDL,IO)
linsys = d = throttleangl enginespeed 0静态增益。
SINESTREAM输入信号是最可靠的输入信号,用于估计SIMULINK模型的准确频率响应万博1manbetxfr
功能。SINESTREAM信号由彼此附加的单独正弦信号组成。这fr
功能模拟了SINESTEAM输入信号中的每个频率的模型,如指定使用频率
参数,对于相应的期间,如指定使用numperiods.
范围。模拟后,fr
使用输出信号计算每个频率的响应。fr
仅在系统达到该输入频率的稳定状态后使用时段,即在使用该指定的许多沉降周期之后settlingperiods.
范围。
创建具有50个对数间隔的SINESTREAM信号,在0.1和10 rad / s之间的50个对数间隔的不同频率。
在= rest.sinestream('频率',logspace(-1,1,50),'振幅',1e-3)
SINESTEAM输入信号:频率:[0.1 0.10985 0.12068 0.12013257 ...](rad / s)幅度:0.001样品普利期:40 numperiods:4 rampperiods:0频率(rad / s,hz):rad / s settlingperiods:1 applyfilteringinfrestimate(开/关):在仿真订单(顺序/ oneEataTime):顺序
缺省情况下,SINestream输入信号中的每个频率都模拟了4个时段,即numperiods.
对于所有频率为4,并且指定第一阶段的结束是系统达到稳定状态的地方,即settlingperiods.
所有频率都是1。所以,fr
使用输出信号的最后3个周期。
使用此SINestream输入信号,使用频率响应估计fr
功能,并绘制产生的频率响应数据。
[sys,simout] =嫉妒(mdl,io,in);BODE(SYS)
您可以使用仿真结果查看器检查估计结果。观看者显示所选频率的时域和频域模拟结果,以及摘要Bode绘图,您可以在其中交互地切换频率。
rest.simview(Simout,In,Sys);
您可以使用查看器作为诊断影响频率响应估计准确性的问题的工具,例如:
没有达到稳定状态
激发非线性
跑步稳定性
您可以在估计来自Simulink模型的频率响应数据时使用的另一输入信号是频率啁啾。万博1manbetx频率啁啾与SINESTREAM的不同之处在于频率瞬间变化。
您可以使用Chirp输入信号来获得更快的频率响应估计。然而,使用Chirp输入信号获得的频率估计结果可以不如使用SINESTEAR输入获得的估计结果,因为每个频率不足以使系统驱动到该频率的稳态。
创建啁啾信号,可在对数0.1和10 rad / s之间扫描。
in_chirp = frest.chirp('freqrange',[0.1 10],'振幅',1e-3,......'扫掠''那'logarithmic'那'numsamples',3000);
使用Chirp信号,执行频率响应估计。
sys_chirp = frestimation(mdl,io,in_chirp);
将从Sinestream和Chirp输入信号中获得的结果绘制在一起。
BODE(SYS,SYS_CHIRP,'r')
当估计来自Simulink模型的频率响应数据时,您可以使用的另一输入信号是伪随机二进制序列(PRB)。万博1manbetxPRB是一个周期性的确定性信号,具有白色噪声样属性,其在两个值之间移动。
您可以使用PRBS输入信号来获得比啁啾信号更高的频率分辨率的更快的频率响应估计。
使用订单创建PRBS信号12.
和信号中的一个时期。使用单个时期产生非周期性PRB。产生的PRB的长度为4095(2 ^ 12-1)。为了获得精确的频率响应估计,PRB的长度需要足够大。为确保系统兴奋得才能妥善兴奋,指定PRB的扰动幅度0.01
。
in_prbs = frest.prbs('命令',12,'numperiods',1,'振幅',1e-2,'ts',0.1);
使用PRBS信号,执行频率响应估计。
sys_prbs = frestimation(mdl,io,in_prbs);
绘制使用PRB和SINESTREAM输入信号的结果一起获得。
BODE(SYS_PRBS,SYS,'r',{0.1 10})
关闭模型。
bdclose('scdengine')