ඒකකය 5 / 9

පාලන ඇල්ගොරිතම: PID සහ AI සහාය සුසර කිරීම

ලාභ:

  • PID පාලකයේ P, I, D නියමයන් සහ බලපෑම් නිවැරදි සන්දර්භය සමඟ AI වෙත පැහැදිලි කර යෙදීමේ හැකියාව
  • AI ආධාරයෙන් පියවරෙන් පියවර Ziegler-Nichols සහ පර්යේෂණාත්මක සුසර කිරීමේ ක්‍රම සිදු කිරීමේ හැකියාව
  • AI නිර්දේශයන් තුළ සමෝධානික සුළං, ව්‍යුත්පන්න ශබ්දය වැනි PID උගුල් හඳුනා ගැනීමට සහ ඉවත් කිරීමට හැකියාව

උඳුනක උෂ්ණත්වය නියතව තබා ගැනීම, මෝටරයක වේගය අපේක්ෂිත අගයකින් ධාවනය කිරීම, ඩ්‍රෝන යානයක කෝණය සමතුලිත කිරීම; ඔවුන් සියල්ලන්ගේම හදවතේ ඇත්තේ පාලන ඇල්ගොරිතමයකි. මේවායින් වඩාත් සුලභ වන්නේ කර්මාන්තයේ කොඳු නාරටිය වන PID පාලකයයි. PID; එය සරල, ශක්තිමත් සහ පුළුල් පරාසයක ගැටළු මත ක්රියා කරයි. නමුත් "සරල" යන්නෙන් අදහස් වන්නේ "සුසර කිරීමට පහසු" යන්න නොවේ: වැරදි ලෙස සකසා ඇති PID දෝලනය වේ, ඉක්මවා යයි, ප්‍රමාද වී වාඩි වනු ඇත, හෝ සම්පූර්ණයෙන්ම අස්ථායී වේ. කෘතිම බුද්ධිය මෙහි වටිනා සහායකයෙකි: එය PID නියමයන් පැහැදිලි කරයි, සුසර කිරීමේ ක්‍රම හරහා මඟ පෙන්වයි, සාමාන්‍ය අන්තරායන් හඳුනාගෙන සුසර කිරීමේ කේතය ලියයි. කෙසේ වෙතත්, අවසාන ගැලපීම සිදු කරනු ලබන්නේ ඔබේ පද්ධතියේ භෞතික හැසිරීම දෙස බැලීමෙන් වන අතර ස්ථායීතාවය තීරණය ඉංජිනේරුවරයාට අයත් වේ. මෙම ඒකකය තුළ අපි AI සමඟ PID උගුල් ස්ථාපනය, සුසර කිරීම සහ සත්‍යාපනය කරන්නේ කෙසේද යන්න ආවරණය කරයි.

PID හි කොන්දේසි තුනක්

PID දෝෂ සංඥාවට (e = ඉලක්කය - මනින ලද) ආකාර තුනකින් ප්‍රතිචාර දක්වයි:

වාරය

ඔහු බලන්නේ කුමක් ද?

බලපෑම

අතිශයින්

P (සමානුපාතික)

වත්මන් දෝෂය

වේගවත් ප්රතිචාර

දෝලනය, ස්ථිර දෝෂය

මම (අනුකලිත)

සමුච්චිත අතීත දෝෂය

ස්ථිර දෝෂය නැවත සකසයි

overshoot, windup, දෝලනය

D (ව්යුත්පන්න)

දෝෂ වෙනස් වීමේ වේගය

ඩැම්ප් කිරීම overshoot අඩු කරයි

ශබ්දය වැඩි කරන්න

වාචික සාරාංශය: 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.0 prev.0 self. ගණනය කිරීම (ස්වයං, ඉලක්කය, මනින ලද, dt): දෝෂය = ඉලක්කය - මනින ලද # P p = self.Kp * දෝෂය # I -- self.integral with windup protection += error * dt i = self.Ki * self.integral # D -- ව්‍යුත්පන්න ශබ්ද සංවේදී d = self.Kd * (දෝෂය - ස්වයංක්‍රීය. පෙර) p + i + d # ප්‍රතිදානය සංතෘප්ත කර ප්‍රතිදානය නම් වින්ඩ්අප් සීමා කරන්න > self.output_max: output = self.out_max self.integral -= දෝෂය * dt # anti-windup: අනුකලිත elif ප්‍රතිදානය අවලංගු කරන්න < self.output_min: output = self.output_min self.integral -= ප්‍රතිදානය දෝෂය * d

මෙම කේතය "පුහුණු PID" නොවේ, නමුත් නිෂ්පාදන තර්කයට ආසන්න ඇටසැකිල්ලකි: එය ප්රතිදාන සන්තෘප්තිය සහ ප්රති-වින්ඩ්අප් ඇතුළත් වේ. AI විසින් ලබා දෙන බොහෝ සරල PID මෙම ආරක්ෂණ දෙක මග හරියි; ඒවා නොමැතිව, ක්‍රියාකරු එහි සීමාවට ළඟා වූ විට, අනුකලනය ඉදිමී ඇති අතර පද්ධතිය අනපේක්ෂිත ලෙස ඉක්මවා යයි.

ඉඟිය: PID සඳහා AI ගෙන් විමසන විට "ප්‍රතිදාන සන්තෘප්තිය සහ ප්‍රති-වින්ඩ්අප් එක් කරන්න, ව්‍යුත්පන්න පදයට මැනීම මත ව්‍යුත්පන්න යොදන්න" යැයි පවසන්න. මෙම එකතු කිරීම් තුන පෙළපොත් PID ක්ෂේත්‍ර PID බවට පරිවර්තනය කරයි.

සමෝධානික සුළං සහ ව්‍යුත්පන්න ශබ්දය

PID අසාර්ථක වීමට වඩාත් පොදු හේතු වන්නේ සම්භාව්‍ය අන්තරායන් දෙකකි:

සමෝධානික සුළං: ක්‍රියාකරු සන්තෘප්ත වන විට (උදා: මෝටරය දැනටමත් සම්පූර්ණ බලයෙන් පවතී) දෝෂය පවතින අතර අනුකලිත පදය දිගටම වර්ධනය වේ. මෙම උද්ධමනය වූ අනුකලනය පද්ධතිය ඉලක්කයට ළඟා වූ විට විශාල අධිප්රමාණයකට මග පාදයි. විසඳුම: ප්‍රතිදානය සංතෘප්ත වූ විට අනුකලනය නැවැත්වීම හෝ පෙරළීම (ප්‍රති-වින්ඩ්අප්, ඉහත කේතයේ නිරූපණය කර ඇත).

ව්‍යුත්පන්න ශබ්දය: D පදය දෝෂයේ ව්‍යුත්පන්නය ගනී; ඝෝෂාකාරී මිනුමක ව්‍යුත්පන්නය වඩා ඝෝෂාකාරී වන අතර ක්‍රියාකාරකය කම්පනය කරයි. විසඳුම්: මිනුම් වලින් ව්‍යුත්පන්නය ගැනීම (දෝෂය වෙනුවට මිණුම් ව්‍යුත්පන්න), ව්‍යුත්පන්න පදයට අඩු සමත් පෙරහනක් එක් කිරීම.

# ව්‍යුත්පන්න ශබ්දය අඩු කිරීම: මිනුම් ව්‍යුත්පන්න + filterd_raw = -(මැන - self.previous_measured) / dt දෝෂය වෙනුවට

AI මෙම අන්තරායන් හඳුනා ගැනීමට දක්ෂයි; ඔබ "මගේ PID ඉලක්කයට ළඟා වූ විට විශාල ලෙස ඉක්මවා යයි" යැයි ඔබ පවසන්නේ නම්, එය වින්ඩ්අප් නිර්දේශ කරයි. නමුත් නිවැරදි කිරීම ඔබේ පද්ධතියේ ක්‍රියාත්මක වේද යන්න මැන බැලීමෙන් ඔබ සත්‍යාපනය කරයි.

Ziegler-Nichols සමඟින් සැකසීම

මුල සිට ලාභ (Kp, Ki, Kd) සොයා ගැනීම සඳහා සම්භාව්ය ක්රමයක් Ziegler-Nichols වේ. එහි සාරය: P සමඟ පමණක් ආරම්භ කර පද්ධතිය තිරසාර දෝලනය වන තුරු Kp වැඩි කිරීම; මෙම අවස්ථාවේදී තීරනාත්මක ලාභය Ku සහ දෝලන කාලය Tu සමඟ වගුවෙන් Kp, Ki, Kd ගණනය කරන්න.

පාලකය

kp

Ti

Td

පී.

0.5·කු

පී.අයි.

0.45·කු

Tu/1.2

PID

0.6·කු

Tu/2

Tu/8

Ziegler-Nichols පියවර (AI විසින් සිදු කිරීමට සැලසුම්):1. Ki=0, Kd=0 ගන්න. P.2 ධාවනය කරන්න. ස්ථායී, තිරසාර දෝලනය ආරම්භ වන තෙක් Kp සෙමින් වැඩි කරන්න.3. මෙම Kp = Ku (විවේචනාත්මක ලාභය), දෝලනය වීමේ කාලය = Tu.4. වගුවෙන් Kp, Ti, Td ගණනය කරන්න; කි = Kp/Ti, Kd = Kp*Td.5. මෙම අගයන් සමඟ ආරම්භ කරන්න, පසුව පර්යේෂණාත්මක වෙනස් කිරීම් කරන්න.

අවවාදයයි: Ziegler-Nichols විසින් හිතාමතාම පද්ධතිය එහි ස්ථායීතා සීමාවට (තිරසාර දෝලනය) ගෙන එයි. සැබෑ දෘඪාංග මත මෙය සිදු කරන විට යාන්ත්රික වික්රියාව, අධි ධාරාව සහ අන්තරාය ඇතිවීමේ අවදානමක් ඇත; හැකි නම්, එය මුලින්ම simulation කරන්න, පසුව අඩු බල සීමාවකින් සහ දෘඪාංගයේ E-stop සමඟ වැඩ කරන්න. AI විසින් යෝජනා කරන ලද Ku යනු ආරම්භක ලක්ෂ්‍යයකි, එය ඔබගේ පද්ධතිය තුල මනිනු ලබන අතර සත්‍යාපනය කෙරේ.

AI-සහාය රෝග විනිශ්චය

ඔබට එය AI වෙත විස්තර කිරීමෙන් PID හැසිරීම හඳුනා ගත හැක. රෝග ලක්ෂණය → විය හැකි හේතු සිතියම්ගත කිරීම:

රෝග ලක්ෂණය

විය හැකි හේතුව

AI යෝජනා කරන දිශාව

මන්දගාමී වාඩි වීම

Kp/Ki අඩු

kp වැඩි කරන්න

ස්ථිර දෝෂයක්

මම නොපැමිණ හෝ ඉතා පහත් ය

කි එකතු කිරීම / වැඩි කිරීම

Overshoot + දෝලනය

Kp/Ki ඉහළ, D නැත

Kd එකතු කරන්න, Ki අඩු කරන්න

ක්‍රියාකරු වෙව්ලනවා

ව්යුත්පන්න ශබ්දය

ඩී පෙරහන/අඩු කරන්න

ඔබ විශාල ඉක්මවා යන විට

සමෝධානික සුළං

ප්රති-සුළං එකතු කරන්න

දුර්වල ක්ෂණික / ශක්තිමත් ක්ෂණික

දුර්වල:"PID වාසි ලබා දෙන්න."(මොන ක්‍රමයද? හැසිරීම කෙසේද? මිනුම් තිබේද? සසම්භාවී අංක පැමිණේ.)STRONG:"මම DC මෝටර් වේග පාලනයකට PID සකසමින් සිටිමි. දැනට, Kp=2, Ki=0.5, Kd=0. එය පියවර ආදානය මත 35% ඉක්මවා යන අතර, එය දෙවන ඉලක්කයට ළඟා වන විට විශාල කාලයක් ගත වේ. 100 Hz මෙම රෝග ලක්ෂණ වලින් ඇති විය හැකි හේතු ලැයිස්තුගත කරන්න, "මම එය වෙනස් කළ යුත්තේ කුමන දිශාවටද යන්න යෝජනා කරන්න සහ අධිප්‍රමාණය අනුකලනය වේද යන්න පරීක්ෂා කරන්නේ කෙසේදැයි මට කියන්න."

කුඩා නඩුව

පාලක ඉංජිනේරු Kerem extruder හි උෂ්ණත්ව පාලනය සකස් කරයි. AI විසින් යෝජනා කරන ලද ජයග්‍රහණ සමඟින්, පද්ධතිය ඉක්මනින් ඉලක්කයට ළඟා වේ, නමුත් එක් එක් කට්ටලය වෙනස් කිරීමේදී එය විශාල ප්‍රමාණයකට වඩා වැඩි වී සෙමෙන් සෙමෙන් බැස යයි. Kerem AI වෙත රෝග ලක්ෂණය පැහැදිලි කරයි; තාපකය සම්පූර්ණ බලයෙන් (සංතෘප්ත) ටික වේලාවක් පවතින නිසා AI අනුකලිත සුළං සැක කරයි. කෙරෙම් PID කේතයට ප්‍රති-සුළං එකතු කරන අතර overshoot සැලකිය යුතු ලෙස අඩු වේ. නමුත් දැන් හීටර් අලෙවිසැලේ සුළු දැල්වීමක් තිබේ; ඔහු මෙය D පදයට ආරෝපණය කරයි උෂ්ණත්ව සංවේදක ශබ්දය විස්තාරණය කරන අතර ව්‍යුත්පන්නයට අඩු-පාස් පෙරහනක් එක් කරයි. අවසාන වශයෙන්, එය Ziegler-Nichols සමඟ ඇති ජයග්‍රහණ දළ වශයෙන් වලංගු කරන අතර පර්යේෂණාත්මක සියුම් සුසර කිරීම සිදු කරයි. AI වේගවත් රෝග විනිශ්චය ඇත; නමුත් කෙරෙම් සෑම නිවැරදි කිරීමක්ම සත්‍ය පියවර ප්‍රතිචාරය මැනීම මගින් තහවුරු කළේය - සුළඟ නිවැරදි කර තිබේද නැතහොත් දැල්වීම පහව ගියද, එය දැකිය හැක්කේ චිත්‍රක ලෙස පමණි.

පොදු වැරදි

  • PID වෙත නිමැවුම් සන්තෘප්තිය සහ ප්‍රති-සුළං එකතු කිරීමට අපොහොසත් වීම සහ ක්‍රියාකාරක සීමාවේ විශාල ප්‍රමාණය ඉක්මවා යාමක් අත්විඳීම.
  • ඝෝෂාකාරී මිනුම් ව්‍යුත්පන්නයෙන් ව්‍යුත්පන්නය ගැනීම සහ ක්‍රියාකාරකය කම්පනය කිරීම.
  • dt නියත යැයි උපකල්පනය කරන අතර, නියැදි කාලය වෙනස් වේ.
  • ආරක්ෂිත පූර්වාරක්ෂාවන් නොමැතිව දෘඪාංග මත Ziegler-Nichols දෝලන පරීක්ෂණය සිදු කිරීම.
  • පද්ධති-විශේෂිත සත්‍යාපනයකින් තොරව AI-උත්පාදිත ඉපැයීම් "අවසාන" ලෙස පිළිගැනීම.
  • ඉතා විශාල පියවරයන් සමඟ තනි ලාභයක් වෙනස් කිරීම සහ පද්ධතිය අස්ථාවරත්වයට තල්ලු කිරීම.

සාරාංශයක් ලෙස

  • PID; එය P (වත්මන් දෝෂය), I (සමුච්චිත දෝෂය), D (දෝෂය වෙනස් වීමේ අනුපාතය) සමඟ ප්‍රතික්‍රියා කරයි.
  • ක්ෂේත්‍ර PID හි ප්‍රතිදාන සන්තෘප්තිය, ප්‍රති-වින්ඩ්අප් සහ ව්‍යුත්පන්න පෙරහන ඇතුළත් විය යුතුය.
  • සමෝධානික සුළං විශාල ප්‍රමාණය ඉක්මවා යාම, ව්‍යුත්පන්න ශබ්දය ක්‍රියාකාරක කම්පනය ඇති කරයි.
  • Ziegler-Nichols ආරම්භය ලබා දෙයි; දෘඪාංගයේ ආරක්ෂක පියවරයන් සමඟ එය ක්රියාත්මක වේ.
  • AI රෝග ලක්ෂණ සිට හේතුව දක්වා රෝග විනිශ්චය වේගවත් වේ; නිවැරදි කිරීම මැනීම මගින් තහවුරු කරනු ලැබේ.
  • dt සැබෑ මනින ලද; ඉපැයීම් වෙනස්කම් කුඩා පියවරයන් සහ නිරීක්ෂණ වලින් සිදු කෙරේ.

යෙදුම් කාර්යය

පද්ධතියක් තෝරන්න (සැබෑ මෝටරයක්/හීටරයක් ​​හෝ පයිතන් හි සරල පළමු/දෙවන අනුපිළිවෙල ආකෘතියක්) සහ සන්තෘප්තිය + ප්‍රති-වින්ඩ්අප් සහිත PID පන්තියක් ජනනය කිරීමට AI සලස්වන්න. ඉන්පසු: (1) P පමණක් ආරම්භ කර Kp වැඩි කිරීමෙන් දෝලනය වන හැසිරීම නිරීක්ෂණය කරන්න, (2) ස්ථිර දෝෂය ඉවත් කිරීමට Ki එකතු කරන්න සහ overshoot වැඩි වන ආකාරය බලන්න, (3) anti-windup සක්‍රිය සහ අක්‍රිය කිරීමෙන් විශාල overshoot මත ඇති බලපෑම සංසන්දනය කරන්න. සෑම පියවරකදීම පියවර ප්‍රතිචාරය සැලසුම් කර කුමන හැසිරීම් වෙනස් වේද යන්න සටහන් කරන්න. Ziegler-Nichols වෙතින් ලැබෙන ජයග්‍රහණ ඔබ විසින්ම සොයාගත් ජයග්‍රහණ සමඟ සසඳන්න.