主要内容

基于仿真技术的频率响应估计

这个例子展示了如何获得Simulink®模型的频率响应,当逐块解析线性化不能提供准确的答案时,由于线性化路径中基于事件万博1manbetx的动力学。这类系统的例子有带有触发子系统的模型或使用脉宽调制(PWM)输入信号的模型。

打开模型

打开Simulin万博1manbetxk模型进行发动机正时。

mdl =“scdengine”;open_system (mdl)

对该模型从节气门角度到发动机转速的逐块线性化分析得到的线性化结果为零,这是由于在线性化路径中触发了压缩子系统。

io = getlinio (mdl);io linsys =线性化(mdl)
linsys = D = throttleangle EngineSpeed 0静态增益。

使用正弦流输入信号估计频率响应

sinstream输入信号是最可靠的输入信号,用于估计Simulink模型的准确频率响应万博1manbetxfrestimate函数。一个正弦流信号是由相互附加的单个正弦信号组成的。的frestimate函数模拟正弦流输入信号中每个频率的模型,如使用频率参数,以获取相应的周期数量NumPeriods参数。仿真结束后,frestimate使用输出信号来计算每个频率的响应。frestimate仅使用系统达到该输入频率的稳定状态后的周期,即使用指定的若干稳定周期后SettlingPeriods参数。

创建一个正弦流信号,具有50个对数间隔的不同频率,在0.1和10 rad/s之间。

在=弗列斯特。Sinestream (“频率”logspace (1, 1, 50),“振幅”1 e - 3)
频率:[0.1 0.10985 0.12068 0.13257…][rad/s)振幅:0.001 SamplesPerPeriod: 40 NumPeriods: 4 RampPeriods: 0 FreqUnits (rad/s,Hz): rad/s SettlingPeriods: 1 applyfilteringinfestimate (on/off): on SimulationOrder (Sequential/OneAtATime): Sequential

默认情况下,正弦流输入信号的每个频率被模拟四个周期,即:NumPeriods4对于所有频率。同样,第一个周期的结束被指定为系统达到稳态的位置,即,SettlingPeriods1对于所有频率。因此,frestimate使用输出信号的最后三个周期。

使用此正弦流输入信号,执行频率响应估计frestimate函数,并绘制得到的频率响应数据。

[sys, simout] = frestimate (mdl, io);波德(系统)

您可以使用Simulation results Viewer检查评估结果。查看器显示所选频率的时域和频域模拟结果,并显示一个汇总图,您可以在其中交互地切换频率。

frest.simView (simout sys);

您可以使用查看器作为工具来诊断影响频率响应估计准确性的问题,例如:

  • 未达到稳定状态

  • 励磁的非线性

  • 遇到不稳定

利用啁啾输入信号估计频率响应

当从Simulink模型中估计频率响应数据时,可以使用的另一个输入信号是频率啁啾。万博1manbetx频率啁啾与正弦流的不同之处在于其频率是瞬时变化的。

可以使用啁啾输入信号来获得更快的频率响应估计。然而,由此产生的频率响应可能比使用正弦流输入获得的频率响应更不可靠,因为每个频率的模拟时间不够长,不足以驱动系统在该频率达到稳态。

创建一个啁啾信号,扫频0.1和10 rad/s之间的对数。

in_chirp =弗列斯特。唧唧声(“FreqRange”0.1 [10],“振幅”1 e - 3,...“SweepMethod”“对数”“NumSamples”, 3000);

使用啁啾信号进行频率响应估计。

io, sys_chirp = frestimate (mdl in_chirp);

将正弦流和啁啾输入信号的结果绘制在一起。

波德(sys、sys_chirp“r”

利用PRBS输入信号估计频率响应

在Simulink模型中估计频率响应数据时,可以使用的另一个输入信号是伪随机二进制序列(PRBS)。万博1manbetxPRBS是一种周期性的、确定性的信号,具有类似白噪声的性质,在两个值之间移动。

您可以使用PRBS输入信号获得更快的频率响应估计与更高的频率分辨率比啁啾信号。

创建一个PRBS信号,命令为12信号中有一个周期。使用单个周期产生非周期PRBS。产生的PRBS的长度是4095(2^12 - 1)。为了获得准确的频响估计,PRBS的长度必须足够大。为确保系统处于适当的激励状态,将PRBS的扰动幅值设为0.01

in_PRBS =弗列斯特。伪随机位序列(“秩序”12“NumPeriods”,1,“振幅”1飞行,“t”, 0.1);

使用PRBS信号进行频响估计。

io, sys_PRBS = frestimate (mdl in_PRBS);

将PRBS和正弦流输入信号的结果绘制在一起。

波德(sys_PRBS sys,“r”0.1 {10})

关闭模式。

bdclose (“scdengine”

另请参阅

相关的话题