exponenta event banner

Настройка полевых контроллеров с помощью SYSTUNE

В этом примере показано, как использовать systune команду на настройку полевого управления (ВОК) для синхронной машины с постоянными магнитами (ПМСМ) на основе результата оценки частотного отклика (FRE).

Полевое управление

В этом примере ориентированное на поле управление (ВОК) для синхронной машины с постоянными магнитами (PMSM) моделируется в Simulink ® с использованием компонентов Simscape™ Electrical™.

mdl = 'scdfocmotorSystune';
open_system(mdl)
SignalBuilderPath = [mdl,'/System_Inputs/Signal_Builder_Experiments'];

Ориентированное на поле управление управляет трехфазными токами статора в виде вектора. ВОК основан на проекциях, которые преобразуют 3-фазную зависящую от времени и скорости систему в двухкоординатную инвариантную по времени систему. Эти преобразования представляют собой преобразование Кларка, преобразование парка и их соответствующие обратные преобразования. Эти преобразования реализуются как блоки в подсистеме Controller_Algorithm.

Преимущества использования ВОК для управления электродвигателями переменного тока:

  • Прямой и раздельный контроль крутящего момента и потока

  • Точное управление в переходном и устойчивом режиме

  • Аналогичные характеристики по сравнению с двигателями постоянного тока

Подсистема Controller_Algorithm содержит все три контроллера PI. ПИ-регулятор внешнего контура регулирует скорость двигателя. Два ПИ-контроллера внутреннего контура управляют токами d-оси и q-оси по отдельности. Команда от контроллера PI внешнего контура подается непосредственно на ось q для управления крутящим моментом. Команда для оси d равна нулю для PMSM, поскольку поток ротора фиксируется постоянным магнитом для этого типа электродвигателя переменного тока.

Перед настройкой контроллеров проверьте отклики на скорость с помощью исходных контроллеров и сохраните результаты моделирования в MAT-файле. SystunedSpeed.mat. Существующий контроллер PI скорости имеет коэффициенты усиления P = 0,08655 и I = 0,1997. Оба текущих ПИ-контроллера имеют коэффициенты усиления P = 1 и I = 200.

scdfocmotorSystuneOriginalResponse

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

figure
plot(logsout_original_oneside{2}.Values);
hold on
plot(logsout_original_oneside{1}.Values);
legend('Original Controller','Speed Reference','Location','southeast');
grid on
hold off

figure
plot(logsout_original_twoside{2}.Values);
hold on
plot(logsout_original_twoside{1}.Values);
legend('Original Controller','Speed Reference','Location','northeast');
grid on
hold off

Сбор данных частотного отклика

Для сбора данных частотной характеристики найдите рабочую точку со скоростью 150 rad/sec, укажите точки линейного анализа, определите входные сигналы и оцените частотную характеристику.

Отключите исходные контроллеры и смоделируйте модель системы с разомкнутым контуром с помощью команд VD и VQ. Для достижения рабочей точки укажите начальные напряжения -0,1 В для VD и 3,465 В для VQ с помощью ctrlIniValues структура. Блоки команд постоянного напряжения подключаются установкой сигналов выключателей в switchIniValue структура.

switchIniValue.openLoopD = 1;
switchIniValue.openLoopQ = 1;
ctrlIniValues.voltageD = -0.1;
ctrlIniValues.voltageQ = 3.465;

Захват моментального снимка моделирования в 3 с в качестве рабочей точки для оценки частотного отклика.

signalbuilder(SignalBuilderPath, 'activegroup', 1);
op = findop(mdl,3);

В качестве начального условия модели используйте рабочую точку имитационного снимка. Изменение начальных значений модели в ctrlIniValues структура должна находиться в этом устойчивом состоянии. Для контроллера тока d-оси текущий идентификатор равен 0 A. Для контроллера тока по оси q текущее значение IQ равно 0.1 A. Для контроллера скорости внешнего контура опорным током является 0.122 А и скорость на 150 рад/с. Для установки PMSM установите скорость ротора в pmsm структура для 150 рад/с.

set_param(mdl,'LoadInitialState','on');
set_param(mdl,'InitialState','getstatestruct(op)');
ctrlIniValues.currentDIC = 0;
ctrlIniValues.currentQIC = 0.1;
ctrlIniValues.speedIC = 150;
ctrlIniValues.speedCurrent = 0.122;
pmsm.RotorVelocityInit = 150;

Добавление точек линейного анализа в модель для оценки частотного отклика. Добавление точек ввода с разомкнутым контуром в VD и VQ. Добавьте выходные точки с разомкнутым контуром к идентификатору, IQ и скорости. Кроме того, добавьте точку анализа разрыва контура к измерению скорости.

io = getlinio(mdl);

Определение входного синестрименного сигнала от 10 кому 10,000 rad/s с фиксированным временем выборки 4e-6 s, то есть время выборки контура управления током sampleTime.CurrentControl. Величина синестрименного сигнала равна 0.25 V. Эта величина обеспечивает надлежащее возбуждение установки в пределах предела насыщения. Если амплитуда возбуждения либо слишком велика, либо слишком мала, это дает неточные результаты оценки частотной характеристики.

in = frest.createFixedTsSinestream(sampleTime.CurrentControl,{10,1e4});
in.Amplitude = 0.25;

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

estsys = frestimate(mdl,op,io,in);
estsys.InputName = {'Vd','Vq'};
estsys.OutputName = {'Id','Iq','speed'};
bode(estsys,'.')

Настройка системы управления с помощью systune

Получают модель линейной системы «состояние-пространство» из результата оценки частотного отклика. Использование набора опций для ssest задайте метод численного поиска, используемый для этой итеративной оценки параметров, как поиск наименьших квадратов Левенберга-Марквардта. Оценка модели состояния-пространства с четырьмя состояниями и периодом 4e-6 секунд. Для выполнения этого шага требуется программное обеспечение Toolbox™ идентификации системы.

optssest = ssestOptions('SearchMethod','lm');
optssest.Regularization.Lambda = 0.1;
sys_singletune = ssest(estsys,4,'Ts',sampleTime.CurrentControl,optssest);

Чтобы настроить все три контроллера PI в модели ВОК PMSM, создайте систему управления, как показано на следующей блок-схеме.

Определите три настраиваемых дискретно-временных блока PID и их ввода-вывода для управления током d-оси, управления током q-оси и управления скоростью. Время выборки этих дискретно-временных ПИД-контроллеров должно быть согласованным, что совпадает с временем выборки текущего контура управления. Чтобы обеспечить лучшую аппроксимацию более быстрых контроллеров по сравнению с исходными более медленными контроллерами, установите формулу дискретного интегратора для каждого PID-контроллера в 'Trapezoidal'.

Cd = tunablePID('Cd','pi',sampleTime.CurrentControl);
Cd.IFormula = 'Trapezoidal';
Cd.u = 'Id_e';
Cd.y = 'Vd';

Cq = tunablePID('Cq','pi',sampleTime.CurrentControl);
Cq.IFormula = 'Trapezoidal';
Cq.u = 'Iq_e';
Cq.y = 'Vq';

Cspeed = tunablePID('Cspeed','pi',sampleTime.CurrentControl);
Cspeed.IFormula = 'Trapezoidal';
Cspeed.u = 'speed_e';
Cspeed.y = 'Iq_ref';

Создайте три суммирующих соединения для внутреннего и внешнего контуров обратной связи.

sum_speed = sumblk('speed_e = speed_ref - speed');
sum_id = sumblk('Id_e = Id_ref - Id');
sum_iq = sumblk('Iq_e = Iq_ref - Iq');

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

input = {'Id_ref','speed_ref'};
output = {'Id','Iq','speed'};
APs = {'Iq_ref','Vd','Vq','Id','Iq','speed'};

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

ST0 = connect(sys_singletune,Cd,Cq,Cspeed,sum_speed,sum_id,sum_iq,input,output,APs);

Определите цели настройки, включая цели отслеживания и контуров формы, чтобы обеспечить отслеживание команд, а также получить цели для предотвращения насыщения. Для контроллера скорости установите для полосы пропускания отслеживания значение 150 рад/с. Эта полоса пропускания используется как в целях отслеживания, так и в целях формирования петель. Кроме того, установите для ошибки DC значение 0.001 для отражения максимальной стационарной ошибки в 0.1%. Установите для пиковой ошибки значение 10. Для контроллера тока d-оси установите полосу пропускания отслеживания в значение 2500 rad/s, что намного быстрее, чем контроллер скорости внешнего контура. Чтобы предотвратить насыщение контроллеров, укажите цели ограничения коэффициентов усиления для всех трех контроллеров.

TR1 = TuningGoal.Tracking('speed_ref','speed',2/150,0.001,10);
TR2 = TuningGoal.Tracking('Id_ref','Id',2/2500);
LS1 = TuningGoal.LoopShape('Id',2500);
LS2 = TuningGoal.LoopShape('speed',150);
MG1 = TuningGoal.Gain('speed_ref','Iq_ref',2);
MG2 = TuningGoal.Gain('speed_ref','Vq',50);
MG3 = TuningGoal.Gain('Id_ref','Vd',20);

Настройка всех трех контроллеров PI с помощью systune со всеми целями настройки на основе построенной модели ST0. Чтобы увеличить вероятность нахождения значений параметров, соответствующих всем требованиям проекта, задайте опции для systune для выполнения пяти дополнительных оптимизаций, начиная с пяти случайным образом сгенерированных значений параметров.

opt = systuneOptions('RandomStart',5);
rng(2)
[ST1,fSoft] = systune(ST0,[TR1,TR2,LS1,LS2,MG1,MG2,MG3],opt);
Final: Soft = 1.01, Hard = -Inf, Iterations = 73
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 87
Final: Soft = 1.01, Hard = -Inf, Iterations = 59
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 66
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 61
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 60

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

figure
viewGoal([TR1,TR2],ST1)
figure
viewGoal([LS1,LS2],ST1)
figure
viewGoal([MG1,MG2,MG3],ST1)

После проверки целей настройки извлеките параметры контроллера из настроенной модели ST1. Используйте настроенные параметры контроллера PI для обновления параметров рабочей области для блоков контроллера PI.

Cd = getBlockValue(ST1,'Cd');
Cq = getBlockValue(ST1,'Cq');
Cspeed = getBlockValue(ST1,'Cspeed');

Контроллер PI тока d-оси настроил коэффициенты усиления:

paramCurrentControlPD = Cd.Kp
paramCurrentControlID = Cd.Ki
paramCurrentControlPD =

    2.8898


paramCurrentControlID =

   2.6370e+03

Контроллер PI тока q-оси имеет настроенные коэффициенты усиления:

paramCurrentControlPQ = Cq.Kp
paramCurrentControlIQ = Cq.Ki
paramCurrentControlPQ =

    1.4964


paramCurrentControlIQ =

  679.7979

Контроллер скорости PI настроил коэффициенты усиления:

paramVelocityControlTuneP = Cspeed.Kp
paramVelocityControlTuneI = Cspeed.Ki
paramVelocityControlTuneP =

    0.3713


paramVelocityControlTuneI =

    0.0179

После настройки всех трех контроллеров с помощью systune, коэффициенты усиления контроллера значительно отличаются от исходных значений. PID-контроллер в контуре управления скоростью имеет другое время выборки, которое составляет 0.001 второй. Настроенный результат использует другое время выборки 4e-6 во-вторых, но коэффициенты усиления контроллера одинаковы. Чтобы убедиться в том, что характеристики контроллера идентичны с различными временами выборки, в этом примере формат дискретного интегратора ПИД-контроллеров является «трапециевидным».

Проверить настроенный контроллер

Проверьте производительность с помощью настроенного контроллера. Сначала инициализируйте модель до нулевых начальных условий с помощью ctrlIniValues. Подключите блоки контроллеров PID, установив сигналы переключателей в switchIniValue и установить надлежащие исходные условия для модели установки PMSM.

switchIniValue.openLoopQ = 0;
switchIniValue.openLoopD = 0;
ctrlIniValues.currentDIC = 0;
ctrlIniValues.voltageD = 0;
ctrlIniValues.currentQIC = 0;
ctrlIniValues.voltageQ = 0;
ctrlIniValues.speedIC = 0;
ctrlIniValues.speedCurrent = 0;
pmsm.RotorVelocityInit = 0;
set_param(mdl,'LoadInitialState','off')

Настройте модель для использования одностороннего командного сигнала скорости и моделирования модели. Показать отклик модели на одностороннюю команду скорости, которая поднимается из 0 rad/s в 150 рад/с при 0.05 s, а затем в 200 рад/с при 0.8 s. Сохранить результат моделирования в logsout_tuned_oneside в MAT-файле, SystunedSpeed.mat.

signalbuilder(SignalBuilderPath, 'activegroup', 2);
sim(mdl);
logsout_tuned_oneside = logsout;
save('SystunedSpeed','logsout_tuned_oneside','-append')

Настройте модель для использования двустороннего командного сигнала скорости и моделирования модели. Показать отклик модели на двустороннюю команду скорости, которая поднимается из 0 rad/s в 150 рад/с при 0.05 s, изменяет направление на противоположное при 0.5 s и затем вернуться к 0 рад/с при 0.8 s. Сохранить результат моделирования в logsout_tuned_twoside в MAT-файле, SystunedSpeed.mat.

signalbuilder(SignalBuilderPath, 'activegroup', 3);
sim(mdl);
logsout_tuned_twoside = logsout;
save('SystunedSpeed','logsout_tuned_twoside','-append')

Сравните отклики скорости двигателя между существующими коэффициентами усиления контроллера и настроенным результатом. Отклики скорости показаны бок о бок в течение одной секунды моделирования. Отклик на скорость более точно соответствует команде step. Установившаяся ошибка также уменьшается после настройки контроллеров PI на systune.

scdfocmotorSystunePlotSpeed

После настройки контроллеров отклик двигателя улучшается с более быстрым переходным откликом и меньшей погрешностью установившегося состояния при обоих типах команд скорости.

bdclose(mdl)

См. также

Связанные темы