Бірлік 5 / 9

Басқару алгоритмдері: PID және AI қолдауымен баптау

Табыстар:

  • PID контроллерінің P, I, D терминдері мен әсерлерін AI-ға дұрыс контекстпен түсіндіру және қолдану мүмкіндігі
  • АИ көмегімен Зиглер-Никольс және эксперименттік баптау әдістерін кезең-кезеңімен орындау мүмкіндігі
  • AI ұсыныстарындағы интегралды орнату, туынды шу сияқты PID тұзақтарын тану және жою мүмкіндігі

Пештің температурасын тұрақты ұстау, қозғалтқыштың жылдамдығын қажетті мәнге жылжыту, дронның бұрышын теңестіру; Олардың барлығының негізінде басқару алгоритмі жатыр. Олардың ең көп тарағаны – бұл саланың тірегі болып табылатын PID контроллері. PID; Бұл қарапайым, сенімді және көптеген мәселелерде жұмыс істейді. Бірақ «қарапайым» «баптау оңай» дегенді білдірмейді: қате орнатылған PID тербеледі, асып кетеді, кеш отырады немесе мүлдем тұрақсыз болады. Бұл жерде жасанды интеллект құнды көмекші болып табылады: ол PID терминдерін түсіндіреді, баптау әдістері бойынша бағыттайды, типтік қателерді диагностикалайды және тюнинг кодын жазады. Дегенмен, соңғы түзету сіздің жүйеңіздің физикалық мінез-құлқын қарау арқылы жасалады және тұрақтылық туралы шешім инженерге тиесілі. Бұл бөлімде біз AI көмегімен PID тұзақтарын орнату, реттеу және тексеру жолдарын қарастырамыз.

PID үш шарты

PID қате сигналына (e = мақсат - өлшенген) үш жолмен жауап береді:

мерзімі

Ол не қарайды?

Әсер

шектен тыс

P (пропорционалды)

ағымдағы қате

жылдам жауап беру

Тербеліс, тұрақты қате

I (интегралдық)

Бұрынғы жинақталған қате

Тұрақты қатені қалпына келтіреді

асып кету, орау, тербеліс

D (туынды)

Қатенің өзгеру жылдамдығы

Амортизация шектен асып кетуді азайтады

Шуды күшейту

Ауызша қорытынды: П «қазір қаншамын», мен «қашықтықта болдым», 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 = 0.0 self.preror, есептелетін 0.0, self. өлшенген, dt): қате = мақсатты - өлшенген # P p = self.Kp * қате # I -- желіден қорғанысы бар self.integral += қате * dt i = self.Ki * self.integral # D -- туынды шуға сезімтал d = self.Kd * (қате - self.previous_error) / dt + self.previous_error) / dt + self.previous_error = dt +шығ. егер шығыс > self.output_max: шығыс = self.out_max self.integral -= қате * dt # анти-windup: интегралды қайтару elif шығысы < self.output_min: шығыс = self.output_min self.integral -= қате * dt қайтару шығысы

Бұл код «оқыту PID» емес, өндірістік логикаға жақын қаңқа: ол шығыс қанықтылығын және анти-виндупты қамтиды. AI беретін көптеген қарапайым PID осы екі қорғанысты айналып өтеді; Оларсыз, жетек өз шегіне жеткенде, интеграл ісінеді және жүйе күтпеген жерден асып кетеді.

Кеңес: AI-дан PID үшін сұраған кезде «шығыс қанықтылығын және анти-желді қосуды қосыңыз, туынды терминге өлшеуге туынды қолданыңыз» деп айтыңыз. Бұл үш толықтыру оқулық PID өрісін PID өрісіне түрлендіреді.

Интегралды Windup және туынды шу

Екі классикалық тұзақ PID сәтсіздігінің ең көп тараған себептері болып табылады:

Интегралды өшіру: Жетек қаныққанда (мысалы, қозғалтқыш толық қуатта болса) қате сақталады және интегралдық термин өсе береді. Бұл толтырылған интеграл жүйе мақсатқа жеткенде үлкен асып кетуге әкеледі. Шешім: шығыс қаныққан кезде интегралды тоқтату немесе кері айналдыру (жоғарыдағы кодта көрсетілген антивиндуп).

Туынды шу: D мүшесі қатенің туындысын қабылдайды; Шулы өлшемнің туындысы әлдеқайда шулы және жетекті дірілдейді. Шешу жолдары: өлшеуден туынды алу (қате орнына өлшеу туындысы), туынды мүшеге төмен өту сүзгісі қосу.

# Туынды шуды азайту: өлшеу туындысы + фильтрленген_шикі = -(өлшенген - өздік.алдыңғы_өлшенген) / қатенің орнына dt

AI бұл тұзақтарды анықтауда жақсы; «Менің PID көрсеткішім мақсатқа жеткенде айтарлықтай асып түседі» десеңіз, ол өшіруді ұсынады. Бірақ сіз түзету жүйеңізде жұмыс істейтінін өлшеу арқылы тексересіз.

Зиглер-Никольспен орнату

Табысты табудың классикалық әдісі (Kp, Ki, Kd) нөлден бастап Зиглер-Никольс болып табылады. Оның мәні: тек Р-дан басталып, жүйе тұрақты тербеліске өткенге дейін Kp көбейту; Осы нүктедегі критикалық күшейту Ku және тербеліс периоды Tu болатын кестеден Kp, Ki, Kd есептеңіз.

контроллер

кп

Ти

Td

П.

0,5·Ku

П.И.

0,45·Ку

Ту/1.2

PID

0,6·Ku

Ту/2

Ту/8

Зиглер-Никольс қадамдары (ЖСЖ жасау жоспары):1. Ki=0, Kd=0 алайық. Тек P.2 іске қосыңыз. Тұрақты, тұрақты тербеліс басталғанша Kp-ді БАЯН арттырыңыз.3. Бұл Kp = Ku (критикалық күшейту), тербеліс периоды = Ту.4. Кестеден Kp, Ti, Td есептеңіз; Ki = Kp/Ti, Kd = Kp*Td.5. Осы мәндерден бастаңыз, содан кейін эксперименттік түзетулер жасаңыз.

Абайлаңыз: Зиглер-Никольс жүйені тұрақтылық шегіне әдейі жеткізеді (тұрақты тербеліс). Мұны нақты жабдықта орындаған кезде механикалық кернеу, шамадан тыс ток және қауіп бар; Мүмкін болса, алдымен симуляцияда орындаңыз, содан кейін төмен қуат шегімен және аппараттық құралда E-stopпен жұмыс істеңіз. AI ұсынған Ku бастапқы нүкте болып табылады, ол сіздің жүйеңізде өлшенеді және тексеріледі.

AI-көмектесетін диагностика

PID әрекетін AI-ге сипаттау арқылы диагностикалауға болады. Симптом → ықтимал себеп картасы:

симптом

ықтимал себеп

AI бағыты ұсынатын болады

баяу отыру

Кп/Ки төмен

кп арттыру

Тұрақты қате

Мен жоқпын немесе өте төменмін

Қосу/ұлғайту

Ағып кету + тербеліс

Kp/Ki жоғары, D жоқ

Kd қосыңыз, Ki азайтыңыз

Жетек дірілдеп тұр

туынды шу

Сүзгі/азайту D

Үлкен асуға жеткенде

интегралдық жинақтау

Антивирус қосыңыз

Әлсіз шақыру / Күшті шақыру

ƏЛСІЗ:"PID өсімдерін беріңіз."(Қай жүйе? Тəртіп қалай? Өлшемдер бар ма? Кездейсоқ сандар келеді.)КҮШІ:"Мен тұрақты ток қозғалтқышының жылдамдығын басқару үшін PID реттеп жатырмын. Қазіргі уақытта Kp=2, Ki=0,5, Kd=0. Ол қадам кірісінде 35%-дан асып түседі және ол үлкен секундтық ампқа жеткенде, S ату үшін көп уақыт қажет; 100 Гц болып табылады. «Оны қай бағытқа өзгерту керектігін ұсыныңыз және асып кетудің интегралды үзіліс екенін қалай тексеру керектігін айтыңыз».

Шағын корпус

Басқару инженері Керем экструдердің температуралық реттеуін реттейді. AI ұсынған жетістіктермен жүйе мақсатқа тез жетеді, бірақ әрбір орнатылған өзгертуде ол үлкен асып кетуді жасайды және баяу орналасады. Керем АИ-ге симптомды түсіндіреді; AI интегралды өшіруден күдіктенеді, себебі қыздырғыш біраз уақыт толық қуатта (қаныққан) қалады. Керем PID кодына анти-windup қосады және асып кету айтарлықтай төмендейді. Бірақ қазір жылытқыштың шығысында аздап жыпылықтау бар; Ол мұны температура сенсорының шуды күшейтетін D терминіне жатқызады және туындыға төмен жиілікті сүзгіні қосады. Соңында, ол Ziegler-Nichols көмегімен табыстарды шамамен растайды және эксперименталды дәл реттеуді орындайды. AI-да жылдам диагноз бар; Бірақ Керем әрбір түзетуді нақты қадамдық реакцияны өлшеу арқылы растады — бұрылу түзетілді ме, әлде жыпылықтау жойылды ма, оны тек графикалық түрде көруге болатын.

Жалпы қателер

  • PID-ге шығыс қанықтығы мен анти-желпі қосылмады және жетек шегінде үлкен асып кету орын алды.
  • Шуды өлшеу туындысынан туындыны алу және жетекті дірілдеу.
  • dt тұрақты деп есептесек, іріктеу кезеңі өзгереді.
  • Қауіпсіздік шараларынсыз жабдықта Зиглер-Никольс тербеліс сынамасын орындау.
  • Жүйеге арнайы растаусыз AI арқылы алынған табысты «түпкілікті» ретінде қабылдау.
  • Өте үлкен қадамдармен бір күшейтуді өзгерту және жүйені тұрақсыздыққа итермелеу.

Қысқаша айтқанда

  • PID; Ол P (ағымдағы қате), I (жинақталған қате), D (қатенің өзгеру жылдамдығы) әрекеттеседі.
  • Өріс PID шығыс қанықтылығын, анти-windup және туынды сүзгіні қамтуы керек.
  • Интегралды орама үлкен асып кету, туынды шу жетек дірілін тудырады.
  • Зиглер-Никольс ұтуды бастайды; Ол аппараттық құралдағы қауіпсіздік шараларымен жүзеге асырылады.
  • AI диагнозда симптомнан себепке қарай жылдам; Түзету өлшеу арқылы тексеріледі.
  • dt нақты өлшенген; Табыс өзгерістері шағын қадамдармен және бақылаумен жүзеге асырылады.

Қолданбалы тапсырма

Жүйені таңдаңыз (шынайы қозғалтқыш/жылытқыш немесе Python-дағы қарапайым бірінші/екінші ретті үлгі) және AI қанықтығы + анти-виндуп бар PID класын жасаңыз. Содан кейін: (1) тек P-ден бастап және Kp арттыру арқылы тербеліс әрекетін бақылаңыз, (2) тұрақты қатені жою үшін Ki қосыңыз және асып кетудің қалай ұлғайғанын көріңіз, (3) қарсы желді қосу және өшіру арқылы үлкен асып кету әсерін салыстырыңыз. Әр қадамда қадамдық жауап сызбасын сызыңыз және қай пайданың қандай әрекетті өзгертетінін ескеріңіз. Зиглер-Никольстың табыстарын өзіңіз тапқан табыстармен салыстырыңыз.