这个例子展示了如何在命令行调试Simulink®模型的线性化金宝app线性化道教
目的。您还可以交互地解决线性化结果。有关更多信息,请参阅模型线性化器中的线性化结果故障排除.
打开模型。
mdl ='scdpendulum';open_system (mdl)
摆角的初始条件是90
从不稳定的垂直平衡逆时针方向的度0.
程度。摆锤角速度的初始条件是0.
度/ s。保持这种状态的公称扭矩为-49.05
N m。此配置作为模型初始条件保存。
使用模型中定义的分析点和模型工作点对模型进行线性化。
io = getlinio (mdl);linsys =线性化(mdl, io);
为了检查线性化结果,绘制它的波德响应。
波德(linsys)
该模型线性化至零,使得扭矩,τ
,对角度或角速度没有影响。要找到零线性化的来源,可以使用a线性化道教
目的。
要在线性化过程中收集诊断信息并创建用于故障排除的advisor工具,请首先创建linearizeOptions
选项集,指定StoreAdvisor
选择真正的
.
opt =线性化选项(“StoreAdvisor”,真的);
使用此选项集线性化Simul金宝appink模型。返回信息
参数中的线性化诊断信息线性化道教
目的。
[LINSYS1,〜,INFO] =线性化(MDL,IO,OPT);
提取线性化道教
目的。
顾问= info.Advisor;
显示当前线性化的线性化路径,使用突出
.
亮点(顾问)
查看Pendulum子系统。
如线性化路径对话框中所示,块突出显示:
蓝色数值影响模型的线性化。
红色为线性化路径,但不影响当前工作点和块参数的模型线性化。
由于模型线性化为零,因此没有块有助于线性化。
要获取可能是线性化可能有问题的块的诊断信息,请使用建议
.这个函数返回一个new线性化道教
包含有关线性化路径上的块信息的对象,其满足以下条件中的至少一个:
是否有关于其线性化的诊断信息
线性化到零
替代的线性化
adv1 =建议(顾问);
查看这些块的诊断信息摘要,使用getBlockInfo
.
getBlockInfo (adv1)
ans =块的线性化诊断:块信息:-----------索引块路径在路径上有助于线性化scdpendulum/pendulum/Saturation是否准确2。scdpendulum/angle_wrap/Trigonometric Function1是否摄动scdpendulum/pendulum/三角函数是否摄动
在本例中,advisor报告了三个潜在的问题块,一个饱和度块和两个三角函数块。在MATLAB中运行此示例时,块路径显示为超链接。要转到模型中的一个块,请单击相应的块路径超链接。
要查看有关特定块线性化的更多信息,请使用getBlockInfo
.有关可用诊断的信息,请参见BlockDiagnostic
.
例如,获取饱和度块的诊断信息。
诊断接头= getBlockInfo (adv1, 1)
diag =用于scdpendulum / pendulum /饱和度的线性化诊断:iSonpath:'是'ConswortolitolInalization:'No'线性化方法:'确切'线性化:[1×1 ss]操作点:[1×1线性化。]
这个块有两条关于其线性化结果的诊断消息。第一个消息表明块被线性化,超出了其较低的饱和限制-49年
,因为输入工作点为-49.05
.
该消息还表明,块可以线性化为一个增益,这将块线性化为1
无论输入操作点如何。
在Matlab中运行此示例时,文本线性化块作为增益显示为超链接。要打开饱和块的“块参数”对话框,并突出显示将块作为增益线性化的选项,请单击此超链接。
选择在线化时将作为收获,然后点击好吧.
或者,您可以在命令行中设置该参数。
set_param (“scdpendulum /摆/饱和度”那'linearizeasgain'那'在')
第二诊断消息指出该块的线性化导致整体模型线性化为零。查看此块的线性化。
diag.linearization.
ans = D = u1 y1 0名称:饱和静态增益
由于该块线性化为零,因此通过将其视为增益来修改块线性化是获得非零模型线性化的良好第一步。
为了看到将饱和度块作为增益处理的效果,重新线性化模型,并绘制其波德响应。
[linsys2, ~,信息]=线性化(mdl, io、选择);波德(linsys2)
模型线性化现在是非零。
要检查是否有任何块仍然存在线性化的潜在问题,请提取advisor对象,并使用建议
功能。
Advisor2 = Info.Advisor;Adv2 = Audmise(Advisor2);
查看块诊断信息。
getblockinfo(Adv2)
ans =块的线性化诊断:块信息:-----------索引块路径在路径上有助于线性化scdpendulum/angle_wrap/Trigonometric Function1是否摄动2。scdpendulum/pendulum/三角函数是否摄动
仍然列出了两个三角函数块。
突出显示更新后的线性化路径。
突出显示(顾问2)
查看Pendulum子系统。
要理解为什么这些块对线性化没有作用,请查看它们对应的块诊断信息。例如,获取第二个三角函数块的诊断信息。
DIAG = GETBLOCKINFO(ADV2,2)
diag = linear Diagnostics for scdpendulum/pendulum/Trigonometric Function with properties: IsOnPath: 'Yes' contributestolineearization: 'No' LinearizationMethod: '微干扰' Linearization: [1×1 ss] OperatingPoint: [1×1 linearize.advisor.BlockOperatingPoint]
查看此块的线性化。
diag.linearization.
ans = D = u1 y1 0
块线性化为零。要查看该结果是否符合块的当前操作条件,请检查其操作点。
diag.OperatingPoint
输入:-------端口u 1 1.5708
块的输入工作点为.
你可以通过对输入求sin函数的一阶导数来用解析的方法找到块的线性化。
因此,在评估时块的线性化为零。输入的源是二阶积分器的第一个输出,这取决于州θ.
.因此,这个块线性化到零if,在那里是一个整数。相同的条件适用于角度_WRAP子系统中的其他三角函数块。如果这些块不预期线性化为零,则可以修改操作点状态θ.
,并重新线性化模型。
线性化顾问还提供用于创建自定义查询的对象和函数。使用这些查询,您可以在符合特定条件的模型中找到块。例如,要查找使用数值扰动线性化的所有SISO块,首先为每个搜索条件创建查询对象:
有一个输入
有一个产出
在数值扰乱
秦= linqueryHasInputs (1);qOut = linqueryHasOutputs (1);qPerturb = linqueryIsNumericallyPerturbed;
创建一个汇编
通过使用逻辑操作符组合这些查询对象。
sisopert = qIn & qOut & qPerturb;
中的块诊断advisor2
用于匹配这些条件的块。
sisopertblocks =查找(顾问2,sisopert)
sisopertBlocks = LinearizationAdvisor与属性:模型:'scdpendulum' operingpoint: [1×1 opcond。BlockDiagnostics: [1×3 linearize.advisor.]BlockDiagnostic] QueryType: '((Has 1 Inputs & Has 1 Outputs) & Perturbation)'
模型中有三个SISO块使用数值扰动线性化。
有关使用自定义查询的详细信息,请参阅在线性化结果中寻找匹配特定条件的块.
bdclose (mdl)