Interactieve simulatorBeginner

PID-regelaarsimulator voor regelsystemen in de robotica

Stem proportionele, integrale en differentiële versterkingen af en visualiseer respons, regelfout, verzadiging en storingen in een PID-regelaarsimulator.

Categorie
Regeltechniek
Tijd
60–120 min
Platform
Browser · Arduino
Technisch schema: PID-regelaarsimulator voor regelsystemen in de roboticaRESPONSETIMESETPOINT

01 / Begin hier

Inleiding

PID-regeling komt overal in de robotica voor: wielsnelheid, koers, gewrichtspositie, temperatuur en balanserende systemen steunen allemaal op terugkoppeling. Dit project maakt van de regelaar een zichtbaar experiment. Verander één versterking, stoort het proces en verbind de resulterende curve met de code die op een Arduino of een ingebedde controller zou kunnen draaien.

Live lab / Deterministic sampled control loop

PID controller simulator

Drive a second-order plant toward a setpoint. Tune each gain, inject a load, and watch response, error, and control effort in real time.

Browser native
This simulator plots a PID controller's response, error, and control effort over time. Use the controls below to run it, or read the full theory and algorithm after this lab.

Three stacked plots share a scrolling time axis: measured output against the setpoint line, tracking error around zero, and control effort inside the shaded actuator-limit band.

Simulation

Paused. Press Start or Step to begin.

Setpoint & timing
PID gains
Disturbance
Setpoint
1.00
Measured
0.000
Error
1.000
Control
0.000
Overshoot
0%
Steady-state error
1.000

Keyboard: focus the plots, then use Space to run/pause, N to step, R to reset, G to toggle the load, and F for full screen.

Bediening

De simulator biedt de setpoint, proportionele, integrale en differentiële versterkingen, het bemonsteringsinterval, de actuatorgrens en de grootte van de storing. Uitgelijnde grafieken tonen de setpoint, de gemeten uitvoer, de regelfout en de regelinspanning. Reset wist het geheugen van de regelaar zodat experimenten vergelijkbaar blijven.

Theorie

Een terugkoppelingsregelaar berekent de regelfout als setpoint minus meting. Het proportionele aandeel reageert onmiddellijk, het integrale aandeel bouwt aanhoudende fout op en het differentiële aandeel reageert op de veranderingssnelheid. De som ervan wordt het commando voor de actuator.

De prestaties van de regelaar worden begrensd door het proces. Te traag bemonsteren verbergt beweging; doorbuiten de actuatorgrens werken leidt tot verzadiging; ruisachtige metingen maken een ongefilterde differentiële term instabiel. Afstellen is dus een experiment dat zowel regelaar als systeem omvat.

Grafiek van de staprespons die drie afstellingen van een tweede-ordesysteem vergelijkt. Een curve met hoge versterking overschwingt de setpoint en oscilleert voordat hij tot rust komt. Een goed afgestelde curve stijgt snel met lichte overschwing en komt snel tot rust. Een curve met lage versterking stijgt langzaam en overschwingt nooit.
Demping bepaalt de vorm van de staprespons: te veel versterking overschwingt en naverkt, te weinig is traag, en een gebalanceerde afstelling komt snel tot rust. SVG downloaden

Algoritme

  1. Lees de meting met een vast interval en bereken de regelfout.
  2. Bouw een begrensde integraal op met de werkelijke tijdstap.
  3. Schat de differentiaal uit de meting of de fout en pas de juiste filtering toe.
  4. Tel de drie gewogen termen op en begrens het resultaat tot het bereik van de actuator.
  5. Voer het commando uit, sla de vorige sample op en leg de meetwaarden vast.
  6. Reset de integraal en de historie wanneer de regelmodus of het proces wezenlijk verandert.

Broncode

Deze implementatie bevat een eenvoudige anti-windupvoorwaarde:

float updatePid(float setpoint, float measured, float dt) {
  const float error = setpoint - measured;
  const float derivative = (error - previousError) / dt;
  const float candidateIntegral = integral + error * dt;
  const float raw = kp * error + ki * candidateIntegral + kd * derivative;

  const float output = constrain(raw, outputMin, outputMax);
  if (raw == output) integral = candidateIntegral;
  previousError = error;
  return output;
}

Industriële regelaars definiëren ook gedrag voor ongeldige metingen, timeroverschrijdingen, modusovergangen en actuatorstoringen.

Aannames en hardwareverschillen

Het proces hier is een schoon tweede-ordemodel met bekende massa, demping en vertraging die je met de schuifregelaars instelt — geen echte motor met wrijving, dode zone, koppel dat afneemt bij toenemende snelheid en een driver die opwarmt. Het bemonsteringsinterval is per constructie vast, waardoor de differentiële term netjes blijft; op een Arduino zorgen delay() of andere blokkerende taken voor een schokkend interval en gedraagt de D-term zich niet naar behoren, ook als de versterkingen ongewijzigd blijven. Verzadiging van de actuator is gemodelleerd als een harde begrenzing met anti-windup, maar een fysiek systeem heeft ook stroomgrenzen, spanningsdaling en warmte die de grens tijdens het bedrijf veranderen. Stel de vorm hier af en verifieer vervolgens op hardware, waar het proces slechts bij benadering bekend is.

Schakelschema

De terugkoppelsensor geeft de werkelijke uitvoer door; hij vervangt geen stroombegrenzing en geen hardwarematige veiligheidsstop. De regelaar vergelijkt de setpoint met de geconditioneerde sensorwaarde en stuurt daarna de actuator aan via een PWM-trap die op de belasting is gedimensioneerd.

Blokschema van een gesloten PID-terugkoppeling. De setpoint gaat naar een optelpunt, de resulterende regelfout voedt de PID-regelaar, de uitvoer daarvan stuurt een actuator en een PWM-trap aan, die het proces aandrijft, en een sensor meet de procesuitvoer en voert die met een minteken terug naar het optelpunt.
De gesloten PID-regelkring: de sensor sluit het pad van de procesuitvoer terug naar het optelpunt, waar de terugkoppeling van de setpoint wordt afgetrokken. SVG downloaden

Begeleide experimenten

Over overschwing lezen is niet hetzelfde als die bewust opwekken. Elk experiment hieronder duurt een paar minuten en isoleert precies één effect.

1. Bepaal de kritische versterking

Zet Ki en Kd op nul. Verhoog Kp tot de uitvoer oscilleert met een constante amplitude — noch groeiend noch afnemend. Noteer die versterking (Ku) en de oscillatieperiode (Tu).

Die twee getallen zijn alles wat je nodig heeft voor een eerste afstelling:

Regelaar Kp Ki Kd
PID (klassiek) 0,6 Ku 1,2 Ku / Tu 0,075 Ku Tu
PID (geen overschwing) 0,2 Ku 0,4 Ku / Tu 0,066 Ku Tu

Typ die waarden in en vergelijk ze. De klassieke rij is agressief en overschwingt 20–40%; de tweede komt zonder overschwing aan en doet er langer over. Geen van beide is “juist” — het zijn verschillende antwoorden op verschillende eisen, en dat is precies het punt.

2. Observeer integralewindup

Stel de actuatorgrens laag in — rond 20% van het bereik — en geef dan een grote setpointstap. Kijk naar de grafiek van de regelinspanning: die verzadigt onmiddellijk en blijft daar, terwijl de integraal fout blijft opbouwen die hij niet kan verwerken. Wanneer de uitvoer eindelijk de setpoint bereikt, ontrolt al die opgeslagen actie en zeilt het systeem er ver voorbij.

Verhoog nu de actuatorgrens en herhaal met dezelfde versterkingen. De overschwing verdwijnt grotendeels. Er is niets aan de regelaar veranderd — en dat is de les. Windup is een eigenschap van de interactie tussen de regelaar en een verzadigende actuator, niet van de versterkingen.

3. Bewijs dat vertraging, niet ruis, de regelkring doodt

Verhoog het bemonsteringsinterval vanaf zijn laagste waarde in stappen en houd de versterkingen vast. De respons degradeert lang voordat de grafiek er ruisachtig uitziet: de overschwing groeit, er ontstaat oscillatie en vervolgens wordt het systeem instabiel.

Bemonsteringsinterval Wat je ziet bij een verder goede afstelling
5 ms Schoon, zoals afgesteld
20 ms Iets meer overschwing
50 ms Zichtbare navering
100 ms Aanhoudende oscillatie
200 ms Instabiel

Daarom verbetert het verwijderen van een delay() uit de regelkring van een robot het volgvermogen vaak meer dan welke afstelling ook. Verouderde informatie kan niet door een versterking worden teruggewonnen.

4. Voer ruis toe aan de differentiële term

Verhoog de grootte van de storing terwijl Kd op nul staat en verhoog daarna Kd. Het spoor van de regelinspanning wordt al geserreerd lang voordat de uitvoer dat is — je ziet differentiëren hoogfrequente inhoud versterken, precies zoals het moet.

Dat gedrag is de reden waarom mensen concluderen dat D nutteloos is en het op nul zetten. De werkelijke oplossing ligt verderop in de signaalketen: filter de meting, of filter de differentiële term zelf.

Wat je moet zien

Instelling Verwachte vorm Als je iets anders ziet
Kp alleen, laag Stijgt langzaam, blijft onder de setpoint —
Kp alleen, hoog Overschwingt, naverkt, vervalt Groeiende oscillatie betekent dat je voorbij Ku zit
Kp + Kd Snelle stijging, weinig overschwing, kleine stationaire offset Ruwe regelinspanning betekent dat D ruis versterkt
Kp + Ki Bereikt de setpoint exact, maar langzamer Doorvaren betekent windup of te veel Ki
Volledige PID Snel, minimale overschwing, geen offset —

De stationaire offset met P en D maar zonder I is de moeite waard één keer bewust op te wekken. Het is de duidelijkste demonstratie van waar de integrale term eigenlijk voor dient: proportioneel regelen heeft een niet-nul regelfout nodig om überhaupt uitvoer te produceren, dus het resultaat blijft noodzakelijk net onder de setpoint staan.

Naar de hardware

Versterkingen die je hier vindt zijn een startpunt, geen overdracht. Wat perfect overgaat is de procedure; wat niet overgaat zijn de getallen, want die beschrijven dit proces.

Dit lab Een echte robot
Het bemonsteringsinterval is exact Schokkend tenzij je dt meet en doorgeeft
Het proces is een schoon tweede-ordemodel Wrijving, dode zone, koppel dat afneemt bij snelheid
De actuatorgrens is een harde begrenzing Ook stroomgrenzen, spanningsdaling en warmte
Geen sensorruis tenzij je die toevoegt Altijd ruis, en zelden Gaussisch
Het proces verandert nooit Batterijspanning, belasting en temperatuur veranderen het allemaal

De laatste regel zorgt in de praktijk voor de meeste verwarring. Een afstelling die perfect is op volle cellen zal traag zijn op lege, omdat hetzelfde commando nu minder koppel oplevert. Dat is geen falen van de methode — versterkingen zijn eigenschappen van het proces, en het proces is verplaatst. De professionele antwoorden zijn een snelheidsregelkring eronder, of gain scheduling (meerdere afstellingen bewaren en op basis van snelheid, belasting of accuspanning ertussen wisselen). Werk de volledige procedure door via een PID-regelaar afstemmen en breng het daarna naar het lijnvolgerlab, waar het proces tegenspartij.

Hardwarechecklist

Componenten

  • Microcontroller met een stabiele timer
  • Gemeten proces, zoals een gelijkstroommotor of servo
  • Encoder, potentiometer of een andere terugkoppelsensor
  • Uitgangstrap die geschikt is voor de actuator
  • Gestabiliseerde stroombron en noodstop

Verken de graaf

Waar deze simulator wordt gebruikt

De projecten, leerroutes en tutorials die op dit lab voortbouwen.

Verder bouwen

Hulpmiddelen downloaden

Gebruik deze naslag op de pagina terwijl je het project doorwerkt. Downloadbare projectpakketten komen er pas bij nadat hun broncode en versie zijn gepubliceerd.

Veelgestelde vragen

Veelgestelde vragen

Wat moet ik het eerst afstellen?

Begin met integrale en differentiële versterkingen op nul. Verhoog de proportionele versterking tot de respons nuttig maar oscillerend is en voeg dan differentiële demping toe. Voeg de integrale versterking als laatste toe en alleen als er een reproduceerbare stationaire fout overblijft. Een gangbare vuistregel: P levert snelheid, D vermindert overschwing en I neemt de offset weg — voeg ze in die volgorde toe, één voor één.

Hoe voorkom ik dat een PID-regelaar overschwingt?

Overschwing komt meestal door te veel proportionele of integrale actie. Verlaag eerst de proportionele versterking en verhoog daarna de differentiële versterking om de nadering te dempen. Als overschwing pas optreedt nadat de actuator zijn grens bereikt, is de oorzaak integralewindup in plaats van de versterking, en moet je de integrale term begrenzen.

Waarom oscilleert mijn PID-regelaar?

Aanhoudende oscillatie betekent vrijwel altijd dat de proportionele versterking te hoog is voor de regelkring, of dat de differentiële term te zwak is om die te dempen. Halveer de proportionele versterking en voeg daarna differentiële versterking toe. Oscillatie kan ook ontstaan uit een regelkring die te traag of met een wisselend interval draait, waardoor de differentiële term onbetrouwbaar wordt.

Wat is integralewindup en hoe voorkom ik die?

Windup ontstaat wanneer de actuator verzadigt — een motor op volle snelheid, een klep volledig open — terwijl de opgebouwde integrale fout blijft groeien, zodat de regelaar ernstig overschwingt zodra de fout omkeert. Voorkom dat met begrenzen (stop met toevoegen aan de integraal zolang de uitvoer verzadigd is) of terugberekening (laat de integraal aflopen op basis van het verschil tussen gevraagde en geleverde uitvoer).

Hoe snel moet een PID-regelkring draaien?

De regelkring moet het systeem dat hij regelt meerdere malen sneller bemonsteren, met een vast interval. Vermijd op een microcontroller lange blokkerende vertragingen: een variabele of trage regelkring verandert de effectieve integrale en differentiële term, ook als de versterkingen ongewijzigd blijven, en dat is een veelvoorkomende verborgen oorzaak van slechte afstelling.

Kan ik PID alleen met de P- en D-term gebruiken?

Ja. PD-regeling (zonder integraal) is gangbaar als een kleine stationaire fout acceptabel is en je windup wilt vermijden, en PI-regeling (zonder differentiaal) past bij ruisachtige signalen waar een differentiële term ruis zou versterken. Gebruik alleen de termen die het probleem nodig heeft in plaats van altijd volledige PID te draaien.

Wat is het verschil tussen handmatig afstellen en Ziegler–Nichols?

Handmatig afstellen past één versterking tegelijk aan terwijl je de respons volgt, wat intuïtief en veilig is om te leren. Ziegler–Nichols is een formulegebaseerde methode die versterkingen afleidt uit het punt van aanhoudende oscillatie; die is sneller maar vaak agressief, dus de uitkomst is meestal een startpunt dat je met de hand verder aanscherpt.

Verder lezen

Bronnen

Gezaghebbende bronnen om dieper te gaan dan het afgebakende leermodel van deze simulator.