Добавьте ограничения, чтобы замаскировать параметры

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

. Чтобы добавить ограничения маски, не имея необходимость писать код доступа (Инициализируют Маску, Код коллбэка маски), используйте опцию Constraint Manager, доступную в Редакторе Маски.

Ограничения имеют тип:

  • Parameter Constraint — Сопоставленный с одним или несколькими параметрами маски типа Edit. Можно создать эти ограничения в маске или сохранить их как файл MAT. Несколько масок блока могут совместно использовать ограничение параметра, сохраненное как файл MAT.

  • Cross Parameter Constraint — Примененный среди двух или больше параметров маски типа Edit.

Создайте ограничения параметра

Рассмотрите модель masking_example. Эта модель содержит два параметра маски типа Edit, Slope и Intercept.

Можно задать значения для Slope и Intercept в диалоговом окне маски. Ограничить входное значение (например, тип данных) для Slope и параметров Intercept, создают ограничение параметра с необходимым правилом и сопоставляют его с параметрами Intercept и Slope. Чтобы ограничить входное значение, таким образом, что значение Slope больше, чем входное значение параметра Intercept, можно создать ограничение перекрестного параметра между этими двумя параметрами.

  1. Откройте модель masking_example. Эта модель содержит блок Subsystem маскированный с двумя параметрами маски типа Edit, Slope (m) и Intercept (b).

  2. Щелкните правой кнопкой по блоку Subsystem маскированному (mx + b) и выберите Mask> Edit Mask.

  3. В диалоговом окне Mask Editor кликните по вкладке Parameters & Dialog.

  4. Нажмите Constraint Manager в левой нижней части Редактора Маски. Также выберите любой параметр редактирования и затем в Редакторе свойств, от Constraint выпадающее меню, выберите Add New Constraint. Окно Constraint Manager появляется.

    Constraint Manager имеет две панели, Parameter Constraints и Cross Parameter Constraints. По умолчанию панель Parameter Constraints открывается. Ограничения, что вы создаете использование панели Parameter Constraints, могут быть сопоставлены с параметрами маски типа Edit.

  5. Нажмите Create Constraint. Ограничение с именем по умолчанию (Constraint_1) создается, и отображены свойства, связанные с этим ограничением. Чтобы изменить ограничительное название, отредактируйте поле Name. Ограничительное имя должно быть допустимым именем MATLAB®. По умолчанию правило (Rule_1) с Data type как double добавляется, когда новое ограничение создается. Можно изменить атрибуты правила. Можно также добавить больше правил в ограничение путем нажатия на Add Rule.

  6. Чтобы сохранить новое ограничение в файл MAT, установите флажок Save constraint to MAT file. Это включает поле Mat-file Name и кнопку Browse.

    Примечание

    Сохранение ограничения к файлу MAT делает его независимым от маски так, чтобы несколько масок могли совместно использовать то ограничение. Можно пропустить это действие, если вы хотите, чтобы ограничение было теговым к определенной маске, которую вы редактируете.

  7. Введите имя файла MAT в поле Mat-file Name или нажмите Browse, чтобы создать новый файл MAT или выбрать один из локальной директории.

  8. Задайте атрибуты для правила. Эта таблица показывает атрибуты правила и приемлемые значения.

    Управляйте атрибутомЗначение атрибутаОписание

    Data type

    double, single, numeric, integer, int8, uint8, int16, uint16, int32, uint32, boolean, enum, fixdt, string

    Задайте приемлемый тип данных значения параметров маски. Например, если заданным типом данных является uint8, приемлемое значение находится в области значений uint8, то есть, 0–255.

    Complexity

    real, complex

    Задайте, может ли значение параметров маски быть вещественным или комплексным числом.

    Dimensions

    scalar, row vector, column vector, 2-D matrix, n-D matrix

    Задайте приемлемые размерности для параметра маски.

    Sign

    positive, negative, zero

    Задайте, может ли входное значение быть положительным, отрицательным, или нуль.

    Finiteness

    finite, inf, -inf, NaN

    Задайте приемлемую ограниченность значения параметров маски.

    Range

    Minimum, Maximum

    Задайте допустимый диапазон значения параметров маски.

    Custom Constraint

    Допустимое выражение MATLAB

    Задайте пользовательское ограничение для параметра маски с помощью допустимого выражения MATLAB. Можно использовать лексему значения, чтобы параметризовать выражение. Во время валидации оцененное значение параметра заменяет лексему значения. Например, если выражение MATLAB для ограничения является value > 100 и сопоставлено с параметром маски типа Edit, Parameter1, выражение MATLAB оценивает как Parameter1 > 100.

    Custom Error Message

    Символьный вектор

    Задайте пользовательское сообщение об ошибке для пользовательского ограничения. Можно задать сообщение об ошибке как вектор символов или как ID каталога сообщений.

    Ограничение может содержать один или несколько правил. В случае нескольких правил значение связанного параметра должно удовлетворить по крайней мере одно правило. Если несколько атрибутов выбраны из категории правила, значение параметров должно удовлетворить по крайней мере один атрибут от каждой категории. Например, если ограничительное правило содержит scalar и row vector как атрибуты Dimension и positive и zero, когда Sign приписывает, значение параметра должно быть (скалярный или вектор - строка) и (положительно или нуль).

  9. Опционально, чтобы добавить больше правил в ограничения, нажмите Add Rule. Новый раздел правила с атрибутом правила открывается.

  10. Нажмите Apply. Ограничение параметра с заданными правилами теперь создается. Можно сопоставить это ограничение с одним или несколькими параметрами маски типа Edit.

  11. Опционально, чтобы удалить ограничение, выберите ограничение в поле Constraint Name, доступном в Parameter Constraints, разделяют на области и нажимают Delete Constraint.

Рассмотрите модель Parameter Constraint в slexMaskConstraints. Эта модель содержит блок UDP Send маскированный, который имеет ограничения параметра, constraint_1 и constraint_2. constraint_1 сопоставлен с параметром Remote IP Port, в то время как constraint_2 сопоставлен с параметром SampleTime.

Разделяемые ограничения параметра

Можно создать и сохранить ограничения параметра в файле MAT. Можно сохранить ограничение в файле MAT или из Редактора Маски или программно. Несколько масок блока могут совместно использовать ограничение параметра, если ограничение сохранено в файле MAT. Разделяемое ограничение перечислено в разделе Редактора свойств в формате <MATFileName>:<ConstraintName>. Можно выбрать любое доступное ограничение как требуется и сопоставить его с параметром Редактирования. Для получения дополнительной информации смотрите Объединенное Ограничение к Параметру.

В то время как создание совместно использовало ограничения, рекомендуется что вы:

  • Сохраните ограничения в файлы MAT, которые находятся в пути MATLAB.

  • Обеспечьте понятные имена к ограничениям так, чтобы другие пользователи могли понять природу ограничения легко.

Ограничения, сопоставленные к параметру Редактирования из файла MAT (совместно использованные ограничения), подтверждены во время разового редактированием и симуляции.

Чтобы создать разделяемое ограничение, установите флажок Save constraint to MAT file, доступный в менеджере по Ограничению, и задайте имя файла MAT. Для получения дополнительной информации смотрите, Создают Ограничения Параметра.

Примечание

Если вы снимаете флажок Save constraint to MAT file разделяемого ограничения, которое сопоставлено с параметром Редактирования, копия ограничения создается в контексте той конкретной маски. Можно теперь внести изменения в атрибуты того ограничения, не влияя на исходное разделяемое ограничение, сохраненное в файле MAT. Обратите внимание на то, что исходное разделяемое ограничение находится все еще в файле MAT и доступно другим пользователям.

Сохраните и загрузите ограничения программно

Можно сохранить ограничения в файле MAT и загрузить ограничения из файла MAT программно.

Сохранить ограничение в файле MAT:

uint16Constraint = Simulink.Mask.Constraints;
uint16Constraint.Name = 'uint16Constraint';
uint16Constraint.addParameterConstraintRule('DataType', 'uint16');
save('constraintList.mat', 'uint16Constraint','-append');  %this will append the 
constraint uint16Constraint in the mat file
save('constraintList.mat', 'uint16Constraint') % this will clear all the 
content of 
the mat file and write just 'uint16Constraint' into the mat file.

Примечание

Рекомендуется, чтобы ограничительное имя (например, uint16Constraint.Name = 'uint16Constraint') и переменная, используемая для хранения ограничения (например, uint16Constraint = Simulink.Mask.Constraints), имело то же имя.

Загружать ограничение из файла MAT:

myConstraints = load(‘constraintList’) //this will load the constraint into 
the variable 'myConstraints'

Для получения дополнительной информации о работе с ограничениями программно, смотрите Simulink.Mask и Simulink.Mask.Constraints.

Объединенное ограничение к параметру

Можно сопоставить ограничения к любым параметрам маски Edit. Соединение ограничения к параметру Edit гарантирует, что входное значение для параметра маски в желаемой спецификации.

  1. Откройте модель masking_example. Эта модель содержит блок Subsystem маскированный с двумя параметрами маски типа Edit, Slope (m) и Intercept (b).

  2. Щелкните правой кнопкой по блоку Subsystem маскированному (mx + b) и выберите Mask> Edit Mask.

  3. Кликните по вкладке Parameters & Dialog и выберите любой параметр Редактирования.

  4. В панели Property editor, от Constraint выпадающее меню, выбирают доступное ограничение. Здесь, ограничения, доступные в файле MAT, показываются <MATFileName>:<Constraint name>. Ограничения, доступные в маске, показываются <Constraint Name>. Если никакие ограничения не показывают в выпадающем меню, нажмите Add New Constraint, чтобы добавить новый от менеджера по Ограничению или нажать Browse and Add New Constraint, чтобы добавить ограничения, сохраненные в файлах MAT. Можно также ввести ограничительное имя, чтобы сопоставить их к параметру.

  5. Нажмите Apply. Выбранное ограничение теперь сопоставлено к параметру Edit.

Создайте ограничение перекрестного параметра

Ограничения перекрестного параметра позволяют вам создавать ограничения среди параметров маски типа Edit блока. Можно использовать панель Cross Parameter Constraints , чтобы создать этот тип ограничений. Как лучшая практика, создайте ограничения перекрестного параметра между связанными параметрами маски. Например, между наклоном и прерыванием, или верхней границей и нижней границей блока Integrator.

  1. Откройте модель masking_example. Эта модель содержит блок Subsystem маскированный с двумя параметрами маски типа Edit, Slope (m) и Intercept (b).

  2. Щелкните правой кнопкой по блоку Subsystem маскированному (mx + b) и выберите Mask> Edit Mask.

  3. В диалоговом окне Mask Editor кликните по вкладке Parameters & Dialog.

  4. Нажмите Constraint Manager в левой нижней части Редактора Маски. Менеджер по Ограничению открывается.

  5. Кликните по вкладке Cross Parameter Constraints.

  6. Нажмите Create Constraint. Новое ограничение перекрестного параметра создается с именем по умолчанию (Constraint_1). Можно поменять ограничительное имя.

  7. Задайте эти значения для ограничений:

    1. Имя- Задайте имя ограничения перекрестного параметра.

    2. Выражение MATLAB- Задайте допустимое выражение MATLAB. Это выражение выполнено во время разового редактированием и симуляции. Например, Slope < Intercept.

    3. ErrorMessage - Задайте сообщение об ошибке, которое будет отображено, когда ограничительному правилу не выполнят. Если никакое сообщение об ошибке не задано, сообщение об ошибке по умолчанию отображено.

  8. Нажмите OK. Ограничение перекрестного параметра с заданными правилами теперь создается.

Рассмотрите модель Cross-Parameter Constraint в slexMaskConstraints. Эта модель содержит блок Integrator маскированный, который имеет ограничение перекрестного параметра (LimitConstraint). Это ограничение перекрестного параметра применяется среди параметров маски с помощью выражения MATLAB:

(UpperSaturationLimit > LowerSaturationLimit) && isequal(class (UpperSaturationLimit), class(LowerSaturationLimit), class(InitialCondition)).

Похожие темы