Основное
-
Передаточная функция резонансного регулятора в непрерывной форме. Коэффициент Kr имеет тот же смысл что интегральная составляющая в ПИ-регуляторе
Резонансный регулятор. Kr играет роль коэффициента Ki интегрального регулятора для постоянных сигналов Резонансный регулятор обеспечивает бесконечно большой коэффициент усиления на частоте f₀, обеспечивая астатическое регулирование одновременно по амплитуде и фазе сигнала с этой фиксированной частотой.
Что это такое и для чего необходимо
Иногда возникает необходимость стабилизировать напряжение или ток преобразователя, например, бесперебойного источника питания, солнечного инвертора и иных устройств где на выходе имеется синусоида.
Для трёхфазных систем обычно используется преобразование Парка-Горева. Вначале трёхфазный сигнал ABC преобразуется в ортогональный αβ0 (плюс нулевая последовательность) посредством преобразования Кларке, который, затем, посредством преобразованием Парка-Горева, становится проекциями на синхронно вращающуюся систему координат, представляющие собой сигналы с постоянной составляющей, содержащие информацию о фазе и амплитуде исходной трёхфазной системы. В идеальном варианте симметричной системы, содержащей только прямую последовательность, эти сигналы не содержат вторую гармонику. Управление по симметричным компонентам - отдельная тема, следует отметить, что резонансный регулятор позволяет реализовать независимое управление по отдельным фазам.
В однофазных системах используется восстановление ортогональной составляющей производной/интегратором/фазовым фильтром либо специальные методы по измерению амплитуды и относительной фазы требуемых величин применяя счётчики и компараторы, однако это не всегда надёжно и "плавно". В этом случае на помощь приходит резонансный регулятор, где изначально в качестве сигнала задания используется синусоидальный сигнал с необходимой амплитудой и фазой.
Анализ замкнутой системы с Р-регулятором в непрерывной форме
Общая структура представлена на рис. 1. Имеется входной синусоидальный сигнал, ПР-регулятор, объект управления в общем виде.

С использованием предложенной методики покажем равенство фазы и амплитуды в установившемся режиме. Общий скрипт для вычислений в системе символьных вычислений Maxima:
/*Передаточная функция ПР-регулятора*/
V1:Kr*p/(p^2+(2*%pi*f_0)^2);
/*Уравнение замкнутой системы*/
V2:[e=x-y,y=Fk(p)*V1*e];
Вначале задаётся вид регулятора, составляется система уравнений для замкнутой системы на рис. 1.

Далее формируется решение, подставляется в него значение входного сигнала x с целью получения переходной характеристики:
/*Решение системы относительно выходной величины*/
V3:factor(y),solve(V2,[e,y]);
/*Задание входного сигнала во временной форме*/
V4:A*sin(2*%pi*f_0*t+ψ_0);
/*Преобразование Лапласа от входного сигнала*/
V5:x=laplace(V4,t,p);
/*Подстановка входного сигнала в решение системы уравнений
- переходная характеристика*/
V6:factor(V3),V5;

Производится умножение на коэффициент перехода к комплексно-частотной точке в установившемся режиме
/*Задание коэффициента перехода к комплексно-частотной точке*/
V7:(p^2+4*%pi^2*f_0^2)/(2*%pi*f_0);
/*Умножение на коэффициент и упрощение*/;
V8:factor(V6*V7);
/*Переход к комплексно-частотной характеристике в заданной точке*/
V9:p = %i*2*%pi*f_0;
/*Комлпексное значение в установившемся режиме*/
V10:factor(V8),V9;

Производится подстановка для перехода к комплексно-частотной точке в установившемся режиме

Легко заметить что получается ничто иное как формула Эйлера. Таким образом, амплитуда выходного сигнала в установившемся режиме равна A и фаза равна ψ₀, что и является непосредственно входным сигналом. Обратить внимание что выходной сигнал не зависит от передаточной функции объекта управления в установившемся режиме по интересующей гармонике.

Чтобы это показать наглядно, зададим необходимую функцию для объекта управления. Пусть это будет апериодическое звено первого порядка вида ФНЧ с постоянной времени τ=0.1 секунды, определяется как 1/(τ•p+1).
Остальные параметры соответственно равны Kr = 1000, ψ₀ = -0.2, f₀ = 50, A = 1.3.

Далее приведены результаты численного анализа для схемы, составленной в среде Scilab+xCos.

Параметры моделирования и исходные данные

Результаты моделирования. В разомкнутой системе амплитуда сигнала достаточно мала и соответствует прохождению через ФНЧ, при этом фаза является отстающей и примерно равна 90°.

Получим тот же результат для проверки с использованием Maxima, продолжим скрипт с использованием вспомогательной библиотеки для численных методов, позволяющих осуществить обратное преобразование Лапласа для функций высших порядков.
/*Задать форму объекта управления Fk(p)*/
V11:Fk(p)=1/(τ*p+1);
/*Подставить объект управления в переходную характеристику*/
V12:factor(V6),V11;
/*Задать численные параметры*/
Num:[A=1.3,Kr=2000,ψ_0=-0.2,f_0=50,τ=0.02];
/*переходная характеристика в численном виде*/
V13:V12,Num;
/*Загрузить пакет для работы с обратным преобразованием
Лапласа в численном виде*/
load("coma");
/*получить обратное преобразование Лапласа */
V14:nilt(V13,p,t);
/*Входной сигнал с численными значениями*/
V15:V4,Num;
/*Построение графика переходного процесса*/
wxplot2d([V15,V14],[t,0,0.4],[color,green,black],[legend,false]),wxplot_size=[480,320];
Задание объекта управления и получение переходной характеристики

После чего можно подставить численные параметры, загрузить пакет "coma" для работы с функциями высших порядков (более 4-го). Команда по-умолчанию ilt работает до 4 порядка включительно, для преодоления этого ограничения была разработана nilt (numerical inverse Laplace transform).

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

Таким образом, резонансный регулятор позволяет реализовать астатическое (с нулевой ошибкой) управление как по амплитуде, так и по фазе сигнала управляющего воздействия, обеспечивая в установившемся режиме их равенство.
Построим частотную характеристику регулятора, чтобы показать бесконечную добротность на частоте управления.
/*Переход к комплексно-частотной характеристике (КЧХ) для всех частот*/
V16:p = %i*2*%pi*f;
/*КЧХ регулятора*/
V17:V1,V16;
/*АЧХ и ФЧХ регулятора, предположить что параметры неотрицательные для упрощения не содержащего знак модуля*/;
assume(Kr>0,f>0,f_0>0);
/*Действительная и мнимая части КЧХ*/
V17R:realpart(V17);
V17I:factor(imagpart(V17));
/*АЧХ и ФЧХ регулятора, предположить что параметры неотрицательные для упрощения не содержащего знак модуля*/;
assume(Kr>0,f>0,f_0>0);
V17A:factor(cabs(V17));
V17P:carg(V17);
/*Подстановка численных параметров */
V18A:V17A,Num;V18P:V17P,Num;
/*График АЧХ*/
wxplot2d(V18A,[f,0,400],[y,0,10],[grid2d,true],[color,green,black],[legend,false],[ylabel,"|f(j2πf)|"]),wxplot_size=[480,320];
/*Построение графика ФЧХ*/
wxplot2d(V18P*180/%pi,[f,0,400],[y,0,360],[grid2d,true],[ylabel,"∠f(j2πf)"],[color,green,black],[legend,false]),wxplot_size=[480,320];
/*Построение графика мнимой и действительной частей*/
wxplot2d([V18R,V18I],[f,0,400],[y,-10,10],[grid2d,true],[ylabel,"Re,Im f(j2πf)"],[color,green,black],[legend,false]),wxplot_size=[480,320];
Осуществляется подстановка для оператора Лапласа, осуществляющая переход в комплексно-частотную область для всех значений частоты, далее осуществляется взятие модуля, угла и нахождение действительной и мнимой частей КЧХ, обратить внимание, что КЧХ - чисто мнимая.


На рис.14 представлены результирующие характеристики. Обратить внимание на нулевую действительную часть КЧХ и асимптоты, соответствующие частоте 50 Гц.
Цифровая форма реализации
Для получения регулятора в дискретном виде воспользуемся методом согласования нулей и полюсов. Об этом методе будет отдельная публикация равно как и о реализации в Maxima цифровых фильтров.
Для начала используем следующий код в новом скрипте
/*Инициализация*/
kill(all);ratprint:false;fpprintprec:4;
/*Резонансный регулятор*/
V1:Kr*p/(p^2+(2*%pi*f_0)^2);
/*Знаменатель и числитель*/
V1n:num(V1);V1d:denom(V1);
Общая схема (рис. 15) метода нулей и полюсов представлена на рисунке, здесь и далее fd - частота дискретизации

Далее находятся корни числителя и знаменателя, записывается передаточная функция в общем виде исходя из значения корней. Обратить внимание на использование функции demoivre, которая преобразует комплексные экспоненты в синусы-косинусы согласно формулы де Муавра.
/*Корни знаменателя и числителя*/
Kn:solve(V1n,p);Kd:solve(V1d,p);
/*Нахождение произведения разностей вида z-exp(p[i]/fd) для i-го корня*/
/*Для числителя*/
Zn:product(subst(Kn[i],(z-exp(p/fd))),i,1,length(Kn));
/*Для знаменателя*/
Zd:trigsimp(demoivre(product(subst(Kd[i],(z-exp(p/fd))),i,1,length(Kd))));
/*Передаточная функция в общем виде*/
V2:Krd*Zn/Zd;
/*Сравнение частотных характеристик*/;
/*Переход в КЧХ для непрерывной функции*/
V3:p=%i*2*%pi*f;
/*Переход в КЧХ для дискретной функции*/
V4:z=exp(%i*2*%pi*f/fd);
/*Подстановка в непрерывную ПФ*/
V5:V1,V3;
/*Подстановка в дискретную ПФ*/
V6:factor(V2),V4;
Вывод представлен на рисунке 16 в виде последовательности выражений

Следует отметить, что билинейное преобразование (метод Тастина) смещает частоты, поэтому используется именно метод согласования нулей и полюсов, дающий точные частотные точки, однако, при этом, искажается амплитуда. Для этого необходимо найти вспомогательный коэффициент Krd, который приближает непрерывную функцию к дискретной в заданной частотной точке по амплитуде.
/*Подстановка в непрерывную ПФ*/
V5:V1,V3;
/*Подстановка в дискретную ПФ*/
V6:factor(V2),V4;
/*Потребуем, чтобы скорость изменения составляющих КЧХ была одинаковой
на нулевой частоте. Используется производная*/
DV5:subst(f=0,diff(V5,f));
DV6:subst(f=0,diff(V6,f));
/*Решение для коэффициента, удовлетворяющего равенству производных на нулевой частоте*/
V7:solve(DV5=DV6,Krd);
/*Зададим численные параметры*/
Num:[Kr=2000,f_0=50,fd=1000];
/*Нахождение вспомогательного коэффициента*/
V7N:float(V7),Num;
/*Общий вектор численных параметров*/
Num:append(V7N,Num);
/*Упрощение выражений для АЧХ резонансного регулятора
в непрерывном и дискретном виде*/
assume(f>0,f_0>0,fd>0,Kr>0,Krd>0);
V5A:factor(cabs(V5));V6A:factor(trigreduce(trigsimp(factor(cabs(V6)))));
/*Подстановка численных параметров*/
V5N:float(V5A),Num;V6N:float(V6A),Num;
/*Построение АЧХ*/
wxplot2d([V5N,V6N],[f,0,2000],[y,0,5],[grid2d,true],[ylabel,"|Fd(p)|, |Fz(p)|"],[color,green,black],[legend,false]),wxplot_size=[480,320];
При обычном методе где на нулевой частоте отличное от нуля значение, например, для ФНЧ, вспомогательный коэффициент находится подстановкой p=0 и z=1. Если же необходимо обеспечить одинаковый рост частотной характеристики вблизи этой точки, особенно если она равна нулю, используется производная. Порядок нахождения представлен на рис. 17.

После подстановки этого коэффициента в дискретную передаточную функцию, подстановки численных параметров, можно построить следующий график АЧХ (рис. 18)

Далее реализуем цифровой фильтр и сравним результат во временной форме. Получим сперва результат обратного преобразования Лапласа от воздействия на резонансный регулятор ступенчатой функции, он довольно прост: (20•sin(100•π•t))/π. Видно, что это незатухающие синусоидальные колебания (благодаря бесконечной добротности).
/*Найдём результат обратного преобразования Лапласа
от воздействия ступеньки на резонансный регулятор*/
W1:ilt(V1/p,p,t),Num;
/*Подставляем значение для перехода от дискретной передаточной функции
к цифровому фильтру*/
V7:factor(V2),z=1/zm;
/*Раскрыть скобки у полиномов числителя и знаменателя*/
V8n:expand(num(V7));V8d:expand(denom(V7));
/*Выделить для числителя и знаменателя коэффициенты
при степенях zm*/
V9cn:makelist(coeff(V8n,zm,i),i,0,hipow(V8n,zm));
V9cd:makelist(coeff(V8d,zm,i),i,0,hipow(V8d,zm));
/*Разделить числитель и знаменатель на
свободное слагаемое знаменателя (при нулевой степени zm)
*/
V10cn:makelist(i/V9cd[1],i,V9cn);
V10cd:makelist(i/V9cd[1],i,V9cd);
/*Подставить численные параметры*/
V11N:float(V10cn),Num;
V11D:float(V10cd),Num;
Цифровому фильтру будет уделено внимание в отдельной публикации, поэтому кратко можно описать следующий процесс, как показано на рисунке 12.
Переход:
подставить zm = z⁻¹ в дискретную передаточную функцию и упростить
выделить полиномы числителя и знаменателя
сформировать массив коэффициентов при zm начиная с нулевой степени (свободное слагаемое)
разделить коэффициенты числителя и знаменателя на свободное слагаемое знаменателя, тем самым, произведя нормировку цифрового фильтра

Далее следует скрипт, который позволяет реализовать цифровой фильтр в Maxima. Более подробно в следующей публикации.
/*Коэффициенты числителя и знаменателя*/
CnumN:V11N;CdenN:V11D;
DigFiltReset(Filter):=block
(
[Nx,Ny,i],
Cx:Filter[3],Cy:Filter[4],
Nx:length(Cx),Ny:length(Cy),
for i:1 thru Nx do (Filter[1][i]:0),
for i:1 thru Ny do (Filter[2][i]:0),
Filter
);
DigFiltInit(Cx,Cy):=block
(
[Fliter,X,Y,Nx,Ny],
Nx:length(Cx),Ny:length(Cy),Filter:makelist(0,4),
X:makelist(0,Nx),Y:makelist(0,Ny),Cy[1]:0,
Filter[1]:X,Filter[2]:Y,Filter[3]:Cx,Filter[4]:Cy,
Filter
);
DigFiltStep(Filter,InputX):=block
(
[Acc,i,T1,T2,Cx,Cy,X,Y],
X:Filter[1],Y:Filter[2],
Cx:Filter[3],Cy:Filter[4],
Nx:length(Cx),Ny:length(Cy),
X[1]:InputX,
Cy[1]:0,Acc:0,
(
for i:1 thru Nx do
(Acc:float(Acc+X[i]*Cx[i])),
for i:1 thru Ny do
(Acc:float(Acc-Y[i]*Cy[i])),
Y[1]:Acc,
T1:X[1],
for i:1 thru Nx do
(T2:X[i],X[i]:T1,T1:T2),
T1:Y[1],
for i:1 thru Ny do
(T2:Y[i],Y[i]:T1,T1:T2)
),
Filter[1]:X,Filter[2]:Y,
Filter[3]:Cx,Filter[4]:Cy,
Filter
);
DigFiltCycle(Filter,Function,Niter,Fd):=block
(
[Fst,j,Out,OutIn,Fv],Fst:Filter,
DigFiltReset(Fst),
Out:makelist([0,0],i,Niter),OutIn:makelist([0,0],i,Niter),
for j:1 thru Niter do
(
Fv:float(ev(subst(t=(j-1)/Fd,Function))),
Vhod:1,
DigFiltStep(Fst,Vhod),
Out[j][2]:Fst[2][1],
Out[j][1]:j,
OutIn[j][2]:Fv,
OutIn[j][1]:j
) ,
[Out,OutIn]
);
/*Инициализация переменных состояния фильтра и коэффициентов*/
Fa:DigFiltInit(CnumN,CdenN);
Out:DigFiltCycle(Fa,W1,50,subst(Num,fd))$
wxplot2d([[discrete, Out[1]],[discrete, Out[2]]],[style,points,lines],[y,-10,10],[grid2d,true],[ylabel,"Fp(t),Fz(t)"],[color,green,black],[legend,false]),wxplot_size=[480,320];
В итоге получается требуемый отклик во временной области:

Коэффициент цифрового фильтра 2 cos((2•π•f₀)/fd) можно рассчитывать непосредственно как константу или используя f₀ от блока ФАПЧ.
aamonster
Прошу прощения, а на кого ориентирована статья?
Есть чувство, что для тех, кто знает используемую терминологию и привычен к используемому матаппарату, её содержание тривиально (выписать все формулы займёт меньше времени, чем прочитать статью), а прочим надо пояснять, что такое преобразование Парка-Горева, преобразование Кларке и т.п.
kkuznetzov
Возможно статья ориентирована для преподавателя.
HiTechSpoon
Статья явно написана для инженеров-электроников, инженеров-автоматиков и программистов встраиваемых систем. Преобразования Кларке и Парка-Горева, насколько я понял, выходят за рамки статьи и в предложенном методе не используются.
TimurZhoraev Автор
Согласен, что во введении немного излишне специальная формулировка, но, как верно отметил HiTechSpoon, используется другой метод. В основном указанные преобразования изучают в углублённых курсах ТОЭ, ТАУ и по специальностям преобразовательной техники. Но отчасти и в радиотехнических направлениях есть квадратурные преобразования, которые имеют схожий матаппарат. И для круга тех, кто слышал про ПИ-регуляторы, что можно также астатически управлять и по переменному току. Применение - простейшие ИБП, генераторы сигналов. Также, умозрительно, частично связанное с квантовыми системами. Например там, где состояния хранятся не в виде привычных 0-1 а в виде фазы, например 0-π итд. Обучение нейросети - это гигантский регулятор (конечно-разностные градиентные методы), который подстраивает весовые коэффициенты и там также возможны эффекты второго порядка в виде выбросов, колебаний, рысканий. А в будущем, где-нибудь появятся регуляторы на выходе которых в установившемся режиме будет значение "42".