Укажите диапазоны сигнала

Блоки Simulink® позволяют вам указывать диапазон допустимых значений для их выходных сигналов. Определение диапазонов сигнала помогает вам оптимизировать типы данных и улучшить сгенерированный код.

Если у вас есть Embedded Coder®, Simulink Coder™ может оптимизировать код, который вы генерируете из модели путем принятия во внимание минимальных и максимальных значений, которые вы задаете для сигналов и параметров. Эта оптимизация может удалить алгоритмический код и влиять на результаты некоторых режимов симуляции, такие как SIL или режим external mode. Для получения дополнительной информации смотрите, Оптимизируют использование заданных минимальных и максимальных значений (Embedded Coder).

Блоки, которые позволяют спецификацию диапазона сигнала

Следующие блоки позволяют вам указывать диапазоны для своих выходных сигналов:

Работа с диапазонами сигнала в блоках

Чтобы указать диапазоны сигнала для большинства блоков, используйте Output minimum и параметры Output maximum блока, чтобы указать диапазон допустимых значений для выходного сигнала блока. Исключения включают Data Store Memory, Inport, Outport и блоки 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.Signal объект.

Скалярное значение, которое вы задаете, применяется к каждому элементу составного сигнала (например, когда сигнал является нескалярным или шина). Для получения информации о скалярном расширении смотрите Скалярное Расширение Входных параметров и Параметров.

Чтобы оставить минимум или максимум сигнала незаданными, используйте пустой матричный [], который является значением по умолчанию.

Укажите диапазоны для моделирования построений

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

Описание целевого сигналаМетод и больше информации

Численно комплексный сигнал

Когда вы задаете Output minimum или Output maximum для сигнала, который является численно комплексным, заданные минимальные и максимальные значения применяются отдельно к действительной части и к мнимой части комплексного числа. Если значение или части номера меньше минимума, или больше, чем максимум, комплексное число находится вне заданной области. Никакая проверка диапазона не происходит против никакой комбинации действительных и мнимых частей, таких как (sqrt(a^2+b^2)).

Элементы сигнала в шине

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

Независимо от метода вы используете, чтобы собрать шину, можно создать Simulink.Bus объект и использование это как тип данных сигнала шины. В этом случае рассмотрите указывающую информацию области значений при помощи Min и Max свойства Simulink.BusElement объекты, которые находятся в объекте шины. Для получения дополнительной информации смотрите Specify Bus Properties с Объектами Simulink.Bus.

Сигнал в блоке MATLAB Function

Используйте Порты и Менеджер данных, чтобы задать свойства Minimum и Maximum данных. Смотрите Устанавливающие Общие Свойства.

Сигнал в диаграмме Stateflow

Установите свойства Minimum и Maximum соответствующих данных Stateflow. Смотрите Предельную Область значений (Stateflow).

Сигнализируйте, что вы сопоставляете с объектом сигнала (таким как Simulink.Signal)

Установите Min и Max свойства объекта сигнала. Смотрите Simulink.Signal.

Хранилище данных (блок Data Store Memory или Simulink.Signal объект

Для блока Data Store Memory, набор Minimum и параметры блоков Maximum. Для объекта сигнала, набор Min и Max свойства.

Диагностируйте ошибки диапазона сигнала

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:

  1. В вашем окне модели, на вкладке Modeling, нажимают Model Settings.

    Simulink отображает диалоговое окно Configuration Parameters.

  2. В дереве Select на левой стороне диалогового окна Configuration Parameters нажмите Diagnostics> категория Data Validity. На правой стороне под Signals, набор диагностика Simulation range checking к error или warning.

  3. Нажмите OK, чтобы применить ваши изменения и закрыть диалоговое окно Configuration Parameters.

Смотрите проверку диапазона Симуляции для получения дополнительной информации.

Симулируйте модели с проверкой диапазона симуляции

Проверять на ошибки диапазона сигнала или предупреждения:

  1. Включите диагностику Simulation range checking для своей модели (см., Включают Проверку диапазона Симуляции).

  2. В вашем окне модели нажмите 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, заменять максимальное значение.

Похожие темы