Блоки Simulink ® позволяют задать диапазон допустимых значений для их выходных сигналов. Определение диапазонов сигналов помогает оптимизировать типы данных и улучшить сгенерированный код .
Если используется Embedded Coder ®, Simulink Coder™ может оптимизировать код, генерируемый на основе модели, с учетом минимальных и максимальных значений, заданных для сигналов и параметров. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов моделирования, таких как SIL или внешний режим. Дополнительные сведения см. в разделе Оптимизация с использованием указанных минимального и максимального значений (встроенный кодер).
Следующие блоки позволяют задать диапазоны для их выходных сигналов:
Чтобы задать диапазоны сигналов для большинства блоков, используйте параметры Output minimum и Output maximum блока, чтобы задать диапазон допустимых значений для выходного сигнала блока. Исключения включают блоки «Память хранилища данных», «Входной порт», «Выходной порт» и «Спецификация сигнала», для которых для задания диапазона сигналов используются их минимальные и максимальные параметры. Список применимых блоков см. в разделе Блоки, разрешающие спецификацию диапазона сигналов.
Для доступа к этим параметрам используйте инспектор свойств (на вкладке «Моделирование» в группе «Проект» выберите «Инспектор свойств»), редактор данных модели (на вкладке «Моделирование» выберите «Редактор данных модели») или диалоговое окно блока.
Укажите минимум или максимум как выражение, которое вычисляется как скалярное вещественное число с помощью double тип данных. Например, можно использовать:
Буквенное число, например 98.884. Неявно тип данных: double.
Числовая переменная рабочей области (см. раздел Совместное использование и повторное использование значений параметров блока путем создания переменных), тип данных которой: double. Этот метод используется для совместного использования минимального или максимального значения между несколькими элементами данных.
Однако нельзя использовать переменные для установки Min или Max свойства Simulink.Signal объект.
Указанное скалярное значение применяется к каждому элементу составного сигнала (например, когда сигнал не является скалярным или является шиной). Сведения о скалярном расширении см. в разделе Скалярное расширение входов и параметров.
Чтобы оставить неопределенным минимум или максимум сигнала, используйте пустую матрицу [], которое является значением по умолчанию.
При использовании конструкций моделирования, таких как сигналы шины, хранилища данных и диаграммы Stateflow ®, можно использовать различные методы для указания информации о диапазоне проектирования. Используйте информацию в таблице.
| Описание целевого сигнала | Техника и дополнительная информация |
|---|---|
Цифровой комплексный сигнал | При задании минимального или максимального выходного значения для численно сложного сигнала указанные минимальное и максимальное значения применяются отдельно к действительной и мнимой части комплексного числа. Если значение любой части числа меньше минимума или больше максимума, комплексное число выходит за пределы указанного диапазона. Проверка диапазона не выполняется для любой комбинации вещественных и мнимых частей, таких как |
Сигнальные элементы в шине | При сборке шины с помощью блока Bus Creator можно указать информацию о диапазоне для вышестоящих блоков, питающих Bus Creator. Независимо от метода, используемого для сборки шины, можно создать |
Сигнал в функциональном блоке MATLAB | Используйте Диспетчер портов и данных для определения минимальных и максимальных свойств данных. См. раздел Настройка общих свойств. |
Сигнал в диаграмме статофлоу | Задайте свойства Минимум (Minimum) и Максимум (Maximum) для соответствующих данных потока состояний. См. раздел Предельный диапазон (поток состояний). |
Сигнал, связанный с объектом сигнала (например, | Установите |
Хранилище данных (блок памяти хранилища данных или | Для блока памяти хранилища данных задайте параметры блока «Минимум» и «Максимум». Для сигнального объекта установите значение |
Simulink предоставляет диагностику с именем Simulation range checking, которая позволяет определять, когда сигналы превышают заданные диапазоны во время моделирования. При включении Simulink сравнивает значения сигналов, выводимых блоком, как с заданным диапазоном (см. Работа с диапазонами сигналов в блоках), так и с типом данных блока. То есть Simulink выполняет следующую проверку:
DataTypeMin ≤ MinValue ≤ VALUE ≤ MaxValue ≤ DataTypeMax
где
DataTypeMin - минимальное значение, представляемое типом данных блока.
MinValue - минимальное значение, которое должен выводить блок, определяемое, например, выходным минимумом.
VALUE - значение сигнала, выводимого блоком.
MaxValue - максимальное значение, которое должен выводить блок, определяемое, например, «Максимальное значение вывода».
DataTypeMax - максимальное значение, представляемое типом данных блока.
Примечание
Можно указать, как блок обрабатывает сигналы, которые превышают определенные диапазоны. Например, можно задать значения (отличные от значений по умолчанию) для обоих параметров диапазона сигналов и включить параметр Saturate on integer overflow. В этом случае Simulink выводит предупреждающее сообщение, в котором рекомендуется отключить параметр Saturate on integer overflow.
Чтобы включить диагностику проверки диапазона моделирования, выполните следующие действия.
В окне модели на вкладке Моделирование (Modeling) щелкните Настройки модели (Model Settings).
Simulink отображает диалоговое окно «Параметры конфигурации».
В дереве Выбрать (Select) в левой части диалогового окна Параметры конфигурации (Configuration Parameters) щелкните категорию Диагностика (Diagnostics) > Валидность данных (Data Validity). В правой части раздела «Сигналы» установите диагностику проверки диапазона моделирования в значение error или warning.

Нажмите кнопку ОК, чтобы применить изменения и закрыть диалоговое окно Параметры конфигурации (Configuration Parameters).
Дополнительные сведения см. в разделе Проверка диапазона моделирования.
Для проверки на наличие ошибок диапазона сигналов или предупреждений:
Включите диагностику проверки диапазона моделирования для модели (см. раздел Включение проверки диапазона моделирования).
В окне модели щелкните Выполнить (Run), чтобы смоделировать модель.
Simulink моделирует модель и выполняет проверку диапазона сигналов. Если сигнал превышает заданный диапазон, то при выполнении диагностики проверки диапазона моделирования error, Simulink останавливает моделирование и генерирует ошибку (например, в средстве просмотра диагностики).
В противном случае, если сигнал превышает заданный диапазон, при выполнении диагностики проверки диапазона моделирования warning, Simulink генерирует предупреждающее сообщение в окне команд MATLAB ®. Каждое сообщение идентифицирует блок, выходной сигнал которого превышает заданный диапазон, и временной шаг, на котором происходит это нарушение.
Некоторые виртуальные блоки (см. Невиртуальные и Виртуальные блоки) позволяют задавать диапазоны для их выходных сигналов, например, блоки Inport и Outport. Когда диагностика проверки диапазона моделирования включена для модели, которая содержит такие блоки, диапазон сигналов виртуального блока распространяется назад к первому экземпляру невиртуального блока, выходной сигнал которого он принимает. Если невиртуальный блок определяет различные значения для своего собственного диапазона, Simulink выполняет проверку диапазона сигнала с максимально возможным диапазоном. То есть Simulink проверяет сигнал, используя большее минимальное значение и меньшее максимальное значение.
Например, рассмотрим следующую модель:

В этой модели блок Constant задает свой параметр Output maximum равным 300, а для блока Inport установлено значение 100. Предположим, что включена диагностика проверки диапазона моделирования и моделирование модели. Блок Inport обратно распространяет свое максимальное значение на предшествующий ему невиртуальный блок, т.е. блок Constant. Затем Simulink использует меньшее из двух максимальных значений для проверки сигнала, выводимого блоком Constant. Поскольку блок константы выдает сигнал, значение которого (200) превышает самый плотный диапазон, Simulink генерирует ошибку.
doubleКогда элемент данных (сигнал или параметр) использует тип данных, отличный от doubleПеред сравнением Simulink помещает элемент данных и каждое заданное предельное значение (минимальное или максимальное значение) в тип данных, не содержащий двойных значений. Этот метод помогает предотвратить появление ненужных, вводящих в заблуждение ошибок и предупреждений.
Однако Simulink сохраняет проектные ограничения как double перед сравнением. Если тип данных элемента данных имеет более высокую точность, чем double (например, тип данных с фиксированной точкой с длиной слова 128 бит и длиной дроби 126 бит) или больший диапазон, чем double, и double не может точно представлять значение предела конструкции, Simulink может генерировать непредвиденные предупреждения и ошибки.
Если тип Nondouble имеет более высокую точность, рассмотрите возможность округления проектного предела до следующего числа, наиболее удаленного от нуля, которое double может представлять. Например, предположим, что сигнал генерирует ошибку после установки максимального значения в 98.8847692348509014. В командной строке вычислите следующее число, наиболее удаленное от нуля, double может представлять.
format long
98.8847692348509014 + eps(98.8847692348509014)ans = 98.884769234850921
Используйте результирующее число, 98.884769234850921, для замены максимального значения.