Advisor.authoring.generateBlockConstraintsDataFile

(Не рекомендуемый), Генерируют файл данных XML для собственной проверки для ограничений блока

Advisor.authoring.generateBlockConstraintsDataFile не рекомендуется. Использование Advisor.authoring.createBlockConstraintCheck вместо этого.

Для получения дополнительной информации смотрите, Задают Проверки Model Advisor на Поддерживаемые и Неподдерживаемые Блоки и Параметры.

Описание

Advisor.authoring.generateBlockConstraintsDataFile(dataFile, 'constraints',constraintslist) генерирует файл данных XML под названием dataFile. Этот файл данных задает ограничения, которые содержит собственная проверка. Маркировка использования файла данных, чтобы указать ограничительную информацию. Когда вы создаете собственную проверку, вы используете файл данных.

Задайте ограничительные объекты в базовом рабочем пространстве и затем передайте эти объекты как входные параметры к этой функции. Эти ограничения могут быть корневыми ограничениями и необходимыми условиями, чтобы базироваться ограничения. Можно также задать составное ограничение. Если вы задаете несколько корневых ограничений и никакое составное ограничение, Simulink реализует составное ограничение с CompositeOperator из and.

Примеры

свернуть все

Создайте собственную проверку для этого Check проверки MAB настройки для портов данных в Многопортовых блоках switch. Для Многопортовых блоков switch проверка содержит ограничение, которое проверяет, что установкой параметра Data port order является Specify indices. Если параметр имеет эту установку, существуют ограничения, которые проверяют, что установкой параметра Data port for default case является Additional data port и установкой Diagnostic for default case является 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 необходимое условие к проверке ограничений c2 и c3.

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

Создайте составное ограничение, которое указывает это, если блок Multiport Switch не соответствует ограничениям c2 и c3, блок нарушает эту проверку.

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 paramter constraints check';
rec.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback...
    (system)), 'None', 'StyleOne');
rec.TitleTips = 'Example check for block paramter 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}

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2021b

Введенный в R2018a