Выполните интегрирование дискретного времени или накопление сигнала
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 имеет прямое сквозное соединение.
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 сообщает об ошибке.
Предположим, что у вас есть подсистема вызова функций, которая включает активированную подсистему, которая содержит блок Discrete-Time Integrator. Следующее поведение применяется.
Метод интегратора | Тип шага расчета триггерного порта вызова функции | Значение delta T , когда подсистема вызова функций выполняется впервые после Enabled | Причина поведения |
---|---|---|---|
Передайте Эйлеру | Инициированный |
| Когда подсистема вызова функций выполняется впервые, алгоритм интегратора использует |
Обратный Эйлер и трапециевидный | Инициированный |
| Когда подсистема вызова функций выполняется впервые, алгоритм интегратора использует |
Передайте Эйлеру, обратному Эйлеру, и трапециевидный | Периодический | Шаг расчета генератора вызова функции | В периодическом режиме блок Discrete-Time Integrator использует шаг расчета генератора вызова функции для |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|