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