BlockWerk Handleidingen

Omgekeerde slinger op een karretje

Een slinger die aan een scharnier hangt is saai: geef hem een duw en hij slingert rustig terug. Zet dezelfde slinger rechtop op een karretje dat alleen zijwaarts kan bewegen, en het wordt hét ultieme meesterwerk van de regeltechniek. Het systeem kan uit zichzelf niet stilstaan. Zonder ingrijpen valt hij om, en hij valt sneller naarmate hij verder gekanteld is. De enige manier om hem rechtop te houden is door het karretje onder de vallende stok te sturen.

Dit maakt het een perfecte casestudy. Vrijwel elk fundamenteel concept uit de klassieke regeltechniek komt hier onverbiddelijk aan het licht: een inherent instabiel systeem, een regelaar die moet anticiperen vóórdat de fout groeit, het vitale verschil tussen reageren op een positiefout en dempen op snelheid, en het effect van hardware-vertragingen.

De fysische opstelling

Een karretje met massa MM beweegt over een horizontale baan, met viskeuze wrijving bb. Een staaf met massa mm is scharnierend bevestigd aan het karretje en kan vrij roteren in het verticale vlak. De stuurkracht uu wordt horizontaal op het karretje uitgeoefend — dit is ons enige regelbare stuursignaal. De hoek θ\theta wordt gemeten ten opzichte van de opwaartse verticaal: θ=0\theta = 0 is perfect rechtopstaand evenwicht, en een positieve θ\theta betekent dat de stok naar rechts helt.

SymboolBetekenisWaarde
MMMassa karretje0,5 kg0{,}5\ \text{kg}
mmMassa slinger0,2 kg0{,}2\ \text{kg}
bbWrijvingscoëfficiënt karretje0,1 N⋅s/m0{,}1\ \text{N}\cdot\text{s/m}
llLengte van scharnier tot zwaartepunt0,3 m0{,}3\ \text{m}
IITraagheidsmoment slinger om zwaartepunt13ml2=0,006 kg⋅m2\tfrac{1}{3}ml^2 = 0{,}006\ \text{kg}\cdot\text{m}^2
ggZwaartekrachtsversnelling9,81 m/s29{,}81\ \text{m/s}^2

Bewegingsvergelijkingen

Beschouw het karretje en de slinger afzonderlijk. Noem de horizontale reactiekracht in het scharnierpunt NN en de verticale kracht PP.

De tweede wet van Newton voor het karretje alleen langs de baan:

Mx¨+bx˙+N=uM\ddot{x} + b\dot{x} + N = u

Het zwaartepunt van de slinger bevindt zich horizontaal op x−lsin⁡θx - l\sin\theta (positieve θ\theta kantelt de slinger naar achteren, richting −x-x). Tweemaal differentiëren naar de tijd geeft de vereiste horizontale kracht op de slinger:

N=mx¨−mlθ¨cos⁡θ+mlθ˙2sin⁡θN = m\ddot{x} - ml\ddot{\theta}\cos\theta + ml\dot{\theta}^2\sin\theta

Invullen elimineert NN en levert de eerste gekoppelde bewegingsvergelijking op:

(M+m)x¨+bx˙−mlθ¨cos⁡θ+mlθ˙2sin⁡θ=u(M + m)\ddot{x} + b\dot{x} - ml\ddot{\theta}\cos\theta + ml\dot{\theta}^2\sin\theta = u

Voor de rotatie nemen we momenten rond het massamiddelpunt van de slinger:

(I+ml2)θ¨−mglsin⁡θ=mlx¨cos⁡θ(I + ml^2)\ddot{\theta} - mgl\sin\theta = ml\ddot{x}\cos\theta

Twee gekoppelde niet-lineaire vergelijkingen. Let op het teken van de zwaartekrachtterm: naar rechts verplaatst is hij +mglsin⁡θ+mgl\sin\theta wanneer θ\theta vanaf omhoog gemeten wordt, dus hij duwt θ¨\ddot\theta de kant op waarheen θ\theta al wijst — precies waardoor het systeem omvalt in plaats van terugveert.

Linearisatie rond rechtopstaand evenwicht

Voor kleine hoeken rond θ=0\theta = 0 geldt: sin⁡θ≈θ\sin\theta \approx \theta, cos⁡θ≈1\cos\theta \approx 1, en de kwadratische term θ˙2≈0\dot{\theta}^2 \approx 0 valt weg:

(I+ml2)θ¨−mglθ=mlx¨(I + ml^2)\ddot{\theta} - mgl\theta = ml\ddot{x}

(M+m)x¨+bx˙−mlθ¨=u(M + m)\ddot{x} + b\dot{x} - ml\ddot{\theta} = u

Laplace-transformatie en elimineren van X(s)X(s) levert de overdrachtsfunctie van stuurkracht naar slingerhoek:

Θ(s)U(s)=mlq ss3+b(I+ml2)qs2−(M+m)mglqs−bmglq\frac{\Theta(s)}{U(s)} = \frac{\dfrac{ml}{q}\,s}{s^3 + \dfrac{b(I + ml^2)}{q}s^2 - \dfrac{(M+m)mgl}{q}s - \dfrac{bmgl}{q}}

waarbij de gekoppelde traagheid qq gelijk is aan:

q=(M+m)(I+ml2)−(ml)2q = (M + m)(I + ml^2) - (ml)^2

Met de numerieke waarden geldt q=0,0132q = 0{,}0132 en wordt de overdrachtsfunctie:

Θ(s)U(s)=4,54545 ss3+0,18182 s2−31,21364 s−4,45909\frac{\Theta(s)}{U(s)} = \frac{4{,}54545\,s}{s^3 + 0{,}18182\,s^2 - 31{,}21364\,s - 4{,}45909}

De open-loop polen liggen op +5,568+5{,}568, −5,607-5{,}607 en −0,143-0{,}143. De positieve pool op +5,568+5{,}568 veroorzaakt de exponentiële wegloper die we met actieve regeling stabiliseren.

Eén positieve pool: elke verstoring, hoe klein ook, groeit als e5,568te^{5{,}568t} — de hoek verdubbelt ongeveer elke 0,120{,}12 seconde. Dat is geen artefact van het model. Het is de vallende stok, in algebra geschreven.

De hele plant als één state-space-model

De overdrachtsfunctie hierboven beschrijft de hoek, en alleen de hoek. Neem het karretje weer mee en het gelineariseerde systeem heeft vier toestanden — positie en snelheid van het karretje, hoek en hoeksnelheid van de stok — en één ingang:

x˙=Ax+Bu,x=[xx˙θθ˙]T\dot{\mathbf{x}} = A\mathbf{x} + Bu,\qquad \mathbf{x} = \begin{bmatrix} x & \dot{x} & \theta & \dot{\theta} \end{bmatrix}^\mathsf{T}

A=[01000−(I+ml2)bqm2gl2q000010−mlbqmgl(M+m)q0],B=[0I+ml2q0mlq]A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & -\dfrac{(I+ml^2)b}{q} & \dfrac{m^2gl^2}{q} & 0 \\ 0 & 0 & 0 & 1 \\ 0 & -\dfrac{mlb}{q} & \dfrac{mgl(M+m)}{q} & 0 \end{bmatrix},\qquad B = \begin{bmatrix} 0 \\ \dfrac{I+ml^2}{q} \\ 0 \\ \dfrac{ml}{q} \end{bmatrix}

De polen zijn de drie hierboven plus één extra in s=0s = 0: het karretje, dat geen voorkeurspositie heeft. Uitgeschreven wordt de overdrachtsfunctie van de hoek uit dit model

Θ(s)U(s)=4,545 s2s (s3+0,182 s2−31,21 s−4,459)\frac{\Theta(s)}{U(s)} = \frac{4{,}545\,s^2}{s\,(s^3 + 0{,}182\,s^2 - 31{,}21\,s - 4{,}459)}

en één ss valt weg. Daarom was de derde-orde overdrachtsfunctie juist, en daarom kan een regelaar die alleen de hoek ziet het karretje nooit terugbrengen: vanuit θ\theta gezien is de karpool onzichtbaar.

De karpositie heeft eigen nulpunten, in s=±mgl/(I+ml2)=±4,95s = \pm\sqrt{mgl/(I+ml^2)} = \pm 4{,}95. Die in het rechterhalfvlak komt later terug.

Zo is het gebouwd in BlockWerk

De plant is één StateSpace-blok. De matrices zijn geen decimalen: elk element is een formule in de variabelen van het schema — mgl(M+m)/q, (I+ml^2)/q — die wordt uitgerekend als het model draait. Beweeg de schuif voor MM en AA en BB volgen; de engine bouwt de matrices van het blok opnieuw op zonder te herstarten. CC is de eenheidsmatrix, dus het blok heeft vier uitgangen, y_0 tot en met y_3, één per toestand.

De rest hangt aan die uitgangen. De hoek gaat via een Saturation op ±90°\pm 90° — de vloer, waar het lineaire model niets van weet — naar de scoop en naar de regelaar die alleen de hoek ziet. Alle vier toestanden gaan naar de versterkingen van de toestandsterugkoppeling.

Het systeem verstoren

Een stap op het setpoint doet voor de hoek niets: het setpoint ís nul — rechtop — en het model begint rechtop. Balanceren is geen volgprobleem. De vraag is _"als iets hem een zet geeft, vangt de regelaar hem dan op?"_ Daarom is de ingang een verstoring op de kracht: een blok van 10 N10\ \text{N} gedurende 0,1 s0{,}1\ \text{s} op t=0,2 st = 0{,}2\ \text{s} — een impuls van 1 N⋅s1\ \text{N}\cdot\text{s} — gebouwd uit twee Step-blokken die elkaar opheffen. Zonder regelaar ligt de stok een halve seconde later op de vloer.

Een regelaar die alleen de hoek ziet

De eerste lus is een PID op −θ-\theta.

Alleen proportionele actie is een veer. Met Kp=100K_p = 100 liggen de polen van de gesloten lus op −0,10±20,6j-0{,}10 \pm 20{,}6j: de stok zwaait met 3,3 Hz3{,}3\ \text{Hz} en een dempingsfactor van 0,0050{,}005 door rechtop heen en blijft zwaaien. Een derde pool op +0,011+0{,}011 is nog steeds instabiel — langzaam.

Differentiërende actie voert de energie af. Ze reageert op θ˙\dot\theta, op hoe snel de stok valt, en duwt dus al terwijl de stok nog bijna rechtop staat. Met Kd=20K_d = 20 is het zwaaien binnen een seconde uitgedempt.

De integrerende term verschuift de laatste trage pool. Zonder is de constante term van de karakteristieke veelterm, −bmgl/q+Ki ml/q-bmgl/q + K_i\,ml/q, negatief en blijft er een pool op +0,011+0{,}011. Ki=1K_i = 1 (de keuze van CTMS) maakt daar −0,0002-0{,}0002 van: stabiel op papier, met een tijdconstante van zo'n 80 minuten.

En intussen drijft het karretje weg: een halve meter in vijf seconden, twee meter in twintig — geen keuze van KpK_p, KiK_i en KdK_d verplaatst de pool in s=0s = 0.

Toestandsterugkoppeling: het karretje komt terug

Meet alle vier toestanden en koppel elk ervan terug:

u=−K [x−xrefx˙θθ˙]Tu = -K\,\begin{bmatrix} x - x_\text{ref} & \dot{x} & \theta & \dot{\theta} \end{bmatrix}^\mathsf{T}

Het model gebruikt het LQR-ontwerp van CTMS, dat ∫(xTQ x+u2) dt\int (\mathbf{x}^\mathsf{T} Q\,\mathbf{x} + u^2)\,dt minimaliseert met Q=diag⁡(5000,0,100,0)Q = \operatorname{diag}(5000, 0, 100, 0):

K=[−70,7−37,8105,620,9]K = \begin{bmatrix} -70{,}7 & -37{,}8 & 105{,}6 & 20{,}9 \end{bmatrix}

Daarmee liggen de polen op −8,49±7,93j-8{,}49 \pm 7{,}93j en −4,76±0,83j-4{,}76 \pm 0{,}83j. Na de duw piekt de stok op 5,4°5{,}4° en keert het karretje terug naar het midden. Een setpointstap van 0,2 m0{,}2\ \text{m} op t=1,5 st = 1{,}5\ \text{s} kost ongeveer een seconde, een grootste uitslag van 9°9° en 14 N14\ \text{N} — en begint met het karretje dat 58 mm58\ \text{mm} de verkeerde kant op rolt. Dat is het nulpunt op +4,95+4{,}95: om de stok naar het doel te laten hellen moet het karretje eerst onder hem vandaan, en toestandsterugkoppeling verplaatst elke pool maar geen nulpunt.

Transportvertraging

Een echte lus heeft vertraging — filtering, bemonstering, een bus, de aandrijving. Knip de lus aan de ingang van het karretje en de lusversterking L(s)=K(sI−A)−1BL(s) = K(sI - A)^{-1}B snijdt 0 dB0\ \text{dB} bij 26,1 rad/s26{,}1\ \text{rad/s} met 61,3°61{,}3° fasemarge. Een vertraging τd\tau_d laat de amplitude ongemoeid en trekt ωτd\omega\tau_d van de fase af, dus de vertragingsmarge is

τmax=61,3°⋅π/18026,1 rad/s≈41 ms\tau_\text{max} = \frac{61{,}3° \cdot \pi/180}{26{,}1\ \text{rad/s}} \approx 41\ \text{ms}

Gemeten: 30 ms30\ \text{ms} verhoogt de grootste uitslag van 9°9° naar 13°13° en laat 16°16° marge over; 40 ms40\ \text{ms} trilt op het randje; bij 50 ms50\ \text{ms} valt de stok om.

Om te proberen

  • De snelheidsschuif schaalt alle vier LQR-polen met één factor, en de versterkingen worden opnieuw ontworpen voor de plant die de andere schuiven beschrijven. Bij 0,50{,}5 kost een setpointverplaatsing 0,9 N0{,}9\ \text{N}; bij 1,51{,}5 kost ze 72 N72\ \text{N} en een uitslag van 21°21°.
  • Combineer snelheid 1,51{,}5 met 30 ms30\ \text{ms} vertraging. De snellere regelaar heeft maar zo'n 28 ms28\ \text{ms} vertragingsmarge: de stok valt.
  • Zet de wind op 5 N5\ \text{N}. De stok blijft rechtop, maar het karretje komt zo'n 7 cm7\ \text{cm} naast zijn setpoint tot rust: in rust moet de regelaar −5 N-5\ \text{N} leveren, en de positieversterking doet dat alleen met een fout, F/kxF/k_x. Integrerende actie op xx zou die wegwerken.
  • Maak ll groter. Een langere stok valt trager — de instabiele pool schuift naar de oorsprong — en daarom balanceren acrobaten lange stokken, geen korte.

Wat dit model weglaat

Het model is lineair en dus alleen eerlijk rond rechtop: sin⁡θ≈θ\sin\theta \approx \theta klopt binnen 1%1\% tot ongeveer 14°14°. Om de stok vanuit hangende stand omhoog te zwaaien is eerst een niet-lineaire regelaar nodig — energieregeling volgens Åström–Furuta drijft E=12(I+ml2)θ˙2+mgl(cos⁡θ−1)E = \tfrac12 (I+ml^2)\dot\theta^2 + mgl(\cos\theta - 1) naar nul, reinforcement learning is een andere route — waarna een lineaire regelaar zoals deze het vlak bij de top overneemt.

Het karretje rijdt hier op een eindeloze baan, en de motor levert elke gevraagde kracht.

Bronnen

De parameterset (MM, mm, bb, ll) en de keuze van dit systeem als uitgewerkt voorbeeld komen uit de Control Tutorials for MATLAB & Simulink (CTMS) van Prof. Dawn Tilbury (University of Michigan) en Prof. Bill Messner (Carnegie Mellon University), gelicentieerd onder CC BY-SA 4.0. De afleiding, de tekst, het blokschema en elk gemeten getal op deze pagina zijn eigen werk, gemaakt met de engine van BlockWerk. We gebruiken g=9,81 m/s2g = 9{,}81\ \text{m/s}^2.

Zie ook

  • StateSpace: de hele plant, vier toestanden, matrices als formules.
  • Gain: de vier versterkingen van de toestandsterugkoppeling.
  • PIDController: de regelaar die alleen de hoek ziet.
  • Delay: de transportvertraging tussen regelaar en karretje.
  • Saturation: de vloer op ±90°.
  • XYPlot: het faseplot, θ tegen θ̇.
  • uPlotDisplay: hoek, karpositie en stuurkracht.

Simuleren in BlockWerk

Interactieve sandbox direct in je browser — geen installatie, aangedreven door WebAssembly.

Simuleren in BlockWerk →