Выполнить дискретно-временную интеграцию или накопление сигнала
Simulink/Часто используемые блоки
Симулинк/дискретный
Кодер HDL/дискретный
Кодер HDL/Операции с плавающей точкой HDL
Используйте блок интегратора дискретного времени вместо блока интегратора для создания чисто дискретной модели. Блок интегратора дискретного времени позволяет:
Определение начальных условий в диалоговом окне блока или в качестве входных данных блока
Определение значения входного коэффициента усиления (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 установлено значение Output или Auto для инициируемых подсистем и подсистем функционального вызова:
Step 0: y(0) = IC (clipped if necessary)
x(1) = y(0) + K*T/2*u(0)Если для параметра Initial condition установлено значение 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 является переменной (например, полученной из времени запуска), блок использует эти шаги для вычисления выходного сигнала.
Если параметр 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 source значение external. На блоке появится дополнительный входной порт.

Вместо выходного порта используйте порт состояния:
Когда выходной сигнал блока подается обратно в блок через порт сброса или порт начального условия, вызывая алгебраический цикл. Пример см. в разделе sldemo_bounce_two_integrators модель.
При необходимости передачи состояния из одной условно выполняемой подсистемы в другую, что может вызвать проблемы синхронизации. Пример см. в разделе Построение модели блокировки сцепления.
Можно обойти эти проблемы, передав состояние через порт состояния, а не порт вывода. Simulink генерирует состояние в несколько отличное от выходного, что защищает модель от этих проблем. Чтобы вывести состояние блока, установите флажок Показать порт состояния. В верхней части блока появится порт состояния.

Чтобы сохранить вывод в пределах определенных уровней, установите флажок Предельный вывод (Limit output) и введите предельные значения в соответствующее текстовое поле. Это приводит к тому, что блок функционирует как ограниченный интегратор. Когда выход достигает предельных значений, интегральное действие выключается для предотвращения интегрального витка. Во время моделирования можно изменить пределы, но нельзя изменить, ограничен ли вывод. В таблице показано, как блок определяет вывод.
| Интеграл | Продукция |
|---|---|
| Меньше или равно Нижнему пределу насыщения и вход отрицательный | Удерживается на нижнем пределе насыщения |
| Между нижним пределом насыщения и верхним пределом насыщения | Интеграл |
| Больше или равно верхнему пределу насыщения, и вход положительный | Удерживается на верхнем пределе насыщения |
Чтобы сгенерировать сигнал, указывающий, когда состояние ограничено, установите флажок Показать порт насыщения. Под выходным портом блока появляется новый порт насыщения.

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

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

falling - сбрасывает состояние, когда сигнал сброса имеет задний фронт. Например, на этом рисунке показано влияние падающего триггера сброса на обратную интеграцию Euler.

either - Сброс состояния при повышении или падении сигнала сброса. Например, на следующем рисунке показано влияние триггера сброса на обратную интеграцию Euler.

level - сбрасывает и удерживает выходной сигнал в исходном состоянии, в то время как сигнал сброса ненулевой. Например, на этом рисунке показано влияние триггера сброса уровня на обратную интеграцию Euler.

sampled level - сбрасывает выходной сигнал в исходное состояние, когда сигнал сброса ненулевой. Например, на этом рисунке показано влияние выборочного триггера сброса уровня на обратную интеграцию Euler.

sampled level опция сброса требует меньшего количества вычислений, что делает ее более эффективной, чем level опция сброса.
Примечание
Для блока интегратора дискретного времени все обнаружения триггеров основаны на сигналах с положительными значениями. Например, сигнал, изменяющийся от -1 до 0, не считается передним фронтом, а сигнал, изменяющийся от 0 до 1, является.
Упрощенный режим инициализации включен, если для параметра Обнаружение недозаданной инициализации задано значение Simplified в диалоговом окне «Параметры конфигурации». При использовании упрощенного режима инициализации поведение блока дискретного интегратора времени отличается от классического режима инициализации. Новое поведение инициализации является более надежным и обеспечивает более согласованное поведение в следующих случаях:
В алгебраических петлях
При включении и отключении
При сравнении результатов с использованием времени инициированной выборки с явным временем выборки, когда блок запускается с той же скоростью, что и явное время выборки.
Упрощенный режим инициализации упрощает преобразование блоков интегратора непрерывного времени в блоки интегратора дискретного времени, поскольку исходные условия имеют одинаковое значение для обоих блоков.
Дополнительные сведения о классическом и упрощенном режимах инициализации см. в разделе Обнаружение неполной инициализации.
При использовании упрощенного режима инициализации с параметром Initial condition (Начальное условие) Output для триггерных подсистем и подсистем функционального вызова режим включения и отключения блока упрощается следующим образом.
Во время отключения td:
y(td) = y(td-1)
Во время включения te:
Если порт управления родительской подсистемой имеет состояния при активизации set reset:
y(te) = IC.
Если порт управления родительской подсистемой имеет состояния при активизации set held:
y(te) = y(td).
На следующем рисунке показано это состояние.

При использовании упрощенного режима инициализации нельзя поместить блок интегратора дискретного времени в блок подсистемы итератора.
В упрощенном режиме инициализации подсистемы итератора не поддерживают истекшее время. Таким образом, если блок интегратора дискретного времени, которому требуется прошедшее время, помещен в блок подсистемы итератора, Simulink сообщает об ошибке.
Предположим, что имеется подсистема функционального вызова, включающая включенную подсистему, которая содержит блок интегратора дискретного времени. Применяется следующее поведение.
| Метод интегратора | Тип времени выборки порта триггера вызова функции | Значение delta T Когда подсистема Function-Call выполняется впервые после включения | Причина поведения |
|---|---|---|---|
Форвард Эйлер | Вызванный |
| Когда подсистема вызова функции выполняется впервые, алгоритм интегратора использует |
Обратный эйлер и трапециевидный | Вызванный |
| Когда подсистема вызова функции выполняется впервые, алгоритм интегратора использует |
Форвард Эйлер, Задний Эйлер и Трапециевидная | Периодический | Время выборки генератора вызова функции | В периодическом режиме блок интегратора дискретного времени использует время выборки генератора вызова функции для |
Типы данных |
|
Прямой проход |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулей |
|