Выполните интегрирование дискретного времени или накопление сигнала
Simulink / Обычно Используемые Блоки
Simulink / Дискретный
Используйте блок Discrete-Time Integrator вместо блока Integrator, чтобы создать чисто дискретную модель. С блоком Discrete-Time Integrator вы можете:
Задайте начальные условия на блочном диалоговом окне или, как введено к блоку
Задайте входное усиление (K) значение
Выведите блочное состояние
Задайте верхний и нижние пределы на интеграле
Сбросьте состояние с дополнительным входным параметром сброса
С первым временным шагом блок утверждает n = 0
, или с начальным выводом y(0) = IC
или с начальным состоянием x(0) = IC
, в зависимости от Начального условия, устанавливающего значение параметров.
Для данного шага 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)
. Блок использует эти шаги, чтобы вычислить вывод.
Если установка условия Начальной буквы параметра установлена в Output
или Auto
для инициированного и подсистем вызова функций:
Step 0: y(0) = IC (clipped if necessary) x(1) = y(0)
Если установка условия Начальной буквы параметра установлена в 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)
Если установка условия Начальной буквы параметра установлена в Output
или Auto
для инициированного и подсистем вызова функций:
Step 0: y(0) = IC (clipped if necessary) x(1) = y(0) + K*T/2*u(0)
Если установка условия Начальной буквы параметра установлена в 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
является переменной (например, полученный со времен инициирования), блок использует эти шаги, чтобы вычислить вывод.
Если установка условия Начальной буквы параметра установлена в Output
или Auto
для инициированного и подсистем вызова функций:
Step 0: y(0) = IC (clipped if necessary) x(1) = y(0)
Если установка условия Начальной буквы параметра установлена в 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)
Можно задать начальные условия в качестве параметра на блочном диалоговом окне или ввести их от внешнего сигнала:
Чтобы задать начальные условия как блочный параметр, установите Начальный исходный параметр условия на internal
и введите значение в Начальное текстовое поле условия.
Чтобы обеспечить начальные условия из внешнего источника, установите Начальный исходный параметр условия на external
. Дополнительный входной порт появляется на блоке.
Используйте порт состояния вместо выходного порта:
Когда вывод блока возвращен в блок через порт сброса или начальный порт условия, вызвав алгебраический цикл. Для примера смотрите модель sldemo_bounce_two_integrators
.
Когда это необходимо, чтобы передать состояние от одной условно выполняемой подсистемы до другого, который может вызвать проблемы синхронизации. Для примера смотрите модель sldemo_clutch
.
Можно работать вокруг этих проблем путем передачи состояния через порт состояния, а не выходной порт. Simulink генерирует состояние в немного отличающееся время от вывода, который защищает вашу модель от этих проблем. Чтобы вывести блочное состояние, установите флажок порта Состояния показа. Порт состояния появляется на верхней части блока.
Чтобы сохранить вывод в определенных уровнях, выберите Limit флажок вывода и введите пределы в соответствующее текстовое поле. Выполнение так заставляет блок функционировать как ограниченный интегратор. Когда вывод достигает пределов, интегральное действие выключает, чтобы предотвратить интегральное завершение. Во время моделирования можно изменить пределы, но вы не можете измениться, ограничивается ли вывод. Таблица показывает, как блок определяет вывод.
Интеграл | Вывод |
---|---|
Меньше чем или равный Более низкому пределу насыщенности и входному параметру отрицательно | Сохраненный в Более низком пределе насыщенности |
Между Более низким пределом насыщенности и Верхним пределом насыщенности | Интеграл |
Больше, чем или равный Верхнему пределу насыщенности и входному параметру положительно | Сохраненный в Верхнем пределе насыщенности |
Чтобы сгенерировать сигнал, который указывает, когда состояние ограничивается, установите флажок порта насыщенности Show. Новый порт насыщенности появляется ниже блочного выходного порта.
Сигнал насыщенности имеет одно из трех значений:
1 указывает, что верхний предел применяется.
0 указывает, что интеграл не ограничивается.
- 1 указывает, что нижний предел применяется.
Блок сбрасывает свое состояние к заданному начальному условию, на основе внешнего сигнала. Чтобы заставить блок сбрасывать свое состояние, выберите одну из Внешних опций параметра сброса. Порт сброса появляется, который указывает на триггерный тип сброса.
Порт сброса имеет прямое сквозное соединение. Если блок вывод возвращается в этот порт, или непосредственно или через серию блоков с прямым сквозным соединением, алгебраический цикл заканчивается. Чтобы разрешить этот цикл, подайте вывод блочного порта состояния в порт сброса вместо этого. Чтобы получить доступ к блочному состоянию, установите флажок порта Состояния показа.
Внешний параметр сброса позволяет вам решить, что атрибут сброса сигнализирует, что инициировал сброс. Триггерные опции включают:
rising
– Сбрасывает состояние, когда сигнал сброса имеет возрастающий край. Например, эти данные показывают эффект, что триггер сброса повышения имеет на обратном Эйлеровом интегрировании.
falling
— Сбрасывает состояние, когда сигнал сброса имеет падающий край. Например, эти данные показывают эффект, что триггер сброса падения имеет на обратном Эйлеровом интегрировании.
either
— Сбрасывает состояние, когда сброс сигнализирует о повышениях или падениях. Например, следующие данные показывают эффект, что любой триггер сброса имеет на обратном Эйлеровом интегрировании.
level
— Сброс и содержит вывод к начальному условию, в то время как сигнал сброса является ненулевым. Например, эти данные показывают эффект, что триггер сброса уровня имеет на обратном Эйлеровом интегрировании.
sampled level
— Сбрасывает вывод к начальному условию, когда сигнал сброса является ненулевым. Например, эти данные показывают эффект, что выбранный триггер сброса уровня имеет на обратном Эйлеровом интегрировании.
Опция сброса sampled level
требует меньшего количества вычислений, делая его более эффективным, чем опция сброса level
.
Для блока Discrete-Time Integrator все триггерные обнаружения основаны на сигналах с положительными значениями. Например, сигнал, изменяющийся от-1 до 0, не рассматривается возрастающим краем, но сигнал, изменяющийся от 0 до 1.
Упрощенный режим инициализации включен, когда вы устанавливаете обнаружение инициализации Underspecified на Simplified
в диалоговом окне Configuration Parameters. При использовании упрощенный режим инициализации, поведение блока Discrete-Time Integrator отличается от классического режима инициализации. Новое поведение инициализации более устойчиво и обеспечивает более сопоставимое поведение в этих случаях:
В алгебраических циклах
На включают и отключают
При сравнении результатов с помощью инициированной частоты дискретизации против явной частоты дискретизации, где блок инициирован на том же уровне как явная частота дискретизации
Упрощенный режим инициализации включает более легкое преобразование от Непрерывно-разовых блоков Интегратора до блоков Интегратора Дискретного времени, потому что начальные условия имеют то же значение для обоих блоков.
Для получения дополнительной информации о классических и упрощенных режимах инициализации смотрите обнаружение инициализации Underspecified.
То, когда вы используете упрощенный режим инициализации с Начальным набором установки условия к Output
для инициированного и подсистем вызова функций, разрешения и отключаете поведение блока, упрощено можно следующим образом.
В отключают время td
:
y(td) = y(td-1)
Во включают времени te
:
Если родительский порт управления подсистемы имеет состояния когда набор включения к reset
:
y(te) = IC.
Если родительский порт управления подсистемы имеет состояния когда набор включения к held
:
y(te) = y(td).
Следующие данные показывают это условие.
При использовании упрощенного режима инициализации вы не можете поместить блок Discrete-Time Integrator в блок подсистемы итератора.
В упрощенном режиме инициализации подсистемы Итератора не поддерживают прошедшее время. Таким образом, если блок Discrete-Time Integrator, которому требуется прошедшее время, помещается в блоке подсистемы итератора, Симулинк сообщает об ошибке.
Предположим, что у вас есть подсистема вызова функций, которая включает активированную подсистему, которая содержит блок Discrete-Time Integrator. Следующее поведение применяется.
Метод интегратора | Тип частоты дискретизации триггерного порта вызова функции | Значение delta T , когда подсистема вызова функций выполняется впервые после Enabled | Причина поведения |
---|---|---|---|
Передайте Эйлеру | Инициированный |
| Когда подсистема вызова функций выполняется впервые, алгоритм интегратора использует |
Обратный Эйлер и трапециевидный | Инициированный |
| Когда подсистема вызова функций выполняется впервые, алгоритм интегратора использует |
Передайте Эйлеру, обратному Эйлеру, и трапециевидный | Периодический | Частота дискретизации генератора вызова функции | В периодическом режиме блок Discrete-Time Integrator использует частоту дискретизации генератора вызова функции для |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|