主要内容

定义模型顾问检查支持和不支持的模块和参数万博1manbetx

您可以创建模型顾问检查检查模块是否使用特定的块或参数值。您可以指定约束条件为:

  • 万博1manbetx支持或不支持的参数值

  • 万博1manbetx支持或不支持的模型参数值

  • 万博1manbetx支持或不支持的块

  • 块或参数是否满足约束条件的组合

您还可以使用addPreRequisiteConstraintID函数来添加前提约束模型之前必须通过顾问检查实际的约束。你可以检查你的模型对这些约束编辑或通过运行模型的检查顾问。

例子

sldemo_bounce模型模拟一个球地球上跳跃。在本例中,您创建了两个模型组成的顾问检查约束,然后检查模型对这些约束。

ex_bouncing_ball_model.png

准备你的工作目录

1。你当前的文件夹设置为可写目录。

2。复制脚本prepare_chk_define_code你的当前文件夹并运行脚本。这个示例所需的脚本复制文件到你的当前文件夹中。

拷贝文件(fullfile (matlabroot,“例子”,“slcheck”,“主要”,“prepare_chk_define_code.m”),“prepare_chk_define_code.m”,“f”);运行(“prepare_chk_define_code.m”);

为支持或不支持的块创建一个检查参数万博1manbetx

首先,创建一个模型顾问检查包含三块参数的约束,c1,c2,c3,指定支持和不支持的参数值。万博1manbetx

1。定义一个新的函数。

函数约束= createConstraints_Check1 ()结束

2。在函数内部,创建两个块参数的约束,c1c2

函数c1 = Advisor.authoring.PositiveBlockParameterConstraint约束= createConstraints_Check1 ();c1.ID =“ID_1”;c1.BlockType =“获得”;c1.ParameterName =“获得”;c1.万博1manbetxSupportedParameterValues = {“-0.7”};c1.ValueOperator =“情商”;% =c2 = Advisor.authoring.NegativeBlockParameterConstraint;c2.ID =“ID_2”;c2.BlockType =“InitialCondition”;c2.ParameterName =“价值”;c2.Un万博1manbetxsupportedParameterValues = {' 0 '};c2.ValueOperator =“乐”;%小于或等于结束

约束c1指定一个获得块必须有一个值等于-0.7。约束c2指定一个初始条件块值小于或等于零是不支持的。万博1manbetx

3所示。创建一个积极的约束,c3,并设置约束等于单元阵列的约束c1,c2,c3

函数c1 = Advisor.authoring.PositiveBlockParameterConstraint约束= createConstraints_Check1 ();c1.ID =“ID_1”;c1.BlockType =“获得”;c1.ParameterName =“获得”;c1.万博1manbetxSupportedParameterValues = {“-0.7”};c1.ValueOperator =“情商”;% =c2 = Advisor.authoring.NegativeBlockParameterConstraint;c2.ID =“ID_2”;c2.BlockType =“InitialCondition”;c2.ParameterName =“价值”;c2.Un万博1manbetxsupportedParameterValues = {' 0 '};c2.ValueOperator =“乐”;%小于或等于c3 = Advisor.authoring.PositiveBlockTypeConstraint;c3.ID =“ID_3”;s1 =结构(“BlockType”,“不变”,“MaskType”,);s2 =结构(“BlockType”,“子系统”,“MaskType”,);s3 =结构(“BlockType”,“InitialCondition”,“MaskType”,);s4 =结构(“BlockType”,“获得”,“MaskType”,);s5 =结构(“BlockType”,“记忆”,“MaskType”,);s6 =结构(“BlockType”,“SecondOrderIntegrator”,“MaskType”,);s7 =结构(“BlockType”,“终结者”,“MaskType”,);c3.万博1manbetxSupportedBlockTypes = {s1、s2、s3、s4, s5; s6; s7;};约束= {c1, c2, c3};结束

约束c3指定块的支持。万博1manbetx约束是一个单元阵列块的约束。

4所示。定义一个新的模型顾问检查通过创建另一个函数,check1。使用的函数Advisor.authoring.createBlockConstraintCheck创建一个模型顾问检查,矩形这些块的约束。然后使用mdladvRoot.register (rec)注册与模型块约束检查顾问。

函数check1 () rec = Advisor.authoring.createBlockConstraintCheck (“mathworks.check_0001”,“约束”,@createConstraints_Check1);rec.Title =示例1:检查三块参数约束的;rec.TitleTips =示例检查三块参数约束的;mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,例子:我的团队的)结束函数c1 = Advisor.authoring.PositiveBlockParameterConstraint约束= createConstraints_Check1 ();c1.ID =“ID_1”;c1.BlockType =“获得”;c1.ParameterName =“获得”;c1.万博1manbetxSupportedParameterValues = {“-0.7”};c1.ValueOperator =“情商”;% =c2 = Advisor.authoring.NegativeBlockParameterConstraint;c2.ID =“ID_2”;c2.BlockType =“InitialCondition”;c2.ParameterName =“价值”;c2.Un万博1manbetxsupportedParameterValues = {' 0 '};c2.ValueOperator =“乐”;%小于或等于c3 = Advisor.authoring.PositiveBlockTypeConstraint;c3.ID =“ID_3”;s1 =结构(“BlockType”,“不变”,“MaskType”,);s2 =结构(“BlockType”,“子系统”,“MaskType”,);s3 =结构(“BlockType”,“InitialCondition”,“MaskType”,);s4 =结构(“BlockType”,“获得”,“MaskType”,);s5 =结构(“BlockType”,“记忆”,“MaskType”,);s6 =结构(“BlockType”,“SecondOrderIntegrator”,“MaskType”,);s7 =结构(“BlockType”,“终结者”,“MaskType”,);c3.万博1manbetxSupportedBlockTypes = {s1、s2、s3、s4, s5; s6; s7;};约束= {c1, c2, c3};结束

创建一个复合约束检查

接下来,创建一个模型顾问检查包含三块参数约束cc1,cc2,cc。约束cc1cc2指定支持块参数和约束万博1manbetxcc是一个复合约束包含吗cc1cc2

1。定义一个新的函数。

函数约束= createConstraints_Check2 ()结束

2。创建两个块参数的约束,cc1cc2一个复合约束,cc。集约束等于单元阵列的约束cc1,cc2,cc

函数约束= createConstraints_Check2 () cc1 = Advisor.authoring.PositiveBlockParameterConstraint;cc1.ID =“ID_cc1”;cc1.BlockType =“SecondOrderIntegrator”;cc1.ParameterName =“UpperLimitX”;cc1.万博1manbetxSupportedParameterValues = {“正”};cc1.ValueOperator =“情商”;% =cc2 = Advisor.authoring.PositiveBlockParameterConstraint;cc2.ID =“ID_cc2”;cc2.BlockType =“SecondOrderIntegrator”;cc2.ParameterName =“LowerLimitX”;cc2.万博1manbetxSupportedParameterValues = {“0.0”};cc2.ValueOperator =“情商”;% =cc = Advisor.authoring.CompositeConstraint;cc.addConstraintID (“ID_cc1”);cc.addConstraintID (“ID_cc2”);cc.CompositeOperator =”和“;%模型顾问检查多个约束约束= {cc1 cc2, cc};结束

约束cc1指定一个二阶积分器块,上限x参数必须有一个值等于。约束cc2另外指定下限x参数必须有一个值等于零。约束cc指定检查通过,cc1cc2必须通过。constriants是一个单元阵列块的约束。

3所示。定义一个新的模型顾问检查在一个新函数,check2。使用的函数Advisor.authoring.createBlockConstraintCheck创建一个模型顾问检查块函数定义的约束createConstraints_Check2

函数check2 () rec = Advisor.authoring.createBlockConstraintCheck (“mathworks.check_0002”,“约束”,@createConstraints_Check2);rec.Title =示例2:检查三块参数约束的;rec.TitleTips =示例检查三块参数约束的;mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,例子:我的团队的)结束函数约束= createConstraints_Check2 () cc1 = Advisor.authoring.PositiveBlockParameterConstraint;cc1.ID =“ID_cc1”;cc1.BlockType =“SecondOrderIntegrator”;cc1.ParameterName =“UpperLimitX”;cc1.万博1manbetxSupportedParameterValues = {“正”};cc1.ValueOperator =“情商”;cc2 = Advisor.authoring.PositiveBlockParameterConstraint;cc2.ID =“ID_cc2”;cc2.BlockType =“SecondOrderIntegrator”;cc2.ParameterName =“LowerLimitX”;cc2.万博1manbetxSupportedParameterValues = {“0.0”};cc2.ValueOperator =“情商”;cc = Advisor.authoring.CompositeConstraint;cc.addConstraintID (“ID_cc1”);cc.addConstraintID (“ID_cc2”);cc.CompositeOperator =”和“;约束= {cc1 cc2, cc};结束

创建并运行模型顾问检查

1。注册新的检查,使用一个sl_customization.m文件。对于这个示例,重命名sl_customization_DefineChecks.m文件sl_customization.m

函数sl_customization (cm)%注册自定义检查。cm.addModelAdvisorCheckFcn (@check1);cm.addModelAdvisorCheckFcn (@check2);

2。在命令提示符处,创建示例1:检查块参数约束示例2:检查块参数约束检查通过输入这个命令:

Advisor.Manager.refresh_customizations

3所示。在命令提示符处,打开模型sldemo_bounce

open_system (“sldemo_bounce”)

4所示。在建模选项卡上,选择模型的顾问打开模型顾问。

5。在左侧窗格中,选择通过产品>例子:我的团队

6。点击运行检查

示例1:检查三块参数约束检查会产生一个警告,因为获得块有一个值-0.8。的示例2:检查三块参数约束检查通过,因为二阶积分器块满足这两个约束。

使用约束创建模型顾问编辑时间检查

您可以使用编辑时间检查强调块与块模型中约束违反画布。你可以选择在编辑时间检查模型顾问检查评估模型中通过选择所需的检查顾问配置编辑器并保存自定义配置。

1。打开模型顾问配置编辑器,打开模型顾问和选择打开>打开配置编辑器

2。您创建的检查中出现通过产品>例子:我的团队

3所示。对于这个示例,除了删除所有文件夹例子:我的团队文件夹中。

block_configuration.png

4所示。点击保存并保存配置my_config.json

5。在对话框中,单击没有因为你不想这个配置设置为默认配置。

6。在仿真软件模型万博1manbetx编辑器中,在建模选项卡上,单击模型的顾问>编辑时间检查

7所示。为模型顾问配置文件参数,点击浏览,并选择my_config.json

8。选择编辑时间检查参数并关闭配置参数对话框。

9。点击高亮显示的块模型视图中编辑时间警告。

您可以编辑阻止参数值通过单击编辑时间检查诊断窗口修复按钮或点击的超链接打开不受支持的参数万博1manbetx块的参数窗口。

另请参阅

||||||

相关的话题