exponenta event banner

Управление линейным электрическим приводом

В этом примере показано, как использовать slTuner и systune настройка петель тока и скорости в линейном электроприводе с пределами насыщения.

Модель линейного электрического привода

Откройте модель Simulink линейного электропривода:

open_system('rct_linact')

Электрические и механические компоненты моделируются с использованием Simscape Electrical и Simscape Multibody. Система управления состоит из двух каскадных контуров обратной связи, управляющих током возбуждения и угловой скоростью двигателя постоянного тока.

Рис. 1: Регуляторы тока и скорости.

Следует отметить, что контроллер внутреннего контура (тока) является пропорциональным усилением, в то время как контроллер внешнего контура (скорости) имеет пропорциональные и интегральные действия. Выход обоих контроллеров ограничен значением плюс/минус 5.

Технические условия на проектирование

Нам нужно настроить пропорциональный и интегральный выигрыш, чтобы ответить на требование скорости 2000 об/мин примерно за 0,1 секунды с минимальным превышением. Начальными установками усиления в модели являются P = 50 и PI (s) = 0,2 + 0 ,1/с, и соответствующий отклик показан на рисунке 2. Эта реакция является слишком медленной и слишком чувствительной к нарушениям нагрузки.

Рис. 2: Неподстроенный ответ.

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

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

TunedBlocks = {'Current PID','Speed PID'};
tLinearize = 0.5;  % linearize at t=0.5

% Create tuning interface
ST0 = slTuner('rct_linact',TunedBlocks,tLinearize);
addPoint(ST0,{'Current PID','Speed PID'})

Структура данных ST0 содержит описание системы управления и ее перестраиваемых элементов. Далее укажите, что двигатель постоянного тока должен соответствовать требованию скорости 2000 об/мин в течение 0,1 секунды:

TR = TuningGoal.Tracking('Speed Demand (rpm)','rpm',0.1);

Теперь можно настроить пропорциональный и интегральный выигрыш с помощью looptune:

ST1 = systune(ST0,TR);
Final: Soft = 1.03, Hard = -Inf, Iterations = 124

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

T1 = getIOTransfer(ST1,'Speed Demand (rpm)',{'rpm','i'});
figure
step(T1,0.5)

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

writeBlockValue(ST1)

Результаты нелинейного моделирования представлены на рис. 3. Нелинейное поведение намного хуже, чем линейное приближение. На фиг.4 показаны насыщение и колебания во внутреннем (токовом) контуре.

Рис. 3: Нелинейное моделирование настроенного контроллера.

Рис. 4: Выход контроллера тока.

Предотвращение насыщения

До сих пор мы указывали только желаемое время отклика для внешнего (скоростного) контура. Это оставляет systune свободно распределять управляющее усилие между внутренним и внешним контурами. Насыщение во внутреннем цикле говорит о том, что пропорциональный коэффициент усиления слишком высок и что требуется некоторое ребалансирование. Одним из возможных способов является явное ограничение коэффициента усиления от команды speed до выхода «Current PID». Для эталона скорости 2000 об/мин и пределов насыщения плюс/минус 5 средний коэффициент усиления не должен превышать 5/2000 = 0,0025. Чтобы быть консервативным, постарайтесь сохранить коэффициент усиления от скорости по отношению к «Current PID» ниже 0,001. Для этого добавьте ограничение по коэффициенту усиления и перенастройте коэффициент усиления контроллера в соответствии с обоими требованиями.

% Mark the "Current PID" output as a point of interest
addPoint(ST0,'Current PID')

% Limit gain from speed demand to "Current PID" output to avoid saturation
MG = TuningGoal.Gain('Speed Demand (rpm)','Current PID',0.001);

% Retune with this additional goal
ST2 = systune(ST0,[TR,MG]);
Final: Soft = 1.39, Hard = -Inf, Iterations = 52

Конечное усиление 1.39 указывает, что требования почти, но не совсем выполнены (все требования выполняются, когда конечное усиление меньше 1). Использовать viewGoal для проверки того, как настроенные контроллеры соотносятся с каждой целью.

figure('Position',[100,100,560,550])
viewGoal([TR,MG],ST2)

Затем сравните две конструкции в линейной области.

T2 = getIOTransfer(ST2,'Speed Demand (rpm)',{'rpm','i'});
figure
step(T1,'b',T2,'g--',0.4)
legend('Initial tuning','Tuning with Gain Constraint')

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

showTunable(ST1)  % initial tuning
Block 1: rct_linact/Current Controller/Current PID =
 
  Kp = 18.4
 
Name: Current_PID
P-only controller.

-----------------------------------

Block 2: rct_linact/Speed Controller/Speed PID =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.402, Ki = 0.677
 
Name: Speed_PID
Continuous-time PI controller in parallel form.

showTunable(ST2)  % retuning
Block 1: rct_linact/Current Controller/Current PID =
 
  Kp = 2.38
 
Name: Current_PID
P-only controller.

-----------------------------------

Block 2: rct_linact/Speed Controller/Speed PID =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.44, Ki = 4.51
 
Name: Speed_PID
Continuous-time PI controller in parallel form.

Чтобы проверить эту новую конструкцию, переместите новые настроенные значения коэффициента усиления в модель Simulink и смоделируйте реакцию на потребность в скорости 2000 об/мин и возмущение нагрузки 500 N. Результаты моделирования представлены на рис. 5, а выходной сигнал контроллера тока показан на рис. 6.

writeBlockValue(ST2)

Рис. 5: Нелинейная реакция настройки с ограничением усиления.

Рис. 6. Выход контроллера тока.

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

См. также

| | (Simulink Control Design) | (Simulink Control Design) | (Проект управления Simulink)

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