Simulink® блоки позволяют вам указывать диапазон допустимых значений для их выходных сигналов. Определение диапазонов сигнала помогает вам оптимизировать типы данных и улучшить сгенерированный код.
Если у вас есть Embedded Coder®, Simulink Coder™ может оптимизировать код, который вы генерируете из модели путем принятия во внимание минимальных и максимальных значений, которые вы задаете для сигналов и параметров. Эта оптимизация может удалить алгоритмический код и влиять на результаты некоторых режимов симуляции, такие как SIL или режим external mode. Для получения дополнительной информации смотрите, Оптимизируют использование заданных минимальных и максимальных значений (Embedded Coder).
Следующие блоки позволяют вам указывать диапазоны для своих выходных сигналов:
Чтобы указать диапазоны сигнала для большинства блоков, используйте Output minimum и параметры Output maximum блока, чтобы указать диапазон допустимых значений для выходного сигнала блока. Исключения включают Data Store Memory, Inport, In Bus Element, Outport, Out Bus Element и блоки Signal Specification, для которых вы используете их Minimum и параметры Maximum, чтобы указать диапазон сигнала. Смотрите Блоки, Которые Позволяют Спецификацию Диапазона сигнала для списка применимых блоков.
Чтобы получить доступ к этим параметрам, используйте Property Inspector (на вкладке Modeling, под Design, нажмите Property Inspector), Model Data Editor (на вкладке Modeling, нажмите Model Data Editor), или диалоговое окно блока.
Задайте минимум или максимум как выражение, которое оценивает к скаляру, вещественному числу с double
тип данных. Например, можно использовать:
Литеральный номер, такой как 98.884
. Неявно, типом данных является double
.
Числовая переменная рабочей области (см. Значения Параметров блоков Доли и Повторного использования путем Создания Переменных), чьим типом данных является double
. Используйте этот метод, чтобы совместно использовать минимальное или максимальное значение между несколькими элементами данных.
Когда вы используете переменную, чтобы установить Min
или Max
свойство Simulink.ValueType
, Simulink.Signal
, или Simulink.BusElement
объект, текущее значение переменной присвоено объекту. Min
и Max
свойства объекта не затронуты будущими изменениями в переменной.
Скалярное значение, которое вы задаете, применяется к каждому элементу составного сигнала (например, когда сигнал является нескалярным или шина). Для получения информации о скалярном расширении смотрите Скалярное Расширение Входных параметров и Параметров.
Чтобы оставить минимум или максимум сигнала незаданными, используйте пустой матричный []
, который является значением по умолчанию.
Если вы используете построения моделирования, такие как шины, хранилища данных и Stateflow® графики, можно использовать различные методы, чтобы указать информацию области значений проекта. Используйте информацию в таблице.
Описание целевого сигнала | Метод и больше информации |
---|---|
Численно комплексный сигнал | Когда вы задаете Output minimum или Output maximum для сигнала, который является численно комплексным, заданные минимальные и максимальные значения применяются отдельно к действительной части и к мнимой части комплексного числа. Если значение или части номера меньше минимума, или больше, чем максимум, комплексное число находится вне заданной области. Никакая проверка диапазона не происходит против никакой комбинации действительных и мнимых частей, таких как |
Элементы сигнала в шине | Если вы собираете шину при помощи блока Bus Creator, можно указать информацию области значений на восходящих блоках, которые питают блок Bus Creator. Независимо от метода вы используете, чтобы собрать шину, можно создать |
Сигнал в блоке MATLAB Function | Используйте Порты и Менеджер данных, чтобы задать свойства Minimum и Maximum данных. Смотрите Набор Общие Свойства данных. |
Сигнал в диаграмме Stateflow | Установите свойства Minimum и Maximum соответствующих данных Stateflow. Смотрите Предельную Область значений (Stateflow). |
Сигнализируйте, что вы сопоставляете с объектом (таким как | Установите |
Хранилище данных (блок Data Store Memory или | Для блока Data Store Memory, набор Minimum и параметры блоков Maximum. Для объекта сигнала, набор |
Simulink обеспечивает диагностику под названием Simulation range checking, который можно включить, чтобы обнаружить, когда сигналы превышают свои заданные области в процессе моделирования. Когда включено, Simulink сравнивает значения сигналов что блок выходные параметры с обоими заданная область (см. работу с Диапазонами сигнала в Блоках), и тип данных блока. Таким образом, Simulink выполняет следующую проверку:
DataTypeMin ≤ MinValue ≤ VALUE ≤ MaxValue ≤ DataTypeMax
где
DataTypeMin
минимальное значение, представимое типом данных блока.
MinValue
минимальное значение, которое блок должен вывести, заданный, например, Output minimum.
VALUE
значение сигналов что блок выходные параметры.
MaxValue
максимальное значение, которое блок должен вывести, заданный, например, Output maximum.
DataTypeMax
максимальное значение, представимое типом данных блока.
Примечание
Возможно чрезмерно определить, как блок обрабатывает сигналы, которые превышают конкретные области значений. Например, можно задать значения (кроме значений по умолчанию) и для параметров диапазона сигнала и включить параметр Saturate on integer overflow. В этом случае Simulink отображает предупреждающее сообщение, которое советует вам отключать параметр Saturate on integer overflow.
Включить диагностику Simulation range checking:
В вашем окне модели, на вкладке Modeling, нажимают Model Settings.
Simulink отображает диалоговое окно Configuration Parameters.
В дереве Select на левой стороне диалогового окна Configuration Parameters нажмите Diagnostics> категория Data Validity. На правой стороне под Signals, набор диагностика Simulation range checking к error
или warning
.
Нажмите OK, чтобы применить ваши изменения и закрыть диалоговое окно Configuration Parameters.
Смотрите проверку диапазона Симуляции для получения дополнительной информации.
Проверять на ошибки диапазона сигнала или предупреждения:
Включите диагностику Simulation range checking для своей модели (см., Включают Проверку диапазона Симуляции).
В вашем окне модели нажмите Run, чтобы симулировать модель.
Simulink симулирует вашу модель и выполняет проверку диапазона сигнала. Если сигнал превышает свою заданную область, когда диагностика Simulation range checking задает error
, Simulink останавливает симуляцию и генерирует ошибку (например, в Диагностическом Средстве просмотра).
В противном случае, если сигнал превышает свою заданную область, когда диагностика Simulation range checking задает warning
, Simulink генерирует предупреждающее сообщение в MATLAB® Командное окно. Каждое сообщение идентифицирует блок, выходной сигнал которого превышает свою заданную область и временной шаг, на котором происходит это нарушение.
Некоторые виртуальные блоки (см. Невиртуальные и Виртуальные Блоки) позволяют вам указывать диапазоны для своих выходных сигналов, например, Inport и блоков Outport. Когда диагностика Simulation range checking включена для модели, которая содержит такие блоки, диапазон сигнала виртуального блока распространяет назад к первой инстанции невиртуального блока, выходной сигнал которого это получает. Если невиртуальный блок задает различные значения для своей собственной области значений, Simulink выполняет диапазон сигнала, сверяющийся с возможной областью значений tightest. Таким образом, Simulink Check сигнал с помощью большего минимального значения и меньшего максимального значения.
Например, рассмотрите следующую модель:
В этой модели блок Constant задает свой параметр Output maximum как 300, и тот из блока Inport установлен в 100. Предположим, что вы включаете диагностику Simulation range checking и симулируете модель. Блок Inport назад распространяет свое максимальное значение с невиртуальным блоком, который предшествует ему, т.е. блок Constant. Simulink затем использует меньшие из этих двух максимальных значений, чтобы проверять сигнал что блок Constant выходные параметры. Поскольку блок Constant выводит сигнал, значение которого (200) превышает самую трудную область значений, Simulink генерирует ошибку.
double
Когда элемент данных (сигнал или параметр) использует тип данных кроме double
, перед сравнением Simulink бросает элемент данных и каждый предел проекта (минимальное или максимальное значение, которое вы задаете) к недвойному типу данных. Этот метод помогает предотвратить генерацию ненужных, вводящих в заблуждение ошибок и предупреждения.
Однако Simulink хранит пределы проекта как double
перед сравнением. Если тип данных элемента данных имеет более высокую точность, чем double
(например, тип данных с фиксированной точкой с 128-битным размером слова и 126-битной дробной длиной) или большая область значений, чем double
, и double
не может точно представлять значение предела проекта, Simulink может сгенерировать неожиданные предупреждения и ошибки.
Если недвойной тип имеет более высокую точность, рассмотрите округление предела проекта следующему номеру дальше всего от нуля что double
может представлять. Например, предположите, что сигнал генерирует ошибку после того, как вы устанавливаете максимальное значение к 98.8847692348509014
. В командной строке вычислите следующий номер дальше всего от нуля что double
может представлять.
format long
98.8847692348509014 + eps(98.8847692348509014)
ans = 98.884769234850921
Используйте получившийся номер, 98.884769234850921
, заменять максимальное значение.