Синусоида

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

  • Библиотека:
  • Simulink / Источники

Описание

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

Примечание

Этот блок совпадает с Функциональным блоком Синусоиды, который появляется в библиотеке Math Operations. Если вы выбираете Use external signal для параметра Времени в блочном диалоговом окне, вы получаете Функциональный блок Синусоиды.

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

Блок вычисляет выходную форму волны.

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

В основанном на времени режиме значение параметра Частоты дискретизации определяет, действует ли блок в непрерывном режиме или дискретном режиме.

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

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

Для получения дополнительной информации см. Настройку времени выборки.

Блокируйте поведение в непрерывном режиме

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

Блокируйте поведение в дискретном режиме

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

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

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

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

грех (t +Δt) =sin (t) cos (Δt) +sin (Δt) cos (t) cos (t +Δt) =cos (t) cos (Δt) −sin (t) грех (Δt)

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

[грех (t +Δt) cos (t +Δt)] = [cos (Δt) грех (Δt) −sin (Δt) cos (Δt)] [грех (t) cos (t)]

Поскольку Δt является постоянным, следующее выражение является константой:

[cos (Δt) грех (Δt) −sin (Δt) cos (Δt)]

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

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

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

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

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

Вставьте блок Saturation, непосредственно нисходящий из блока Sine Wave.

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

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

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

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

  3. Установите частоту дискретизации сигнала часов к частоте дискретизации блока Sine Wave.

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

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

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

y=Asin ((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

Параметры

развернуть все

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

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

Блочный параметр: SineType
Ввод: символьный вектор
Значения: 'Время, базирующееся' | 'Базирующаяся выборка'
Значение по умолчанию: 'Time based'

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

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

Блочный параметр: TimeSource
Ввод: символьный вектор
Значения: 'Используйте время симуляции' |, 'Используют внешний сигнал'
Значение по умолчанию: 'Use simulation time'

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

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

Блочный параметр: Amplitude
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '1'

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

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

Блочный параметр: Bias
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

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

Зависимости

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

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

Блочный параметр: Frequence
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '1'

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

Вы не можете сконфигурировать этот параметр, чтобы появиться в сгенерированном коде как настраиваемая глобальная переменная, если вы устанавливаете Время (t) на Use simulation time. Например, если вы устанавливаете поведение параметра По умолчанию на Tunable или применяете класс памяти к объекту Simulink.Parameter, параметр Фазы не появляется в сгенерированном коде как настраиваемая глобальная переменная.

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

Зависимости

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

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

Блочный параметр: Phase
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

Задайте количество выборок на период.

Зависимости

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

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

Блочный параметр: Выборки
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '10'

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

Зависимости

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

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

Блочный параметр: Offset
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

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

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

Блочный параметр: 'SampleTime'
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

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

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

Блочный параметр: VectorParams1D
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'on'

Образцовые примеры

Блокируйте характеристики

Типы данных

'double'

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

Yes

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

No

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

No

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

No

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

Представлено до R2006a

Была ли эта тема полезной?