这个例子说明了时变源对估计的影响。该示例还演示了如何在估计过程中将时变源设置为常数,以改进估计结果。
打开模型万博1manbetx®模型。
sys =“scdspeed_ctrlloop”;open_system(系统)
线性化模型。
设置发动机模型
Block to normal mode for accurate linearization。
set_param (“scdspeed_ctrlloop /引擎模型”,“SimulationMode”,“正常”)
打开模型线性化电路的模型。
在Simuli万博1manbetxnk模型窗口中应用程序画廊,点击模型线性化电路.
点击波德将模型线性化,并生成结果的波德图。
线性化模型,linsys1
,出现在线性分析工作区.
为估计创建一个输入正弦流信号。
打开创建sinstream输入对话框。
在估计选项卡,输入信号下拉列表中,选择Sinestream.
打开添加频率对话框。
点击.
指定输入正弦流的频率范围和频率点的个数。
输入10
在从盒子。
输入One hundred.
在来盒子。
输入10
为频率点的数目。
点击好吧.
添加的点可以在创建sinstream输入对话框的频率内容查看器中看到。
在“创建正弦流输入”对话框的频率内容查看器中,选择所有的频率点。
指定输入sinstream参数。
改变数量的时间和沉降时间以确保模型在输入正弦流的每个频率点均达到稳态。
输入30.
在数量的时间盒子。
输入25
在沉降时间盒子。
创建输入的sinstream。
点击好吧.新的输入信号,in_sine1
,出现在线性分析工作区.
将诊断查看器设置为在执行评估时打开。
选择启动诊断查看器复选框。
估计模型的频率响应。
点击波德图1来估计频率响应。诊断查看器出现在绘图平面和估计系统中estsys1
,出现在线性分析工作区.
比较估计模型和线性化模型。
点击诊断查看器- estsys1的绘图区域中的模型线性化电路.
单击并拖动linsys1
到诊断查看器中添加linsys1
到波德图.
单击诊断查看器选项卡。
配置Diagnostic Viewer以只显示估计和线性化结果不匹配的频率点。
在频率选择器部分,输入9
在从盒子,11
在来框来设置在诊断查看器中分析的频率范围。
的滤波稳态时间响应图中显示的信号不是正弦信号。
查看未过滤的时间响应。
右键单击滤波稳态时间响应Plot and clear the仅显示过滤后的稳态输出选择。
阶跃输入和外部干扰使模型远离线性化模型所使用的工作点。这就阻止了响应达到稳定状态。为了纠正这个问题,找到并禁用干扰估计的时变源块。然后重新估计模型的频响。
找到并禁用模型内的时变源。
打开“频率响应估计选项”对话框。
在估计选项卡,选项部分中,点击更多的选择.
在随时间变化的来源选项卡上,单击自动查找和添加时变源块.
此操作使用模型中时变源的块路径填充时变源列表。这些来源将在估计期间保持不变。
估计模型的频率响应。
点击波德图1来估计频率响应。估计系统estsys2
,出现在线性分析工作区.
比较新估计的模型和线性化的模型。
点击诊断查看器- estsys2的绘图区域中的模型线性化电路.
单击并拖动linsys1
进入诊断查看器。
保持时变源恒定得到的频率响应与精确的线性化结果吻合。
将精确线性化技术得到的线性模型与估计的频率响应进行比较:
%打开模型mdl =“scdspeed_ctrlloop”;Open_system (mdl) IO = getlinio(mdl);为精确的线性化,将模型参考设置为正常模式set_param (“scdspeed_ctrlloop /引擎模型”,“SimulationMode”,“正常”)%线性化模型sys =线性化(mdl, io);%估计频率响应在10到100 rad/s之间在=弗列斯特。Sinestream (“频率”logspace(1、2、10)“NumPeriods”30岁的“SettlingPeriods”25);[sys, simout] = frestimate (mdl, io);%比较结果sys, frest.simView (simout sys)
线性化结果与估计的前两个频率的频率响应不匹配。要查看未过滤的时间响应,右键单击时间响应图,然后清除仅显示过滤后的稳态输出.
阶跃输入和外部干扰使模型远离工作点,阻止响应达到稳态。为了纠正这个问题,找到并禁用这些干扰估计的时变源块。
使用。识别时变源块frest.findSources
.
srcblks = frest.findSources (mdl, io);
创建一个frestimate
选项设置为禁用块。
选择= frestimateOptions;选择。BlocksToHoldConstant = srcblks;
使用可选输入参数重复频率响应估计选择
.
[sysest2, simout2] = frestimate (mdl, io,选择);frest.simView (simout2、sysest2 sys)
现在得到的频率响应与线性化的结果完全吻合。要查看未过滤的时间响应,右键单击时间响应图,然后清除仅显示过滤后的稳态输出.
有些时变源块可能无法被算法找到。如果块的内部信号路径不包含没有输入端口的块,则该块不被报告frest.findSources
要使模型处于稳定状态,可以用常数块,或不同的源块。