主要内容

本页采用了机器翻译。点击此处可查看英文原文。

Advisor.authoring.generateBlockConstraintsDataFile

(不推荐)生成 XML 数据文件,用于自定义检查模块约束

不推荐使用 Advisor.authoring.generateBlockConstraintsDataFile。请改用 Advisor.authoring.createBlockConstraintCheck

有关详细信息,请参阅针对支持和不支持的模块和参数定义模型顾问检查

说明

Advisor.authoring.generateBlockConstraintsDataFile(dataFile, 'constraints',constraintslist) 生成一个名为 dataFile 的 XML 数据文件。此数据文件指定了自定义检查所包含的约束。数据文件使用标签来指定约束信息。创建自定义检查时,需要使用数据文件。

在基础工作空间中定义约束对象,然后将这些对象作为输入传递给此函数。这些约束可能是根约束,也可能是根约束的前提条件。您还可以定义复合约束。如果您指定多个根约束且没有复合约束,则 Simulink 将实现复合约束,其中 CompositeOperatorand

示例

全部折叠

为该 MAB 检查 检查 Multiport Switch 模块中数据端口的设置 创建自定义检查。对于 Multiport Switch 块,检查包含一个约束,该约束检查数据端口顺序参数设置是否为 Specify indices。如果该参数具有此设置,则存在约束,用于检查默认情况数据端口参数设置是否为 Additional data port,以及默认情况诊断设置是否为 None

创建三个 PositiveBlockParameter 约束对象。

c1 = Advisor.authoring.PositiveBlockParameterConstraint(); 
c1.ID = 'ID_A2'; 
c1.BlockType = 'MultiPortSwitch'; 
c1.ParameterName = 'DataPortOrder'; 
c1.SupportedParameterValues = {'Specify indices'}; 
c1.ValueOperator = 'eq'; 

c2 = Advisor.authoring.PositiveBlockParameterConstraint(); 
c2.ID = 'ID_A3'; 
c2.BlockType = 'MultiPortSwitch'; 
c2.ParameterName = 'DataPortForDefault'; 
c2.SupportedParameterValues = {'Additional data port'}; 
c2.ValueOperator = 'eq'; 

c3 = Advisor.authoring.PositiveBlockParameterConstraint(); 
c3.ID = 'ID_A4'; 
c3.BlockType = 'MultiPortSwitch'; 
c3.ParameterName = 'DiagnosticForDefault'; 
c3.SupportedParameterValues = {'None'}; 
c3.ValueOperator = 'eq'; 

使用 addPreRequisiteConstraintID 方法使 c1 成为检查约束 c2c3 的前提条件。

c2.addPreRequisiteConstraintID('ID_A2'); 
c3.addPreRequisiteConstraintID('ID_A2');

创建一个复合约束,规定如果 Multiport Switch 模块不满足约束 c2c3,则该模块违反此检查。

cc = Advisor.authoring.CompositeConstraint(); 
cc.addConstraintID('ID_A3');
cc.addConstraintID ('ID_A4');
cc.CompositeOperator = 'and'; 

创建一个包含约束的数据文件。

dataFile = 'myDataFile.xml';
Advisor.authoring.generateBlockConstraintsDataFile( ...
               dataFile,'constraints',{c1,c2,c3,cc});

数据文件 myDataFile.xml 包含用于指定自定义检查约束信息的标签。

<?xml version="1.0" encoding="utf-8"?>
<customcheck>
   <checkdata>
      <PositiveBlockParameterConstraint BlockType="MultiPortSwitch" id="ID_A2">
         <parameter type="string">DataPortOrder</parameter>
         <value>Specify indices</value>
         <operator>eq</operator>
      </PositiveBlockParameterConstraint>
      <PositiveBlockParameterConstraint BlockType="MultiPortSwitch" id="ID_A3">
         <parameter type="string">DataPortForDefault</parameter>
         <value>Additional data port</value>
         <operator>eq</operator>
         <dependson>ID_A2</dependson>
      </PositiveBlockParameterConstraint>
      <PositiveBlockParameterConstraint BlockType="MultiPortSwitch" id="ID_A4">
         <parameter type="string">DiagnosticForDefault</parameter>
         <value>None</value>
         <operator>eq</operator>
         <dependson>ID_A2</dependson>
      </PositiveBlockParameterConstraint>
      <CompositeConstraint>
         <ID>ID_A3</ID>
         <ID>ID_A4</ID>
         <operator>and</operator>
      </CompositeConstraint>
   </checkdata>
</customcheck>

注意

对于模型配置参数约束,仅当将模型配置参数约束指定为模块约束的前提条件或作为由块模块和模型配置参数约束组成的复合约束的一部分时,才使用函数 Advisor.authoring.generateBlockConstraintsDataFile。对于其他情况,请使用函数 Advisor.authoring.generateConfigurationParameterDataFile

将数据文件 myDataFile.xml 指定为检查定义函数的输入。要指定和注册此检查,请使用此 sl_customization.m 文件。

function sl_customization(cm)
% SL_CUSTOMIZATION - Model Advisor customization demonstration.

% Copyright 2019 The MathWorks, Inc.

% register custom checks 
cm.addModelAdvisorCheckFcn(@defineBlockConstraintCheck);

end

% -----------------------------
% defines Model Advisor Check
% -----------------------------
function defineBlockConstraintCheck

rec = Advisor.authoring.createBlockConstraintCheck('com.mathworks.sample.blockConstraint');
rec.Title = 'Example of block parameter constraints check';
rec.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback...
    (system)), 'None', 'StyleOne');
rec.TitleTips = 'Example check for block parameter constraints';

% --- data file input parameters
rec.setInputParametersLayoutGrid([1 1]);
inputParam1 = ModelAdvisor.InputParameter;
inputParam1.Name = 'Data File';
inputParam1.Value = 'myDataFile.xml';
inputParam1.Type = 'String';
inputParam1.Description = 'Name or full path of XML data file.';
inputParam1.setRowSpan([1 1]);
inputParam1.setColSpan([1 1]);
rec.setInputParameters({inputParam1});
rec.SupportExclusion = false;
rec.SupportLibrary = true;

% publish check into Demo group.
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.publish(rec, 'Demo'); 

end

输入参数

全部折叠

要创建的 XML 数据文件的名称,以字符向量形式指定。

示例: 'myDataFile.xml'

使用以下类创建约束对象:

  • Advisor.authoring.PositiveBlockParameterConstraint

  • Advisor.authoring.NegativeBlockParameterConstraint

  • Advisor.authoring.PositiveModelParameterConstraint

  • Advisor.authoring.NegativeModelParameterConstraint

  • Advisor.authoring.PositiveBlockTypeConstraint

  • Advisor.authoring.NegativeBlockTypeConstraint

  • Advisor.authoring.CompositeConstraint

示例: {c1,c2,c3}

版本历史记录

在 R2018a 中推出

全部折叠