主要内容

排除在命令行线性化的结果

这个例子展示了如何调试的线性化模型®模型在命令行中使用金宝appLinearizationAdvisor对象。你也可以排除交互式线性化的结果。有关更多信息,请参见排除在模型线性化电路线性化的结果

打开模型。

mdl =“scdpendulum”;open_system (mdl)

摆角的初始条件90年度直立不稳定平衡的逆时针方向0度。摆角速度的初始条件0度/ s。额定转矩保持这个状态-49.05N m。保存该配置模型初始条件。

线性化模型

线性化模型使用分析点模型和模型中定义的操作点。

io = getlinio (mdl);linsys =线性化(mdl, io);

检查线性化的结果,其情节预示反应。

波德(linsys)

模型线性化零力矩,τ没有影响的角度和角速度。找到零线性化的来源,您可以使用一个LinearizationAdvisor对象。

启用了顾问的线性化模型

线性化过程中收集诊断信息并创建一个顾问故障排除,首先创建一个linearizeOptions选项设置,指定StoreAdvisor选择真正的

选择= linearizeOptions (“StoreAdvisor”,真正的);

线性化模型模型使用此选项设置金宝app,返回信息输出参数,其中包含线性化诊断信息LinearizationAdvisor对象。

[linsys1, ~,信息]=线性化(mdl, io、选择);

提取LinearizationAdvisor对象。

顾问= info.Advisor;

强调线性化路径

显示当前的线性化的线性化路径,使用突出

突出(顾问)

查看摆子系统。

如线性化路径所示对话框中,突出显示的模块:

  • 蓝色的数值影响模型线性化。

  • 红色的线性化路径但不影响当前的操作点和块的模型线性化参数。

自模型线性化零,没有块导致线性化。

调查可能有问题的模块

获取诊断信息块可能有问题的线性化,使用建议。这个函数返回一个新的LinearizationAdvisor线性化路径的对象,其中包含的信息块,至少满足以下条件之一:

  • 有诊断消息关于线性化

  • 线性化到零

  • 有代替线性化

adv1 =建议(顾问);

观点的总结这些块的诊断信息,使用getBlockInfo

getBlockInfo (adv1)
ans =线性化诊断模块:块信息:- - - - - - - - - - - -指数BlockPath路径有助于线性化线性化方法1。2,scdpendulum /摆/饱和度是的没有确切的消息。scdpendulum angle_wrap /三角Function1是的没有扰动3。scdpendulum /摆/三角函数对扰动

在这种情况下,可能产生问题顾问报告三块,一块饱和度和两个三角函数块。当你在MATLAB中运行这个例子,块路径显示为超链接。去其中一块模型中,点击相应的超链接块路径。

查看更多关于一个特定的块线性化的信息,使用getBlockInfo。可用的诊断信息,请参阅BlockDiagnostic

例如,获得饱和的诊断信息块。

diagInfo = getBlockInfo (adv1, 1)
diagInfo =线性化诊断scdpendulum /摆/饱和度与属性:IsOnPath:‘是的’ContributesToLinearization:“不”LinearizationMethod:精确的线性化:[1 x1党卫军]OperatingPoint: [1 x1 linearize.advisor.BlockOperatingPoint]

这个街区有以下两个诊断消息关于其线性化的结果。

  • 块分析线性化是零,因为外面的信号输入值(-49.05)的下限块(-49)。考虑线性化块作为一个利益。

  • 物体的线性化至少有一个零输入/输出对导致零输入/输出对系统线性化。修改块参数和/或操作点如果块预计将导致模型线性化。

第一个消息表明,外块线性化的低饱和度的限制-49年,因为输入操作点-49.05

消息也表明,块可以线性化增益,线性阻止1无论输入操作点。

当你在MATLAB中运行这个例子,文本作为一个获得线性的块显示为超链接。打开饱和块的参数对话框,并强调线性化的选项块获得,点击这个链接。

选择治疗时获得线性化,然后单击好吧

另外,您也可以从命令行设置该参数。

set_param (“scdpendulum /摆/饱和度”,“LinearizeAsGain”,“上”)

第二个诊断消息指出,这个块的线性化导致整体模型线性化零。查看这个块的线性化。

diagInfo.Linearization
ans u1日元= D = 0的名字:静态增益饱和。

因为这个块线性化至零,修改块线性化,把它作为一个增益是一个很好的第一步获得非零模型线性化。

Relinearize模型

看到治疗的效果作为增益饱和的块,relinearize模型,并绘制其预示反应。

[linsys2, ~,信息]=线性化(mdl, io、选择);波德(linsys2)

现在模型线性化零。

检查是否有块仍可能有问题的线性化,提取顾问对象,并使用建议函数。

advisor2 = info.Advisor;adv2 =建议(advisor2);

查看块诊断信息。

getBlockInfo (adv2)
ans =线性化诊断模块:块信息:- - - - - - - - - - - -指数BlockPath路径有助于线性化线性化方法1。scdpendulum angle_wrap /三角Function1是的没有扰动2。scdpendulum /摆/三角函数对扰动

两个三角函数块仍然是上市。

突出的线性化路径更新后的线性化。

突出(advisor2)

查看摆子系统。

要理解为什么这些块不是导致线性化,查看相应的诊断信息。例如,获得第二个三角函数块的诊断信息。

diagInfo = getBlockInfo (adv2, 2)
diagInfo =线性化诊断scdpendulum /摆/三角函数的属性:IsOnPath:‘是的’ContributesToLinearization:“不”LinearizationMethod:扰动的线性化:[1 x1党卫军]OperatingPoint: [1 x1 linearize.advisor.BlockOperatingPoint]

查看这个块的线性化。

diagInfo.Linearization
ans u1日元= D = 0的名字:三角函数静态增益。

块线性化为零。看看这个结果预计当前块的操作条件,检查它的操作点。

diagInfo.OperatingPoint
ans = scdpendulum /摆块操作点/三角函数输入:- - - - - - - 1.5708端口1 u

输入块的操作点\π/ 2 = 1.5708美元

你可以找到物体的线性化分析的一阶导数的函数对输入的罪。

$ $ \压裂{\部分}{\偏u} \罪(u) = \ cos (u) $ $

因此,当评估u = \π/ 2美元物体的线性化是零。输入的来源是第一个二阶积分器的输出,这是依赖于状态θ。因此,如果这个块中渗流为零美元\θ= \π/ 2 + k \π美元,在那里k美元是一个整数。同等条件下申请的其他三角函数块angle_wrap子系统。如果不将这些块零线性化,您可以修改操作点的状态θ,relinearize模型。

创建和运行自定义查询

线性化顾问还提供了对象和创建自定义查询的功能。使用这些查询,您可以找到匹配特定条件的块在你的模型。例如,找到所有的输出块使用数值摄动线性化,首先创建查询对象为每个搜索条件:

  • 有一个输入

  • 有一个输出

  • 是数值摄动

秦= linqueryHasInputs (1);qOut = linqueryHasOutputs (1);qPerturb = linqueryIsNumericallyPerturbed;

创建一个CompoundQuery对象通过结合这些查询对象使用逻辑运算符。

sisopert =秦& qOut & qPerturb;

搜索块诊断advisor2块匹配这些标准。

sisopertBlocks =找到(advisor2 sisopert)
sisopertBlocks = LinearizationAdvisor属性:模型:“scdpendulum”OperatingPoint: [1 x1 opcond。OperatingPoint] BlockDiagnostics: [1 x3 linearize.advisor。BlockDiagnostic] QueryType: '((Has 1 Inputs & Has 1 Outputs) & Perturbation)'

有三个输出块在使用数值摄动线性化的模型。

有关使用自定义查询的更多信息,请参阅找块匹配特定条件的线性化的结果

bdclose (mdl)

另请参阅

功能

相关的话题