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

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

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

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

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

  • Перекрестное Ограничение Параметра — Прикладной среди двух или больше параметров маски типа Редактирования.

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

Рассмотрите образцовый masking_example. Эта модель содержит два параметра маски типа Редактирования, Slope и Intercept.

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

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

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

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

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

    У менеджера по ограничению есть две панели, Ограничения Параметра и Перекрестные Ограничения Параметра. По умолчанию Ограничительная панель Параметра открывается. Ограничения, что вы создаете использование Ограничительной панели Параметра, могут быть сопоставлены с параметрами маски типа Редактирования.

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

  6. Чтобы сохранить новое ограничение в файл MAT, выберите ограничение Save к флажку файла MAT. Это включает Поле имени MAT-файла и Кнопку обзора.

    Примечание

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

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

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

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

    Тип данных

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

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

    Сложность

    real, complex

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

    Размерности

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

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

    Знак

    positive, negative, zero

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

    Ограниченность

    finite, inf, -inf, NaN

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

    Область значений

    Minimum, Maximum

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

    Пользовательское ограничение

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

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

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

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

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

  11. Опционально, чтобы удалить ограничение, выберите ограничение в Ограничительном Поле имени, доступном в Ограничениях Параметра, разделяют на области и нажимают 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 к флажку файла MAT, доступному в менеджере по Ограничению, и задайте имя файла MAT. Для получения дополнительной информации смотрите, Создают Ограничения Параметра.

Примечание

Если вы очищаете ограничение Сохранения к флажку файла MAT разделяемого ограничения, которое сопоставлено с параметром Редактирования, копия ограничения создается в контексте той конкретной маски. Можно теперь внести изменения в атрибуты того ограничения, не влияя на исходное разделяемое ограничение, сохраненное в файле 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 Ограничения.

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

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

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

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

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

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

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

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

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

  1. Откройте образцовый masking_example. Эта модель содержит блок Subsystem маскированный с двумя параметрами маски типа Редактирования, 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. Нажать ОК. Ограничение перекрестного параметра с заданными правилами теперь создается.

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

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

Похожие темы

Была ли эта тема полезной?