В процессе моделировании переходных процессов в Matlab/Simulink (с библиотекой SimPowerSystems) возникает необходимость в определении взаимного угла между двумя наблюдаемыми векторами (например, угол между током и напряжением или угол между двумя напряжениями). Следует отметить, что взаимным углом между двумя векторами, отложенными от одной точки, называется кратчайший угол, на который нужно повернуть один из векторов вокруг своего начала до положения второго вектора.
В статье представлены два способа моделирования отдельных пользовательских блок-элементов расчетной схемы для определения взаимного угла между двумя наблюдаемыми аналоговыми сигналами.
Рис.1. Взаимный угол между векторами
Способ №1. Определение взаимного угла из разности значений собственных углов векторов
Самым простым способом определить взаимный угол между двумя векторами является метод основанный на вычислении разности значений собственного угла первого и второго вектора:
где - собственный угол первого и второго вектора
В случае если полученное значение взаимного угла отрицательное , то второй вектор отстает от первого вектора, если полученное значение взаимного угла положительное , то второй вектор опережает первый вектор.
Следует отметить, что полученный угол имеет область значений, которая ограничивается «плавающим» интервалом с периодом изменения сигнала (в качестве примера, угол может меняться в диапазоне от -150 градусов до +220 градусов). Для решения данной проблемы необходимо дополнительно добавить два условия, которые изменяют переменную при достижении границ диапазона :
Если , то ;
Если , то .
Описанный выше алгоритм легко реализуется в программном обеспечении Matlab/Simulink.
Рис.2. Реализация в программном обеспечении Matlab/Simulink
Для преобразования аналогового сигнала в вектор используется блок «Fourier», который из периодического сигнала определяет амплитуду и фазу. В качестве блока, который позволяет выбрать необходимое значение взаимного угла используется ключ «Switch» на вход которого поступает логический сигнал «0» или «1». В зависимости от поступающего логического сигнала выбирается одно из двух значений взаимного угла.
В результате получена первая модель определения взаимного угла между аналоговыми сигналами в Matlab/Simulink область значений которой определена на интервале .
Способ №2 Определение взаимного угла из выражения для определения скалярного произведения векторов
Рассмотрим более сложный способ определения взаимного угла между векторами с использованием выражения для определения скалярного произведения векторов:
- скалярное произведение векторов можно вычислить через координаты векторов;
- модули соответствующих векторов, которые вычисляются через арифметический квадратный корень из суммы квадратов координат вектора.
В результате угол между векторами определяется через арккосинус отношения скалярного произведения к произведению модулей векторов.
Однако следует отметить, что функция арккосинус имеет область значений, которая ограничивается интервалом , поэтому невозможно определить расположение векторов в пространстве: отставание или опережение одного вектора от другого. Для решения данной проблемы необходимо к последнему выражению добавить множитель, который принимает значения «1» или «-1» в зависимости от выполнения определенных условий:
Если и или и , то коэффициент равен «1»;
Если и или и , то коэффициент равен «-1» .
В результате мы получим, что область значений будет ограничиваться интервалом .
Рассмотрим реализацию рассмотренного выше алгоритма определения взаимного угла между векторами в программном обеспечении Matlab/Simulink.
Рис.3. Реализация в программном обеспечении Matlab/Simulink
Для преобразования аналогового сигнала в вектор используется блок «Fourier», который из периодического сигнала определяет амплитуду и фазу. Также имеется возможность преобразовать вектор через вещественные и мнимые составляющие с помощью использования блока «Magnitude-Angle to Complex» и блока «Complex to Real-Imag».
Рис.4. Алгоритм определения вещественной и мнимой составляющей комплексного числа из аналогового сигнала
Взаимный угол между двумя рассматриваемыми векторами определяется с помощью использования математических блок-элементов в программном обеспечении Matlab/Simulink.
Рис.5. Математический блок.
В качестве блока, который позволяет выбрать значение между положительным и отрицательным числом, используется ключ «Switch» на вход которого поступает логический сигнал «0» или «1». В зависимости от поступающего логического сигнала выбирается одно из двух значений взаимного угла.
В результате получена вторая модель определения взаимного угла между аналоговыми сигналами в Matlab/Simulink область значений которой определена на интервале .