exponenta event banner

Синусоидальная волна

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

  • Библиотека:
  • Симулинк/источники

  • Sine Wave block

Описание

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

Примечание

Этот блок совпадает с блоком функции синусоидальной волны, который появляется в библиотеке математических операций. При выборе Use external signal для параметра Time (Время) в диалоговом окне block (Блок) получается блок Sine Wave Function (Синусоидальная функция).

Режим на основе времени

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

y = амплитуда × sin (частота × время + фаза) + смещение.

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

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

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

Дополнительные сведения см. в разделе Указание времени образца.

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

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

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

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

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

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

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

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). Это накопление может произойти, потому что вычисление блочного выходного сигнала на каждом временном шаге зависит от значения выходного сигнала на предыдущем временном шаге.

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

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

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

Вставьте блок насыщения непосредственно за блоком синусоидальной волны.

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

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

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

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

  3. Установите время выборки тактового сигнала на время выборки блока синусоидальной волны.

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

Режим на основе образцов

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

y = Асин ((k + o )/p) + b

  • А - амплитуда синусоидальной волны.

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

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

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

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

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

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

Порты

Продукция

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

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

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

Параметры

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

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

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

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

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

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

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

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

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

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

Укажите постоянное значение, добавляемое к синусу для получения выходных данных.

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

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

Укажите частоту в градусах/с.

Зависимости

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

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

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

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

Невозможно настроить отображение этого параметра в сгенерированном коде в качестве настраиваемой глобальной переменной, если для параметра Время (t) задано значение Use simulation time. Например, если для параметра Поведение по умолчанию (Default parameter behavior) задано значение Tunable или применить класс хранения к Simulink.Parameter , параметр Phase не отображается в сгенерированном коде как настраиваемая глобальная переменная.

Для создания кода, позволяющего настроить фазу во время выполнения, установите для параметра Time (t) значение Use external signal. Вы можете предоставить свой собственный входной сигнал времени или использовать блок цифровых часов для генерации сигнала времени. Пример см. в разделе Настройка параметра фазы синусоидального блока во время выполнения кода (Simulink Coder).

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

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

Типы данных

double

Прямой проход

yes

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

no

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

no

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

no

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

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