Discrete-Time Integrator

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

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

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

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

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

  • Discrete-Time Integrator block

Описание

Используйте блок 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 модель.

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

Можно работать вокруг этих проблем путем передачи состояния через порт состояния, а не выходной порт. 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 отличается от классического режима инициализации. Новое поведение инициализации более устойчиво и обеспечивает более сопоставимое поведение в этих случаях:

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

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

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

Упрощенный режим инициализации включает более легкое преобразование от блоков Continuous-Time Integrator до блоков 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 в блок подсистемы итератора.

В упрощенном режиме инициализации подсистемы Итератора не обеспечивают прошедшее время. Таким образом, если a 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 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

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

Зависимости

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

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

Вывод

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

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | 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 | int64 | uint8 | uint16 | uint32 | uint64 | 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 был выбран.

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

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

    y(0) = IC

    В сбросе:

    y(n) = IC

  • Compatibility — Эта опция присутствует, чтобы обеспечить обратную совместимость. Вы не можете выбрать эту опцию для блоков Discrete-Time Integrator в моделях Simulink, но можно выбрать ее для блоков Discrete-Time Integrator в библиотеке. Используйте эту опцию, чтобы обеспечить совместимость с моделями 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 (Fixed-Point Designer).

    • Чтобы задать ваше собственное правило наследования, используйте 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

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

Floor

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

Nearest

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

Round

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

Simplest

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

Zero

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

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

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

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

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

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

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

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

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

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

Совет

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

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации смотрите Настройку генерации кода C для Элементов Интерфейса модели (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'

Примеры модели

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

Типы данных

double | fixed point | integer | single

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

yes

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

no

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

no

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

no

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

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

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

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