Sine Wave Function

Сгенерируйте синусоиду, используя внешний сигнал как источник времени

  • Библиотека:
  • Simulink/Математические операции

  • Sine Wave Function block

Описание

Блок Sine Wave Function выводит синусоидальную форму волны. Блок может работать в основанном на времени или основанном на выборке режиме.

Примечание

Этот блок аналогичен блоку Sine Wave, который появляется в библиотеке Математические операции. Если вы выбираете Use simulation time для параметра Time в диалоговом окне блока вы получаете блок Sine Wave Function.

Основанный на времени режим

Блок вычисляет выход сигнал.

y=amplitude×sin(frequency×time+phase)+bias.

В основанном на времени режиме значение параметра Sample time определяет, работает ли блок в непрерывном или дискретном режиме.

  • 0 (по умолчанию) заставляет блок работать в непрерывном режиме.

  • >0 заставляет блок работать в дискретном режиме.

Для получения дополнительной информации см. Раздел «Задание шага расчета».

Поведение блоков в непрерывном режиме

При работе в непрерывном режиме Sine Wave блок может стать неточным из-за потери точности, когда время становится очень большим.

Поведение блоков в дискретном режиме

Sample time значения параметров больше нуля заставляет блок вести себя так, как будто он управлял блоком Zero-Order Hold, шаг расчета которого задан это значение.

Таким образом, можно создавать модели с источниками синусоид, которые являются чисто дискретными, а не с моделями, которые являются гибридными непрерывными/дискретными системами. Гибридные системы по своей сути более комплексны и в результате требуется больше времени для моделирования.

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

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

sin(t+Δt)=sin(t)cos(Δt)+sin(Δt)cos(t)cos(t+Δt)=cos(t)cos(Δt)sin(t)sin(Δt)

В матричной форме эти тождества:

[sin(t+Δt)cos(t+Δt)]=[cos(Δt)sin(Δt)sin(Δt)cos(Δt)][sin(t)cos(t)]

Из-за того, что Β t является постоянным, следующее выражение является константой:

[cos(Δt)sin(Δt)sin(Δt)cos(Δt)]

Поэтому задача становится одним из матричного умножения значения sin(t) постоянной матрицей, чтобы получить sin(t+Δt).

Дискретный режим уменьшает, но не устраняет накопление ошибок округления, например (4*eps). Это накопление может произойти, потому что расчет выходного сигнала блока на каждом временном шаге зависит от значения выхода на предыдущем временном шаге.

Методы обработки ошибок округления в дискретном режиме

Чтобы обработать ошибки округления, когда Sine Wave block работает в дискретном режиме на основе времени, используйте один из этих методов.

МетодОбъяснение

Вставьте Saturation блок непосредственно после блока Sine Wave.

Путем установки пределов насыщения на выходе блока Sine Wave, можно удалить перерегулирование из-за накопления ошибок округления.

Настройте блок Sine Wave, чтобы использовать sin() функция математической библиотеки для вычисления выхода блоков.

  1. На диалоговое окно блока синусоидальной волны установите Time равным Use external signal так, чтобы на значке блока появился вход порт.

  2. Подключите синхросигнал к этому входному порту с помощью блока Digital Clock.

  3. Установите шаг расчета синхросигнала во шаг расчета блока Sine Wave.

The sin() Функция математической библиотеки вычисляет выход блоков в каждом временном шаге независимо от выхода значений из других временных шагов, предотвращая накопление округления ошибок.

Основанный на выборке режим

Основанный на выборке режим использует эту формулу, чтобы вычислить выход блока Sine Wave.

y=Asin(2π(k+o)/p)+b

  • A - амплитуда синусоиды.

  • p - количество выборок времени на период синусоиды.

  • k является повторяющимся целым числом значения, которое варьируется от 0 до p -1.

  • o - смещение (сдвиг фазы) сигнала.

  • b - смещение сигнала.

В этом режиме Simulink® устанавливает k равной 0 на первом временном шаге и вычисляет выход блока, используя формулу. На следующем временном шаге Simulink шагов k и пересчитывает выход блока. Когда k достигает p, Simulink сбрасывает k на 0 перед вычислением вывода блока. Этот процесс продолжается до конца симуляции.

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

Порты

Вход

расширить все

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

Типы данных: double

Выход

расширить все

Выходной сигнал, который является созданной синусоидой.

Типы данных: double

Параметры

расширить все

Укажите тип синусоиды, которые генерирует этот блок. Некоторые параметры в диалоговом окне появляются в зависимости от того, выбираете ли вы основанные на времени или основанные на выборке.

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

Параметры блоков: SineType
Тип: Вектор символов
Значения: 'Time based' | 'Sample based'
По умолчанию: 'Time based'

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

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

Параметры блоков: TimeSource
Тип: Вектор символов
Значения: 'Use simulation time' | 'Use external signal'
По умолчанию: 'Use external signal'

Задайте амплитуду выходного сигнала синусоиды.

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

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

Задайте постоянное значение, добавленное к синусоиду, чтобы получить выход.

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

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

Задайте частоту в радианах в секунду.

Зависимость

Чтобы включить этот параметр, установите Sine type равным Time based.

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

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

Задайте сдвиг фазы синусоиды.

Вы не можете сконфигурировать этот параметр, чтобы он появился в сгенерированном коде как настраиваемая глобальная переменная, если вы задаете Time (t) Use simulation time. Для примера, если вы задаете Default parameter behavior Tunable или применить класс памяти к Simulink.Parameter объект, параметр Phase не отображается в сгенерированном коде как настраиваемая глобальная переменная.

Чтобы сгенерировать код, чтобы можно было настроить фазу во время выполнения, установите Time (t) на Use external signal. Вы можете предоставить свой собственный входной сигнал времени или использовать блок Digital Clock, чтобы сгенерировать сигнал времени. Для получения примера смотрите Настройте Параметр Фазы Sine wave Блока во время Кода Выполнения (Simulink Coder).

Зависимости

Чтобы включить этот параметр, установите Sine type равным Time based.

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

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

Укажите количество выборок за период.

Зависимости

Чтобы включить этот параметр, установите Sine type равным Sample based.

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

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

Задайте смещение (дискретный сдвиг фазы) по количеству шагов расчета.

Зависимости

Чтобы включить этот параметр, установите Sine type равным Sample based.

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

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

Задайте период дискретизации в секундах. Значение по умолчанию является 0. Если тип синуса основан на выборке, шаг расчета должно быть больше 0. См. «Задание шага расчета».

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

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

Задайте выходные размерности, чтобы быть 1-D векторным сигналом, когда другие параметры являются матрицами с одной строкой и одним столбцом. Если вы не выбираете это поле, блок выводит сигнал той же размерности, что и числовые параметры. См. «Определение выходных размерностей исходных блоков». Этот параметр недоступен, когда внешний сигнал задает время. В этом случае, если числовые параметры являются значениями в матрице столбцов или строк, выход является 1-D вектором.

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

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

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

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

Типы данных

double

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

yes

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

no

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

no

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

no

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

.

См. также

|

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте