Интегратор дискретного времени

Выполните интегрирование дискретного времени или накопление сигнала

  • Библиотека:
  • Simulink / Обычно Используемые Блоки

    Simulink / Дискретный

    HDL Coder / Дискретный

    HDL Coder / Операции Плавающей точки HDL

Описание

Используйте блок Discrete-Time Integrator вместо блока Integrator, чтобы создать чисто дискретную модель. С блоком Discrete-Time Integrator вы можете:

  • Задайте начальные условия на диалоговом окне блока или, как введено к блоку

  • Задайте входное усиление (K) значение

  • Выведите состояние блока

  • Задайте верхний и нижние пределы на интеграле

  • Сбросьте состояние с дополнительным входом сброса

Выведите уравнения

С первым временным шагом, состояние блока n = 0, или с начальным выводом y(0) = IC или с начальным состоянием x(0) = IC, в зависимости от значения параметров Initial condition setting.

Для данного шага n > 0 со временем симуляции t(n) Simulink® обновляет вывод y(n) можно следующим образом:

  • Прямой Метод Эйлера:

    y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n-1)
  • Обратный Метод Эйлера:

    y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n)
  • Трапециевидный метод:

    y(n) = y(n-1) + K*[t(n)-t(n-1)]*[u(n)+u(n-1)]/2

Simulink автоматически выбирает реализацию пространства состояний этих выходных уравнений в зависимости от шага расчета блока, который может быть явным или инициирован. При использовании явного шага расчета t(n)-t(n-1) уменьшает до шага расчета T для всего n > 0.

Интегрирование и методы накопления

Этот блок может интегрировать или накопить сигнал с помощью прямого Эйлера, обратного Эйлера, или трапециевидного метода. Примите, что u является входом, y является вывод, и x является состоянием. Для данного шага n Simulink обновляет y(n) и x(n+1). В режиме интеграции T является шагом расчета блока (дельта T в случае инициированного шага расчета). В режиме накопления, T = 1. Шаг расчета блока определяет, когда вывод вычисляется, но не выходное значение. K является значением усиления. Значения отсекают согласно верхнему или нижним пределам.

Передайте метод Эйлера

Передайте Метод Эйлера (значение по умолчанию), также известное как прямое прямоугольное, или левое приближение

Программное обеспечение аппроксимирует 1/s как T/(z-1). Выражения для вывода блока на шаге n:

x(n+1) = x(n) + K*T*u(n)
y(n)   = x(n)

Блок использует эти шаги, чтобы вычислить вывод:

Step 0:          y(0)   = IC (clip if necessary)
                 x(1)   = y(0) + K*T*u(0)

Step 1:          y(1)   = x(1)
                 x(2)   = x(1) + K*T*u(1)

Step n:          y(n)   = x(n)
                 x(n+1) = x(n) + K*T*u(n) (clip if necessary)

Используя этот метод, входной порт 1 не имеет прямого сквозного соединения.

Обратный метод Эйлера

Обратный Метод Эйлера, также известный как обратное прямоугольное или правое приближение

Программное обеспечение аппроксимирует 1/s как T*z/(z-1). Получившееся выражение для вывода блока на шаге n

y(n) = y(n-1) + K*T*u(n).

Позвольте x(n) = y((n)-1). Блок использует эти шаги, чтобы вычислить вывод.

  • Если параметр Initial condition setting устанавливается на Output или Auto для инициированного и подсистем вызова функций:

    Step 0:          y(0) = IC (clipped if necessary)
                     x(1) = y(0)
  • Если параметр Initial condition setting устанавливается на Auto для неинициированных подсистем:

    Step 0:          x(0)   = IC (clipped if necessary)
                     x(1)   = y(0) = x(0) + K*T*u(0)
    
    Step 1:          y(1)   = x(1) + K*T*u(1)
                     x(2)   = y(1)
    
    Step n:          y(n)   = x(n) + K*T*u(n)
                     x(n+1) = y(n)

Используя этот метод, входной порт 1 имеет прямое сквозное соединение.

Трапециевидный метод

Для этого метода программное обеспечение аппроксимирует 1/s как T/2*(z+1)/(z-1).

Когда T фиксируется (равный периоду выборки), выражения, чтобы вычислить вывод:

x(n) = y(n-1) + K*T/2*u(n-1)
y(n) = x(n) + K*T/2*u(n)
  • Если параметр Initial condition setting устанавливается на Output или Auto для инициированного и подсистем вызова функций:

    Step 0:          y(0)   = IC (clipped if necessary)
                     x(1)   = y(0) + K*T/2*u(0)
  • Если параметр Initial condition setting устанавливается на Auto для неинициированных подсистем:

    Step 0:          x(0)   = IC (clipped if necessary)
                     y(0)   = x(0) + K*T/2*u(0)
                     x(1)   = y(0) + K*T/2*u(0)
    
    Step 1:          y(1)   = x(1) + K*T/2*u(1)
                     x(2)   = y(1) + K*T/2*u(1)
    
    Step n:          y(n)   = x(n) + K*T/2*u(n)
                     x(n+1) = y(n) + K*T/2*u(n)

Здесь, x(n+1) является наилучшей оценкой следующего вывода. Это не то же самое как состояние, в том, что x(n) не равен y(n).

Используя этот метод, входной порт 1 имеет прямое сквозное соединение.

Когда T является Переменная

WhenT является переменной (например, полученный со времен инициирования), блок использует эти шаги, чтобы вычислить вывод.

  • Если параметр Initial condition setting устанавливается на Output или Auto для инициированного и подсистем вызова функций:

    Step 0:          y(0)   = IC (clipped if necessary)
                     x(1)   = y(0)
  • Если параметр Initial condition setting устанавливается на Auto для неинициированных подсистем:

    Step 0:          x(0)   = IC (clipped if necessary)
                     x(1)   = y(0) = x(0) + K*T/2*u(0)
    
    Step 1:          y(1)   = x(1) + T/2*(u(1) + u(0))
                     x(2)   = y(1)
    
    Step n:          y(n)   = x(n) + T/2*(u(n) + u(n-1))
                     x(n+1) = y(n)

Задайте начальные условия

Можно задать начальные условия в качестве параметра на диалоговом окне блока или ввести их от внешнего сигнала:

  • Чтобы задать начальные условия как параметры блоков, установите параметр Initial condition source на internal и введите значение в текстовое поле Initial condition.

  • Чтобы обеспечить начальные условия из внешнего источника, установите параметр Initial condition source на external. Дополнительный входной порт появляется на блоке.

Когда использовать порт состояния

Используйте порт состояния вместо выходного порта:

  • Когда вывод блока возвращен в блок через порт сброса или начальный порт условия, вызвав алгебраический цикл. Для примера см. модель sldemo_bounce_two_integrators.

  • Когда это необходимо, чтобы передать состояние от одной условно выполняемой подсистемы до другого, который может вызвать проблемы синхронизации. Для примера см. модель sldemo_clutch.

Можно работать вокруг этих проблем путем передачи состояния через порт состояния, а не выходной порт. Simulink генерирует состояние в немного отличающееся время от вывода, который защищает вашу модель от этих проблем. Чтобы вывести состояние блока, установите флажок Show state port. Порт состояния появляется на верхней части блока.

Ограничьте интеграл

Чтобы сохранить вывод в определенных уровнях, установите флажок Limit output и введите пределы в соответствующее текстовое поле. Выполнение так заставляет блок функционировать как ограниченный интегратор. Когда вывод достигает пределов, интегральное действие выключает, чтобы предотвратить интегральное завершение. Во время симуляции можно изменить пределы, но вы не можете измениться, ограничивается ли вывод. Таблица показывает, как блок определяет вывод.

ИнтегралВывод
Меньше чем или равный Lower saturation limit и входу отрицательно Сохраненный в Lower saturation limit
Между Lower saturation limit и Upper saturation limit Интеграл
Больше, чем или равный Upper saturation limit и входу положительно Сохраненный в Upper saturation limit

Чтобы сгенерировать сигнал, который указывает, когда состояние ограничивается, установите флажок Show saturation port. Новый порт насыщения появляется ниже выходного порта блока.

Сигнал насыщения имеет одно из трех значений:

  • 1 указывает, что верхний предел применяется.

  • 0 указывает, что интеграл не ограничивается.

  • - 1 указывает, что нижний предел применяется.

Сбросьте состояние

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

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

Сбросьте триггерные типы

Параметр External reset позволяет вам решить, что атрибут сброса сигнализирует, что инициировал сброс. Триггерные опции включают:

  • rising – Сбрасывает состояние, когда сигнал сброса имеет возрастающее ребро. Например, эти данные показывают эффект, что триггер сброса повышения имеет на обратном Эйлеровом интегрировании.

  • falling — Сбрасывает состояние, когда сигнал сброса имеет падающее ребро. Например, эти данные показывают эффект, что триггер сброса падения имеет на обратном Эйлеровом интегрировании.

  • either — Сбрасывает состояние, когда сброс сигнализирует о повышениях или падениях. Например, следующие данные показывают эффект, что любой триггер сброса имеет на обратном Эйлеровом интегрировании.

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

  • sampled level — Сбрасывает вывод к начальному условию, когда сигнал сброса является ненулевым. Например, эти данные показывают эффект, что выбранный триггер сброса уровня имеет на обратном Эйлеровом интегрировании.

    Опция сброса sampled level требует меньшего количества вычислений, делая его более эффективным, чем опция сброса level.

    Примечание

    Для блока Discrete-Time Integrator все триггерные обнаружения основаны на сигналах с положительными значениями. Например, сигнал, изменяющийся от-1 до 0, не рассматривается возрастающим ребром, но сигнал, изменяющийся от 0 до 1.

Поведение в упрощенном режиме инициализации

Упрощенный режим инициализации включен, когда вы устанавливаете Underspecified initialization detection на Simplified в диалоговом окне Configuration Parameters. Если вы используете упрощенный режим инициализации, поведение блока Discrete-Time Integrator отличается от классического режима инициализации. Новое поведение инициализации более устойчиво и обеспечивает более сопоставимое поведение в этих случаях:

  • В алгебраических циклах

  • На включают и отключают

  • При сравнении результатов с помощью инициированного шага расчета против явного шага расчета, где блок инициирован на том же уровне как явный шаг расчета

Упрощенный режим инициализации включает более легкое преобразование от Непрерывно-разовых блоков Интегратора до блоков Интегратора Дискретного времени, потому что начальные условия имеют то же значение для обоих блоков.

Для получения дополнительной информации о классических и упрощенных режимах инициализации смотрите обнаружение инициализации Underspecified.

Включите и Отключите Поведение с Начальным набором Установки Условия, чтобы Вывести

То, когда вы используете упрощенный режим инициализации с набором Initial condition setting к Output для инициированного и подсистем вызова функций, разрешения и отключаете поведение блока, упрощено можно следующим образом.

В отключают время td:

 y(td) = y(td-1)

Во включают времени te:

  • Если родительскому порту управления подсистемы установили States when enabling на reset:

    y(te) = IC.
  • Если родительскому порту управления подсистемы установили States when enabling на held:

    y(te) = y(td).

    Следующие данные показывают это условие.

Подсистемы итератора

При использовании упрощенного режима инициализации вы не можете поместить блок Discrete-Time Integrator в блок подсистемы итератора.

В упрощенном режиме инициализации подсистемы Итератора не поддерживают прошедшее время. Таким образом, если блок Discrete-Time Integrator, которому требуется прошедшее время, помещается в блоке подсистемы итератора, Simulink сообщает об ошибке.

Поведение в Enabled подсистеме в подсистеме вызова функций

Предположим, что у вас есть подсистема вызова функций, которая включает активированную подсистему, которая содержит блок Discrete-Time Integrator. Следующее поведение применяется.

Метод интегратораТип шага расчета триггерного порта вызова функции Значение delta T, когда подсистема вызова функций выполняется впервые после Enabled Причина поведения

Передайте Эйлеру

Инициированный

t — tstart

Когда подсистема вызова функций выполняется впервые, алгоритм интегратора использует tstart в качестве предыдущего времени симуляции.

Обратный Эйлер и трапециевидный

Инициированный

t — tprevious

Когда подсистема вызова функций выполняется впервые, алгоритм интегратора использует tprevious в качестве предыдущего времени симуляции.

Передайте Эйлеру, обратному Эйлеру, и трапециевидный

Периодический

Шаг расчета генератора вызова функции

В периодическом режиме блок Discrete-Time Integrator использует шаг расчета генератора вызова функции для delta T.

Порты

Входной параметр

развернуть все

Входной сигнал, заданный как скаляр, вектор или матрица

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Начальные условия состояний, заданных как конечный скаляр, вектор или матрица.

Зависимости

Чтобы включить этот порт, установите Initial condition source на external.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Вывод

развернуть все

Интегрирование дискретного времени или накопление входного сигнала, заданного как скаляр, вектор или матрица.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Сигнал, указывающий, когда состояние ограничивается, задал как скаляр, вектор или матрица. Сигнал имеет одно из трех значений:

  • 1 указывает, что верхний предел применяется.

  • 0 указывает, что интеграл не ограничивается.

  • -1 указывает, что нижний предел применяется.

Зависимости

Чтобы включить этот порт, установите флажок Show saturation port.

Типы данных: single | double | int8

Состояния блока, вывод как скаляр, вектор или матрица. По умолчанию блок добавляет этот порт в верхнюю часть значка блока. Используйте порт состояния когда:

  • Вывод блока возвращен в блок через порт сброса или начальный порт условия, вызвав алгебраический цикл. Для примера см. модель sldemo_bounce_two_integrators.

  • Вы хотите передать состояние от одной условно выполняемой подсистемы до другого, который может вызвать проблемы синхронизации. Для примера см. модель sldemo_clutch.

Для получения дополнительной информации смотрите, Когда Использовать Порт состояния.

Зависимости

Чтобы включить этот порт, установите флажок Show state port.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Параметры

развернуть все

Основной

Задайте метод интегрирования или накопления. Смотрите Выходные уравнения и Методы Интегрирования и Накопления для получения дополнительной информации.

Программируемое использование

Параметры блоков: IntegratorMethod
Ввод: символьный вектор
Значения: 'Integration: Forward Euler' | 'Integration: Backward Euler' | 'Integration: Trapezoidal' | 'Accumulation: Forward Euler' | 'Accumulation: Backward Euler' | 'Accumulation: Trapezoidal'
Значение по умолчанию: 'Integration: Forward Euler'

Задайте скаляр, вектор или матрицу, на которую можно умножить вход интегратора. Каждый элемент усиления должен быть положительным вещественным числом.

  • Определение значения кроме 1,0 (значение по умолчанию) семантически эквивалентно соединению блока Gain к входу интегратора.

  • Действительные доступы включают:

    • double(1.0)

    • single(1.0)

    • [1.1 2.2 3.3 4.4]

    • [1.1 2.2; 3.3 4.4]

Совет

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

Программируемое использование

Параметры блоков: gainval
Ввод: символьный вектор
Значения: скаляр | вектор
Значение по умолчанию: '1.0'

Выберите тип триггерного события, которое сбрасывает состояния к их начальным условиям:

  • 'none' Не сбрасывайте состояние к начальным условиям.

  • rising — Сбросьте состояние, когда сигнал сброса будет иметь возрастающее ребро.

  • falling — Сбросьте состояние, когда сигнал сброса будет иметь падающее ребро.

  • either — Сбросьте состояние, когда сброс будет сигнализировать о повышениях или падениях.

  • level — Сбросьте и содержите вывод к начальному условию, в то время как сигнал сброса является ненулевым.

  • sampled level — Сбросьте вывод к начальному условию, когда сигнал сброса будет ненулевым.

Для получения дополнительной информации смотрите Сброс состояние и Триггерные Типы Сброса.

Программируемое использование

Параметры блоков: ExternalReset
Ввод: символьный вектор
Значения: 'none' | 'rising' | 'falling' | 'either' | 'level' | 'sampled level'
Значение по умолчанию: 'none'

Выберите источник начального условия:

  • internal — Получите начальные условия состояний от параметров блоков Initial condition.

  • external — Получите начальные условия состояний от внешнего блока через входной порт IC.

Зависимости

Выбор internal включает параметр Initial condition.

Выбор external отключает параметр Initial condition и включает входной порт IC.

Программируемое использование

Параметры блоков: InitialConditionSource
Ввод: вектор символов, строка
Значения: 'internal' | 'external'
Значение по умолчанию: 'internal'

Задайте начальное условие состояний блока. Минимальные и максимальные значения связаны параметрами блоков Output maximum и Output minimum.

Совет

Программное обеспечение Simulink не позволяет начальному условию этого блока быть inf или NaN.

Зависимости

Чтобы включить этот параметр, установите Initial condition source на internal.

Программируемое использование

Параметры блоков: InitialCondition
Ввод: вектор символов, строка
Значения: скаляр | вектор | матрица
Значение по умолчанию: '0'

Выберите, применить ли значение параметра Initial condition к состоянию блока или блоку вывод. Начальное условие является также значением сброса.

  • 'auto' Блок выбирает, где применить параметр Initial condition.

    • Если блок находится в неинициированной подсистеме, и Integrator method установлен в метод интегрирования, установите начальные условия:

      x(0) = IC

      В сбросе:

      x(n) = IC

    • Если блок находится в инициированном или подсистеме вызова функций, и Integrator method установлен в метод интегрирования, установите начальные условия, как будто output был выбран.

  • Вывод Используйте эту опцию, когда блок находится в инициированном или подсистеме вызова функций, и Integrator method установлен в метод интегрирования.

    Установленные начальные условия:

    y(0) = IC

    В сбросе:

    y(n) = IC

  • Compatibility — Эта опция присутствует, чтобы обеспечить обратную совместимость. Вы не можете выбрать эту опцию для блоков Интегратора Дискретного времени в моделях Simulink, но можно выбрать ее для блоков Интегратора Дискретного времени в библиотеке. Используйте эту опцию, чтобы поддержать совместимость с моделями Simulink, созданными перед R2014a.

    До R2014a опция Auto был известен как State only (most efficient). Опция Output была известна как State and output. Поведение блока с опцией Compatibility следующие.

    • Если Underspecified initialization detection установлен в Classic, параметр Initial condition setting ведет себя как Auto.

    • Если Underspecified initialization detection установлен в Simplified, параметр Initial condition setting ведет себя как Output.

Примечание

Этот параметр назвали Use initial condition as initial and reset value for в Simulink перед R2014a.

Программируемое использование

Параметры блоков: InitialConditionSetting
Ввод: символьный вектор
Значение: 'Auto' | 'Output' | 'Compatibility'
Значение по умолчанию: 'Auto'

Введите интервал дискретного времени между шагами.

По умолчанию блок использует дискретный шаг расчета 1. Чтобы установить различный шаг расчета, введите другое дискретное значение, такой как 0,1.

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

Советы

  • Не задавайте шаг расчета 0. Это значение задает время непрерывной выборки, которое не поддерживает блок Discrete-Time Integrator.

  • Не задавайте шаг расчета inf или NaN, потому что эти значения не дискретны.

  • Если вы задаете-1, чтобы наследовать шаг расчета от восходящего блока, проверить, что восходящий блок использует дискретный шаг расчета. Например, блок Discrete-Time Integrator не может наследовать шаг расчета 0.

Программируемое использование

Параметры блоков: SampleTime
Ввод: символьный вектор
Значения: скаляр | вектор
Значение по умолчанию: '-1'

Ограничьте вывод блока значением между Более низким пределом насыщения и Верхними предельными параметрами насыщения.

  • Выбор этого флажка ограничивает вывод блока значением между Более низким пределом насыщения и Верхними предельными параметрами насыщения.

  • Снятие этого флажка не ограничивает выходные значения блока.

Зависимости

Выбор этого параметра включает параметры Upper saturation limit и Lower saturation limit.

Программируемое использование

Параметры блоков: LimitOutput
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Задайте верхний предел для интеграла как скаляр, вектор или матрица. Необходимо задать значение между значениями параметров Output maximum и Output minimum.

Зависимости

Чтобы включить этот параметр, установите флажок Limit output.

Программируемое использование

Параметры блоков: UpperSaturationLimit
Ввод: вектор символов, строка
Значения: скаляр | вектор | матрица
Значение по умолчанию: 'inf'

Задайте нижний предел для интеграла как скаляр, вектор или матрица. Необходимо задать значение между значениями параметров Output maximum и Output minimum.

Зависимости

Чтобы включить этот параметр, установите флажок Limit output.

Программируемое использование

Параметры блоков: LowerSaturationLimit
Ввод: вектор символов, строка
Значения: скаляр | вектор | матрица
Значение по умолчанию: '-inf'

Установите этот флажок, чтобы добавить выходной порт насыщения в блок. Когда вы снимаете этот флажок, блок не имеет выходного порта насыщения.

Зависимости

Выбор этого параметра включает выходной порт насыщения.

Программируемое использование

Параметры блоков: ShowSaturationPort
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Установите этот флажок, чтобы добавить выходной порт состояния в блок. Когда вы снимаете этот флажок, блок не имеет выходного порта состояния.

Зависимости

Выбор этого параметра включает выходной порт состояния.

Программируемое использование

Параметры блоков: ShowStatePort
Ввод: вектор символов, строка
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Установите этот флажок, чтобы иметь команды линеаризации Simulink, обрабатывают этот блок как не восстановленный и как имеющий пределы на его выводе, независимо от настроек сброса блока и выводят опции ограничения.

Совет

Игнорирование предела и сброса позволяет вам линеаризовать модель вокруг рабочей точки. Эта точка может заставить интегратор сбрасывать или насыщать.

Программируемое использование

Параметры блоков: IgnoreLimit
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Атрибуты сигнала

Нижнее значение выходной области значений это Simulink Check.

Simulink использует минимум, чтобы выполнить:

Примечание

Output minimum не насыщает или отсекает фактический выходной сигнал. Используйте блок Saturation вместо этого.

Программируемое использование

Параметры блоков: OutMin
Ввод: символьный вектор
Значения: '[ ]' | скаляр
Значение по умолчанию: '[ ]'

Верхнее значение выходной области значений это Simulink Check.

Simulink использует максимальное значение, чтобы выполнить:

Примечание

Output maximum не насыщает или отсекает фактический выходной сигнал. Используйте блок Saturation вместо этого.

Программируемое использование

Параметры блоков: OutMax
Ввод: символьный вектор
Значения: '[ ]' | скаляр
Значение по умолчанию: '[ ]'

Выберите тип данных для вывода. Тип может быть наследован, задан непосредственно или выражен как объект типа данных, такой как Simulink.NumericType. Для получения дополнительной информации смотрите Типы данных Управляющего сигнала.

Когда вы выбираете наследованную опцию, блок ведет себя можно следующим образом:

  • Inherit: Inherit via internal rule — Simulink выбирает тип данных, чтобы сбалансировать числовую точность, производительность и размер сгенерированного кода, при принятии во внимание свойств оборудования целевого процессора. Если вы изменяете настройки целевого процессора, тип данных, выбранный внутренним правилом, может измениться. Например, если блок умножает вход типа, int8 усилением int16 и ASIC/FPGA задан как целенаправленный тип оборудования, типом выходных данных является sfix24. Если Unspecified (assume 32-bit Generic), т.е. типичный 32-битный микропроцессор, задан как целевой компьютер, типом выходных данных является int32. Если ни один из размеров слова, обеспеченных целевым микропроцессором, не может разместить выходную область значений, программное обеспечение Simulink отображает ошибку в Диагностическом Средстве просмотра.

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

    • Задайте тип выходных данных явным образом.

    • Используйте простой выбор Inherit: Same as input.

    • Явным образом задайте тип данных по умолчанию, такой как fixdt(1,32,16) и затем используйте Fixed-Point Tool, чтобы предложить типы данных для вашей модели. Для получения дополнительной информации смотрите fxptdlg.

    • Чтобы задать ваше собственное правило наследования, используйте Inherit: Inherit via back propagation и затем используйте блок Data Type Propagation. Примеры того, как использовать этот блок, доступны в библиотеке Signal Attributes блок Data Type Propagation Examples.

  • Inherit: Inherit via back propagation — Используйте тип данных ведущего блока.

Программируемое использование

Параметры блоков: OutDataTypeStr
Ввод: символьный вектор
Значения: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
Значение по умолчанию: 'Inherit: Inherit via internal rule'

Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили тип данных Output, который вы задаете на блоке. Для получения дополнительной информации смотрите, что Тип Выходных данных Блокировки Использования Устанавливает (Fixed-Point Designer).

Программируемое использование

Параметры блоков: LockScale
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Выберите один из этих режимов округления.

Ceiling

Раунды и положительные и отрицательные числа к положительной бесконечности. Эквивалентный функции MATLAB® ceil.

Convergent

Номер раундов к самому близкому представимому значению. Если связь происходит, раунды к самому близкому даже целое число. Эквивалентный функции convergent Fixed-Point Designer™.

Floor

Раунды и положительные и отрицательные числа к отрицательной бесконечности. Эквивалентный функции floor MATLAB.

Nearest

Номер раундов к самому близкому представимому значению. Если связь происходит, раунды к положительной бесконечности. Эквивалентный Fixed-Point Designer функция nearest.

Round

Номер раундов к самому близкому представимому значению. Если связь происходит, округляет положительные числа к положительной бесконечности и округляет отрицательные числа к отрицательной бесконечности. Эквивалентный Fixed-Point Designer функция round.

Simplest

Автоматически выбирает между раундом к полу и вокруг к нулю, чтобы сгенерировать округление кода, который максимально эффективен.

Zero

Номер раундов к нулю. Эквивалентный функции fix MATLAB.

Программируемое использование

Параметры блоков: RndMeth
Ввод: символьный вектор
Значения: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
Значение по умолчанию: 'Floor'

Смотрите также

Для получения дополнительной информации смотрите Округление (Fixed-Point Designer).

Задайте, насыщает ли переполнение или переносится.

  • 'off' Переполнение переносится к соответствующему значению, которое может представлять тип данных.

    Например, номер 130 не помещается в 8-битное целое число со знаком и переносится к-126.

  • on — Переполнение насыщает или к минимальному или к максимальному значению, которое может представлять тип данных.

    Например, переполнение, сопоставленное с 8-битным целым числом со знаком, может насыщать к-128 или 127.

Совет

  • Рассмотрите установку этого флажка, когда ваша модель имеет возможное переполнение, и вы хотите явную защиту насыщения в сгенерированном коде.

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

    Снятие этого флажка также помогает вам постараться не чрезмерно определять, как блок обрабатывает сигналы из области значений. Для получения дополнительной информации смотрите Проверку на Ошибки Диапазона сигнала.

  • Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, не только выводу или результату.

  • В целом процесс генерации кода может обнаружить, когда переполнение не возможно. В этом случае генератор кода не производит код насыщения.

Программируемое использование

Параметры блоков: SaturateOnIntegerOverflow
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Атрибуты состояния

Используйте этот параметр, чтобы присвоить уникальное имя состоянию блока. Значением по умолчанию является ' '. Когда это поле является пробелом, никакое имя не присвоено. При использовании этого параметра помните эти факторы:

  • Допустимый идентификатор запускается с буквенного символа или символа подчеркивания, сопровождаемого алфавитно-цифровыми символами или символами подчеркивания.

  • Имя состояния применяется только к выбранному блоку.

Для получения дополнительной информации смотрите, Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Simulink Coder).

Зависимости

Когда вы задаете значение для State name и нажимаете Apply, вы включаете параметр State name must resolve to Simulink signal object.

Программируемое использование

Параметр: StateName
Ввод: символьный вектор
Значения: уникальное имя
Значение по умолчанию: ''

Задайте при требовании, чтобы имя состояния решило к объектам Сигнала Simulink или нет. Если выбрано, программное обеспечение генерирует ошибку во время выполнения, если вы задаете имя состояния, которое не совпадает с именем объекта Сигнала Simulink.

Зависимость

Enabled, когда вы даете параметру State name значение и устанавливаете образцовый параметр конфигурации Signal resolution на значение кроме None.

Установка этого флажка отключает Code generation storage class.

Программируемое использование

Параметры блоков: StateMustResolveToSignalObject
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Выберите пользовательский пакет класса памяти путем выбора класса объекта сигнала, который задает целевой пакет. Например, чтобы применить пользовательские классы памяти от встроенного пакета mpt, выберите mpt.Signal. Если вы не используете основанную на ERT цель генерации кода с Embedded Coder®, пользовательские классы памяти не влияют на сгенерированный код.

Если класс, который вы хотите, не появляется в списке, выберите Customize class lists. Для инструкций смотрите, что Целевой Класс Не Появляется в Списке Классов объектов Сигнала (Embedded Coder).

Для получения информации о классах памяти смотрите, Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Simulink Coder). Для получения информации о пользовательских классах памяти смотрите, Применяют Пользовательские Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Embedded Coder).

Программируемое использование

Параметры блоков: StateSignalObject
Ввод: символьный вектор
Значения: 'Simulink.Signal' | '<StorageClass.PackageName>'
Значение по умолчанию: 'Simulink.Signal'

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

Для получения дополнительной информации смотрите, Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Simulink Coder) и Применяют Пользовательские Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Embedded Coder).

Программируемое использование

Параметры блоков: StateStorageClass
Ввод: символьный вектор
Значения: 'Auto' | 'Model default' | 'ExportedGlobal'' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom'
Значение по умолчанию: 'Auto'

Задайте спецификатор типа хранения, такой как const или volatile.

Примечание

TypeQualifier будет удален в будущем релизе. Чтобы применить спецификаторы типа хранения к данным, используйте разделы custom storage classes и memory. Если вы не используете основанную на ERT цель генерации кода с Embedded Coder, разделы custom storage classes и memory не влияют на сгенерированный код.

Зависимости

Чтобы включить этот параметр, установите Code generation storage class на ExportedGlobal, ImportedExtern, ImportedExternPointer или Model default. Этот параметр скрыт, если вы ранее не устанавливаете его значение.

Программируемое использование

Параметры блоков: RTWStateStorageTypeQualifier
Ввод: символьный вектор
Values:'' | 'const' | 'volatile' | ...
Значение по умолчанию: ''

Образцовые примеры

Характеристики блока

Типы данных

double | fixed point | integer | single

Прямое сквозное соединение

yes

Многомерные сигналы

no

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

Расширенные возможности

Генерация кода PLC
Сгенерируйте код Структурированного текста с помощью Simulink® PLC Coder™.

Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Fixed-Point Designer™.

Представлено до R2006a