主要内容

疯狂

包裹:fr

识别时变源块

句法

块= frest.findsources(模型)
块= frest.findsources(模型,io)

描述

= fest.findsources(模型在Simulink中标记的任何线性化输出点的信号路径中找到所有时变源块万博1manbetx®模型模型

= fest.findsources(模型IO.在线性分析点中指定的任何线性化输出点的信号路径中找到所有时变源块IO.

输入参数

模型

字符向量或字符串,其中包含要识别频率响应估计的时变源块的Simulink模型的名称。万博1manbetx

IO.

线性化阵列I / O点。

元素IO.是您创建的线性化I / O对象格雷林或者Linio.疯狂仅使用输出点来定位可能干扰频率响应估计的时变源块。看算法想要查询更多的信息。

输出参数

块时间变化源块的路径模型这可以干扰频率响应估计,作为阵列返回万博1manbetxsimulink.blockpath.对象。包括子系统内部的时变源块和正常模式引用的模型。

如果你提供IO.包含有助于输出点处的信号的所有时变源块IO.

如果你不提供IO.包含所有时变源块,其贡献到标记为的输出点处的信号模型

例子

估计具有时变源块的模型的频率响应。此示例显示了使用疯狂识别干扰频率响应估计的时变源块。你也可以看到使用blockstoholdconstant.选择疯狂选择禁用估计中的时变源块。

加载模型scdspeed_ctrlloop.

mdl ='scdspeed_ctrlloop';Open_System(MDL)%将引用的模型转换为正常模式以获得准确性Set_Param('SCDSPEED_CTRLLOP / ENGINES MODEL',...'SIMULATIONMODE','NORMAL');

首先,查看时变源块对频率响应估计的影响。为此,请执行估计而不禁用时变源块。

在此示例中,在模型中已经定义了线性化I / O点。使用格雷林命令获取I / O点fr

io = getLinio(MDL)

定义SINESTREAM信号并计算估计的频率响应系统

in = frest.sinestream('频率',logspace(1,2,10),...'numperiods',30,'setlingperiod',25);[sysest,simout] =嫉妒(mdl,io,in);

执行精确的线性化,并与估计的响应进行比较。

sys =线性化(mdl,io);Bodemag(Sys,Sysest,'R *')

估计的频率响应与精确的线性化不匹配。出现不匹配的原因模型中的时变源块可防止响应达到稳定状态。

查找使用时变块使用疯狂

srcblks = frest.findsources(mdl);

srcblks.是与模型中的时变源块对应的块路径数组。要检查结果,请索引到数组中。

例如,进入

srcblks(2)

返回结果

ans = 万博1manbetxsimulink.blockpath包:simulink块路径:'scdspeed_ctrlloop / model型号''scdspeed_plantref / drag torque / step1'

现在您可以估计频率响应而不贡献时变源块。为此,请设置blockstoholdconstant.选择疯狂选择等于srcblks.,并运行估计。

opts = frestimateOptions opts.blockstoholdconstant = srcblks%再次运行再次使用块禁用[sysest2,simout2] = Frestim(MDL,IO,IN,OPTS);

频率响应估计现在提供了与确切的线性化结果的良好匹配。

Bodemag(SYS,SYSEST2,'R *')

提示

  • 疯狂识别可以干扰频率响应估计的时变源块。要禁用此类块来估计频率响应,请设置blockstoholdconstant.选择疯狂选择等于或者是一个子集。然后,估计频率响应使用fr

  • 有时,模型包括引用模型,其中包含线性化输出点的信号路径中的源块。在这种情况下,将引用的模型设置为正常仿真模式以确保疯狂找到它们。使用set_param.命令设置仿真显示器任何引用的模型普通的在跑步之前疯狂

算法

找到可以干扰频率响应估计的时变源块,疯狂从模型中的每个线性化输出点开始。从每个输出点,该算法通过块横向跟踪每个信号路径向后块。该算法报告任何源块(其中没有输入端口的块),除非该源块是a持续的或者地面堵塞。

疯狂算法跟踪每个信号路径,该路径可以影响模型中的每个线性化输出点处的信号值。跟踪的路径包括:

  • 虚拟和非虚拟子系统内的信号路径。

  • 正常模式内的信号路径引用的模型。使用前将所有引用的模型设置为正常仿真模式疯狂确保算法在引用的模型中识别源块。

  • 信号路由到块,或通过数据存储阅读数据存储写入块。

  • 通过交换机路由的信号。这疯狂算法假设在频率响应估计期间可以激活开关的任何极点。因此,算法通过所有开关输入遵循信号。

笔记

可能无法找到某些时变源块疯狂。如果块的内部信号路径不包含没有输入端口的块,则该函数未报告该块。

例如,考虑模型scdspeed_ctrlloop.。该模型具有一个线性化输出点,位于输出块标记为速度输出。(这疯狂算法忽略线性化输入点。)在运行之前疯狂,将引用的模型转换为正常仿真模式:

set_param('scdspeed_ctrllop /引擎型号',...'simulationmode','正常');

你现在可以运行疯狂使用模型中定义的线性化输出点来识别时变源块。

srcblks = frest.findsources('scdspeed_ctrlloop');

该算法从输出点开始,横贯迹线开始堵塞速度输出。一个输入到速度输出是子系统外部干扰。算法进入子系统,找到标记的源块步骤扰动,并报告该块。

堵塞速度输出具有另一个输入,算法追溯到引用的模型发动机模型发动机模型包含多个子系统,并且算法通过这些子系统跟踪信号以识别存在的任何时变源块。

例如,燃烧子系统包括块标记三角洲从中路由信号火花推进来源。因为火花推进是一个恒定的源块,但是,算法没有报告块的存在。

算法继续迹线,直到检查对每个线性化输出点处的信号的所有可能的信号路径被检查。

备择方案

您可以使用Simulink Mo万博1manbetxdel Advisor来确定模型中输出线性分析点的信号路径中是否存在时变源块。为此,请使用模型顾问检查万博1manbetxSimulink控制设计检查。有关使用Model Advisor的更多信息,请参阅使用模型顾问检查您的模型

介绍在R2010B.