Задайте диапазоны сигнала

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 тип данных. Для примера можно использовать:

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

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

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

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

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

Численно сложный сигнал

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

Сигнальные элементы в шине

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

Независимо от метода, которую вы используете для сборки шины, можно создать Simulink.Bus объект и используйте его как тип данных сигнала шины. В этом случае рассмотрите определение информации о области значений при помощи Min и Max свойства Simulink.BusElement объекты, которые находятся в объекте шины. Для получения дополнительной информации смотрите Задать свойства шины с 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 отображает диалоговое окно Параметров конфигурации.

  2. В дереве Select в левой части диалогового окна Параметры конфигурации щелкните категорию Diagnostics > Data Validity. На правой грани под Signals установите диагностику Simulation range checking равной error или warning.

  3. Нажмите кнопку OK, чтобы применить изменения и закрыть диалоговое окно Параметры конфигурации.

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

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

Для проверки на наличие ошибок диапазона сигнала или предупреждений:

  1. Включите диагностику Simulation range checking для вашей модели (см. «Включить проверку области значений симуляции»).

  2. В окне модели нажмите Run, чтобы симулировать модель.

    Simulink моделирует вашу модель и выполняет проверку диапазона сигнала. Если сигнал превышает свою заданную область, когда диагностика Simulation range checking задает errorSimulink останавливает симуляцию и генерирует ошибку (для примера в Средство просмотра Diagnostic).

    В противном случае, если сигнал превышает свою заданную область, когда диагностика Simulation range checking задает warningSimulink генерирует предупреждающее сообщение в MATLAB® Командное окно. Каждое сообщение идентифицирует блок, чей сигнал выхода превышает его заданную область, и временной шаг, в который происходит это нарушение.

Распространение диапазона сигнала для виртуальных блоков

Некоторые виртуальные блоки (см. Невиртуальные и Виртуальные блоки) позволяют вам задавать области значений для их выходных сигналов, например, Inport и Outport блоки. Когда Simulation range checking диагностика включена для модели, которая содержит такие блоки, диапазон сигнала виртуального блока распространяется назад к первому образцу невиртуального блока, выходной сигнал которого он получает. Если невиртуальный блок задает различные значения для своей собственной области значений, Simulink выполняет проверку диапазона сигнала с tightest возможной областью значений. То есть Simulink проверяет сигнал, используя большее минимальное значение и меньшее максимальное значение.

Для примера рассмотрим следующую модель:

В этой модели блок 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 может генерировать неожиданные предупреждения и ошибки.

Если тип nondouble имеет более высокую точность, рассмотрите округление предела проекта до следующего числа, наиболее удаленного от нуля, которое double может представлять. Например, предположим, что сигнал генерирует ошибку после того, как вы задаете максимальное значение 98.8847692348509014. В командной строке вычислите следующее число дальше всего от нуля, которое double может представлять.

format long
98.8847692348509014 + eps(98.8847692348509014)
ans =

  98.884769234850921

Используйте получившееся число, 98.884769234850921, для замены максимального значения.

Похожие темы