Discrete-Time Integrator

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

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

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

    HDL-кодер/дискретный

    Операции HDL-кодера/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 является переменной

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

  • Если для 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 - Переводит выход в начальное условие, когда сигнал сброса ненулевой. Для примера этот рисунок показывает эффект, который дискретизированный триггер сброса уровня имеет на обратном интегрировании Эйлера.

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

    Примечание

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

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

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

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

  • Включить и отключить

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

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

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

Включите и отключите поведение с установленным начальным условием на Output

Когда вы используете упрощенный режим инициализации с 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 сообщает об ошибке.

Поведение в включенной подсистеме внутри подсистемы вызова функций

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

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

Форвардный Эйлер

Вызванный

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 minimum и Output maximum блоков.

Совет

Программное обеспечение 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. Это значение задает непрерывный шаг расчета, которое блок Интегратор Дискретного Времени не поддерживает.

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

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

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

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Совет

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

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

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

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

Более низкое значение выходной области значений, который Simulink проверяет.

Simulink использует минимум для выполнения:

Примечание

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

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

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

Верхнее значение выходной области значений, который Simulink проверяет.

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 отображает ошибку в Diagnostic Viewer.

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

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

    • Используйте простой выбор 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'

Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типа данных 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 или not. если выбран, программа генерирует ошибку во время выполнения, если вы задаете имя состояния, не совпадающее с именем объекта сигнала Simulink.

Зависимость

Активируется, когда вы задаете State name параметра значение и устанавливаете параметр конфигурации <reservedrangesplaceholder1> модели на значение, отличное от None.

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

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

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

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

Чтобы использовать пакет класса памяти, отличный от пакета Simulink, необходимо загрузить пакет в словарь Embedded Coder Dictionary модели. Смотрите Загрузку пакетов класса памяти в словарь встраиваемого кодера (Embedded Coder).

Для получения информации о конфигурировании данных моделей с помощью классов памяти смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Embedded Coder). Для получения дополнительной информации о пользовательских классах классов памяти раздел Организация данных в структуры в Сгенерированном коде (Embedded Coder).

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

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

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

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

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

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

Укажите классификатор типа хранилища, например const или volatile.

Примечание

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

Зависимости

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

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

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

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

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

Типы данных

double | fixed point | integer | single

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

yes

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

no

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

no

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

no

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

.

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

.

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

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