Добивки:
- Способност да се објаснат и применат термините P, I, D и ефектите на PID контролерот на вештачката интелигенција со правилен контекст
- Способност за спроведување на Ziegler-Nichols и експериментални методи на подесување чекор по чекор со помош на AI
- Способност да се препознаат и елиминираат PID замките како што се интегрално намотување, деривативен шум во препораките за вештачка интелигенција
Одржување на температурата на рерната константна, возење на брзината на моторот до саканата вредност, балансирање на аголот на дронот; Во срцето на сите нив е контролниот алгоритам. Најчестиот од нив е PID контролерот, кој е столбот на индустријата. PID; Тој е едноставен, робустен и работи на широк спектар на проблеми. Но, „едноставно“ не значи „лесно за местење“: неправилно поставениот PID ќе осцилира, ќе се надмине, ќе седи доцна или ќе стане целосно нестабилен. Вештачката интелигенција е вреден асистент овде: објаснува PID термини, води низ методите за подесување, дијагностицира типични стапици и пишува код за подесување. Сепак, конечното прилагодување се прави со гледање на физичкото однесување на вашиот систем и одлуката за стабилност му припаѓа на инженерот. Во оваа единица покриваме како да инсталирате, подесите и потврдите PID стапици со вештачка интелигенција.
Три услови на PID
PID реагира на сигналот за грешка (e = цел - мерено) на три начини:
термин
На што гледа?
Ефект
во крајност
P (пропорционално)
тековна грешка
брз одговор
Осцилација, трајна грешка
јас (интегрален)
Акумулирана грешка во минатото
Ресетира трајна грешка
прескокнување, превиткување, осцилација
D (дериват)
Стапка на промена на грешка
Амортизацијата го намалува пречекорувањето
Засилете ја бучавата
Вербално резиме: П одговара на прашањата „колку далеку сум сега“, јас „колку време сум отсутен“, Д „колку брзо се приближувам“. Добар контролер ги балансира сите три.
класа PID: def __init__(self, Kp, Ki, Kd, output_min=-100, output_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max = output_min, output_max self.integral.0v. пресметај (само, цел, измерено, dt): грешка = цел - измерено # P p = self.Kp * грешка # I -- self.integral со заштита од намотување += грешка * dt i = self.Ki * self.integral # D -- дериват на бучава чувствителен d = себе. Kd * (грешка - само.претходна_грешка. = претходна_грешка. Заситете го излезот и ограничете го превртувањето ако излезот > self.output_max: излез = self.out_max self.integral -= грешка * dt # anti-windup: отповикајте го интегралниот elif излез < self.output_min: излез = self.output_min self.integral -= грешка * dt враќање излез
Овој код не е „ПИД за обука“, туку скелет близок до производната логика: тој вклучува излезна сатурација и анти-навивање. Многу едноставни PID дадени од AI ги заобиколуваат овие две заштити; Без нив, кога актуаторот ќе ја достигне својата граница, интегралот ќе отече и системот неочекувано ќе се надмине.
Совет: Кога барате од вештачката интелигенција за PID, кажете „додајте излезна сатурација и анти-навивање, применете го изводот при мерење на изводниот термин“. Овие три дополнувања го претвораат учебникот PID во полето PID.
Интегрално навивање и изводен шум
Две класични стапици се најчестите причини за неуспех на PID:
Интегрално намотување: кога активирачот се заситува (на пример, моторот е веќе со целосна моќност) грешката опстојува и интегралниот термин продолжува да расте. Овој надуен интеграл води до големо пречекорување кога системот ќе ја достигне целта. Решение: запирање или враќање на интегралот кога излезот е заситен (анти-навивање, прикажано во горната шифра).
Изводен шум: Терминот D го зема изводот на грешката; Дериватот на бучното мерење е многу побучен и ќе го вибрира активаторот. Решенија: земање на изводот од мерењето (извод на мерењето наместо грешката), додавање на нископропусен филтер на изводниот член.
# Намалување на дериватниот шум: мерен дериват + филтриран_суров = -(мерено - self.previous_measured) / dt наместо грешка
ВИ е добра во идентификувањето на овие стапици; Ако кажете „Мојот PID многу надминува кога ќе ја достигне целта“, тој препорачува превртување. Но, проверувате со мерење дали поправката работи на вашиот систем.
Поставување со Циглер-Николс
Класичен метод за наоѓање добивки (Kp, Ki, Kd) од нула е Ziegler-Nichols. Нејзината суштина: почнувајќи само со P и зголемувајќи го Kp додека системот не премине во одржлива осцилација; Пресметај ги Kp, Ki, Kd од табелата со критичното засилување Ku и периодот на осцилација Tu во оваа точка.
контролер
кп
Ти
Тд
П.
0,5 · Ku
-
-
П.И.
0,45 · Ку
Ту/1.2
-
PID
0,6 · Ку
Tu/2
Ту/8
Зиглер-Николс чекори (план да го направи АИ):1. Земете Ki=0, Kd=0. Само стартувајте P.2. Полека зголемувајте го Kp додека не започне стабилна, одржлива осцилација.3. Овој Kp = Ku (критична добивка), период на осцилација = Tu.4. Пресметај Kp, Ti, Td од табелата; Ki = Kp/Ti, Kd = Kp*Td.5. Започнете со овие вредности, а потоа направете експериментални измени.
Внимание: Циглер-Николс намерно го доведува системот до неговата граница на стабилност (одржлива осцилација). Постои ризик од механичко оптоварување, прекумерна струја и опасност кога тоа го правите на вистински хардвер; Ако е можно, направете го тоа прво во симулација, а потоа работете со ограничување на мала моќност и E-stop во хардвер. Кју предложено од вештачката интелигенција е почетна точка, се мери и проверува во вашиот систем.
Дијагностика со помош на вештачка интелигенција
Може да го дијагностицирате однесувањето на PID со тоа што ќе го опишете со вештачката интелигенција. Симптом → мапирање на можни причини:
симптом
можна причина
Насоката што ќе ја предложи вештачката интелигенција
бавно седење
Kp/Ki низок
зголемување на kp
Постојана грешка
Јас сум отсутен или многу ниско
Ки додадете/зголемете
Надминување + осцилација
Кп/Ки високо, нема Д
Додај Kd, Намали Ки
Активаторот се тресе
деривативен шум
Филтрирајте/намалете го D
Кога ќе го достигнете големото надминување
интегрално намотување
Додадете анти-навивање
Слаба навестување / Силен навестување
СЛАБ:"Дајте ги добивките на PID."(Кој систем? Како е однесувањето? Дали има некои мерења? Доаѓаат случајни бројки.)СИЛНО:"Го прилагодувам PID за контрола на брзината на еднонасочна струја. Моментално, Kp=2, Ki=0,5, Kd=0. Пречекорува 35% на чекорот и кога ќе достигне голема секунда време за да се постигне целта, е 100 Hz Наведете ги можните причини од овие симптоми, кои добиваат „Предложете која насока да ја сменам и кажете ми како да тестирам дали пречекорувањето е интегрално намотување“.
Мини случај
Контролниот инженер Керем ја прилагодува контролата на температурата на екструдер. Со придобивките што ги предлага вештачката интелигенција, системот брзо стигнува до целта, но при секоја промена на сетот прави големо надминување и полека се смирува. Керем го објаснува симптомот на АИ; Вештачката интелигенција се сомнева во интегрално намотување бидејќи грејачот останува на целосна моќност (заситен) некое време. Керем додава анти-навивање на PID-кодот и пречекорувањето значително се намалува. Но, сега има мало треперење на излезот на грејачот; Тој го припишува ова на терминот D што ја засилува бучавата на сензорот за температура и додава нископропусен филтер на дериватот. Конечно, грубо ги потврдува придобивките со Ziegler-Nichols и врши експериментално фино подесување. ВИ има брза дијагноза; Но, Керем ја потврдуваше секоја корекција со мерење на вистинскиот одговор на чекорот - без разлика дали превртувањето е коригирано или треперењето исчезна, може да се види само графички.
Вообичаени грешки
- Неуспехот да се додаде излезна заситеност и анти-намотување на PID и да се доживее големо пречекорување во границата на активирачот.
- Преземање на дериватот од дериватот на бучното мерење и вибрирање на актуаторот.
- Претпоставувајќи дека dt е константна, додека периодот на земање примероци варира.
- Изведување на тестот за осцилација Ziegler-Nichols на хардвер без безбедносни мерки на претпазливост.
- Прифаќање на заработката генерирана од вештачката интелигенција како „конечна“ без проверка специфична за системот.
- Промена на едно засилување со многу големи чекори и туркање на системот во нестабилност.
Сумирано
- PID; Реагира со P (тековна грешка), I (акумулирана грешка), D (стапка на промена на грешката).
- PID на теренот треба да вклучува излезна сатурација, анти-навивање и филтер за извод.
- Интегралното намотување големо прескокнување, бучавата од изводот предизвикува вибрации на активаторот.
- Циглер-Николс почнува да добива; Се спроведува со безбедносни мерки во хардверот.
- АИ е брза во дијагнозата од симптом до причина; Корекцијата се потврдува со мерење.
- dt реално измерено; Промените на заработката се прават со мали чекори и набљудување.
Задача за апликација
Изберете систем (вистински мотор/грејач или едноставен модел од прв/втор ред во Python) и нека вештачката интелигенција генерира PID класа со заситеност + анти-навивање. Потоа: (1) набљудувајте го однесувањето на осцилацијата почнувајќи само со P и зголемувајќи го Kp, (2) додадете Ki за да ја елиминирате постојаната грешка и да видите како се зголемува пречекорувањето, (3) споредете го ефектот на големото пречекорување со вклучување и исклучување на анти-навивањето. Нацртајте го чекорот одговор на секој чекор и забележете која добивка го менува однесувањето. Споредете ги придобивките од Циглер-Николс со придобивките што ги најдовте самите.