LabVIEWForum.de
Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler (/Thread-Ansteuerung-Servomotor-mit-Stellungsregler-mit-PID-Regler)



Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - hugo2w - 18.01.2021 13:13

Hallo zusammen,

ich bin Einsteiger in LabView und habe folgende Situation:

Ein Servomotor mit integriertem Stellungsregler soll für die Regelung der Drosselklappe in einem Luftstrom eingesetzt werden.
Der Servomotor kann mit 0 - 10 V (Sollwerteingang) angesteuert werden und gibt ein 0 - 10 V-Signal (Rückgabewert) zurück.

Ein in LabView implementierter PID-Regler bestimmt die Regelabweichung e zwischen dem Messwert r und dem Sollwert w und gibt einen Ausgabewert zwischen -100 und 100 % aus.

Mein Ansatz zur Bestimmung der Motorstellung wäre nun folgender:
- Der Reglerausgang wird von % in Einheiten umgewandelt (- 100 bis + 100 % --> -10 bis 10 V)
- Der Rückgabewert des Motors soll ständig eingelesen werden und mit dem V-Wert des Reglerausgangs addiert werden.

Ist mein Ansatz richtig oder gibt es dafür bessere Möglichkeiten?

Das Programm ist bisher nur ein Entwurf und wurde noch nicht an der Maschine getestet.

Danke und Grüße

hugo2w


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - GerdW - 18.01.2021 13:44

Hallo Hugo,

herzlich willkommen im Forum!

Zitat:Mein Ansatz zur Bestimmung der Motorstellung wäre nun folgender:
- Der Reglerausgang wird von % in Einheiten umgewandelt (- 100 bis + 100 % --> -10 bis 10 V)
- Der Rückgabewert des Motors soll ständig eingelesen werden und mit dem V-Wert des Reglerausgangs addiert werden.
Warum willst du auf ±10V skalieren, wenn der Motorregler nur positive Spannungen erwartet?
Warum willst du den Rückgabewert mit dem Stellsignal addieren???

Zitat:Ein Servomotor mit integriertem Stellungsregler
Wenn der Regler integriert ist, wozu dann der zusätzliche Software-PID-Regler?


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - hugo2w - 19.01.2021 19:40

Hallo Gerd,

anbei mein Regelkreis in der Übersicht und der Entwurf meines LabView-Programms.

Zitat:Warum willst du auf ±10V skalieren, wenn der Motorregler nur positive Spannungen erwartet?

Der PID-Regler berechnet aus der Regelabweichung ja eine Stellgröße. Falls aus dem Vergleich zwischen Führungsgröße und Rückführgröße ein negativer Wert herauskommt (e = w - r < 0), muss der PID-Regler nach meinem Verständnis auch negative Werte ausgeben können, um den V-Wert am Sollwerteingang des Motors zu verringern.

Zitat:Warum willst du den Rückgabewert mit dem Stellsignal addieren???

Der Regler kann ja nicht wissen, wo der Motor vorher gestanden hat. Durch die Addition des Stellsignals mit dem Rückgabewert soll der richtige V-Wert an den Sollwerteingang des Motors gesendet werden.

Bsp.: Der Motor steht im Ausgangszustand auf 50 % (Rückgabewert 5 V). Im Regelkreis ergibt sich, dass der Motor die Luftklappe etwas schließen muss (Motorstellung 40 % - Rückgabewert 4 V notwendig). Um in LabView den Motor nun mit 4 V anzusteuern, soll der Rückgabewert 5 V mit dem Reglerausgang - 1 V addiert werden:
5 V + (-1 V) = 4 V.

Wenn der Regler integriert ist, wozu dann der zusätzliche Software-PID-Regler?
[/quote]

Der Stellungsregler des Motors vergleicht ja den Sollwerteingang mit dem Rückgabewert und stellt sicher, dass die Motorstellung eingehalten wird.
Das ist aber unabhängig vom Regelkreis, der die Motorstellung abhängig von der Regelabweichung im Regelkreis bestimmt.

Wäre ein Motor mit 3-Punkt-Schritt-Ansteuerung passender für meine Anwendung?

Danke und Grüße

Michael
[attachment=61556]
[attachment=61557]


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - GerdW - 19.01.2021 20:14

Hallo Hugo,

Zitat:Der PID-Regler berechnet aus der Regelabweichung ja eine Stellgröße. Falls aus dem Vergleich zwischen Führungsgröße und Rückführgröße ein negativer Wert herauskommt (e = w - r < 0), muss der PID-Regler nach meinem Verständnis auch negative Werte ausgeben können, um den V-Wert am Sollwerteingang des Motors zu verringern.
Nein.
Wenn dein Motor einen Input von 0V-10V erwartet, dann darf dein Regler eben nicht negative Spannungen ausgeben…

Zitat:urch die Addition des Stellsignals mit dem Rückgabewert soll der richtige V-Wert an den Sollwerteingang des Motors gesendet werden.
Nein, so arbeiten PID-Regler IMHO üblicherweise nicht.
Der PID bekommt als Input den Sollwert und den aktuellen Istwert/Messwert des Systems und berechnet daraus das Stellsignal. Man addiert nicht noch hinterher den Stellwert auf den Messwert…

Zitat:Bsp.: Der Motor steht im Ausgangszustand auf 50 % (Rückgabewert 5 V). Im Regelkreis ergibt sich, dass der Motor die Luftklappe etwas schließen muss (Motorstellung 40 % - Rückgabewert 4 V notwendig). Um in LabView den Motor nun mit 4 V anzusteuern, soll der Rückgabewert 5 V mit dem Reglerausgang - 1 V addiert werden:
5 V + (-1 V) = 4 V.
Das macht der PID aber schon intern und nicht du selbst hinterher noch(mal)…

Zu den Bildern:
1. Ganz generell: Bilder von LabVIEW-Code ist so, als wenn man ein Foto seines Autos zur Werkstatt bringt, um das Auto reparieren zu lassen - also grober Blödsinn. Bitte echten Code anhängen und nicht nur Bilder von Code…
2. Wozu die unnötigen Dinge im VI? Warum einen Cluster unbundlen und gleich wieder bundeln?
3. Bist du dir sicher, dass du einen Median-Wert im Chart darstellen willst anstatt eines Mean-Wertes?
4. Stell doch den Arbeitsbereich des PID einfach auf 0-10(V) und passe den P-Gain entsprechend an! (Vereinfacht ergibt sich der P-Gain als d(Messgröße)/d(Stellgröße)!)
5. Der "aktuelle Rückgabewert in V" geht an den Istwert-Input des PID - evtl. nur skaliert nach Einheit g, damit der Sollwert ebenfalls in "g" angegeben werden kann.


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - hugo2w - 19.01.2021 21:30

Hallo Gerd,

Zitat:2. Wozu die unnötigen Dinge im VI? Warum einen Cluster unbundlen und gleich wieder bundeln?

Das dient nur dazu, damit man auch im Blockschaltbild erkennt, welche Werte genau im PID verwendet werden.
Aber Du hast recht, sie erfüllen keine Funktion im Programm, also werden nicht unbedingt benötigt.

Zitat:3. Bist du dir sicher, dass du einen Median-Wert im Chart darstellen willst anstatt eines Mean-Wertes?

Danke für den Hinweis. Eigentlich möchte ich den mean-Wert darstellen.

Zitat:4. (Vereinfacht ergibt sich der P-Gain als d(Messgröße)/d(Stellgröße)!)
Mir ist das nicht klar. Kannst Du dazu ein Beispiel geben? Entspricht das der Anfangssteigung der Sprungantwort? (sh. Bild anbei) oder bin ich da auf dem falschen Weg.

Grüße

Hugo

[attachment=61560]


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - MScz - 20.01.2021 10:00

Hallo hugo2w,

die Regler VIs sind anders Aufgebaut als man das zu erst aus den Blockschaltbildern der Regelungstechnik denken würde.
In die VIs, steckst du deinen Soll-Wert, deine Ist-Wert, deine Regelparameter und deine min/max Werte für das Stellglied.
Als Ausgang erhältst du dann deine Stellgröße, die du direkt auf das Stellglied geben kannst. Fertig.

Du solltest der Strecke aber etwas Zeit geben, die Werte auch anzunehmen. Wenn du die Berechnung so schnell wie möglich ausführst, wirst du keine brauchbare Regelung erhalten.


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - hugo2w - 20.01.2021 11:12

(20.01.2021 10:00 )MScz schrieb:  Hallo hugo2w,

die Regler VIs sind anders Aufgebaut als man das zu erst aus den Blockschaltbildern der Regelungstechnik denken würde.
In die VIs, steckst du deinen Soll-Wert, deine Ist-Wert, deine Regelparameter und deine min/max Werte für das Stellglied.
Als Ausgang erhältst du dann deine Stellgröße, die du direkt auf das Stellglied geben kannst. Fertig.

Du solltest der Strecke aber etwas Zeit geben, die Werte auch anzunehmen. Wenn du die Berechnung so schnell wie möglich ausführst, wirst du keine brauchbare Regelung erhalten.

Danke für diese hilfreiche Info.
- Geht es hier um die Aufrufintervalle vom PID-VI dt (s) oder des gesamten Regelkreises (while-Schleife)?
- Was sind typische Werte, mit denen man die Berechnung durchführen kann?

Sh. hier mein angepasstes LabView-Programm:
[attachment=61561]


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - MScz - 20.01.2021 14:29

Zu 1.:
Ich meinte das Aufruf-Intervall des Regler und das setzen der Stellgröße. Da deine while-loop aber gerade nur aus dem Regler besteht, macht das hier gerade keinen Unterschied.
Zu 2.:
Einfach ausprobieren. Habe bei einem Prüfstand für die Erwärmungsmessung (Regelgröße ist Temperatur, Stellgröße ist die Last am Motor) 5 Sekunden als Zykluszeit, aber der Prozess ist auch sehr sehr langsam.
Wenn du das berechnen möchtest, musst du dich wahrscheinlich mehr mit der digitalen Regelung auseinander setzen.

Gruß Max


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - GerdW - 21.01.2021 07:16

Hallo Hugo,

dein VI könnte auch so aussehen:
[attachment=61563]

Anmerkungen:
LabVIEW kann auch mit Clustern rechnen, wenn sie nur numerische Elemente enthalten.
Wenn man so lange Labels an FP-Elementen verwendet, sollte man darüber nachdenken, kürzere Labels zu verwenden und stattdessen die Caption auf dem FP anzuzeigen…
In UI-Schleifen gehört eine Wartezeit, entweder explizit wie im Snippet oder implizit durch die aufgerufenen Funktionen…
Den Stopp-Button außerhalb der Schleife zu platzieren, ist ein grober Anfängerfehler. Bitte immer "THINK DATAFLOW!" denken und (laut) aufsagen…

Zitat:die Regler VIs sind anders Aufgebaut als man das zu erst aus den Blockschaltbildern der Regelungstechnik denken würde.
Nicht wirklich: auch in Hugos Blockschaltbildern wird nirgends der Stellwert mit dem Istwert addiert - trotzdem wollte Hugo so etwas programmieren!

Abgesehen davon: LabVIEW bringt jede Menge BeispielVIs mit, u.a. auch für den PID-Regler. Dort dann auch mit simulierter "Plant", um "echtes" Regelverhalten anzuzeigen…


RE: Ansteuerung Servomotor mit Stellungsregler mit PID-Regler - MScz - 21.01.2021 13:58

(21.01.2021 07:16 )GerdW schrieb:  
Zitat:die Regler VIs sind anders Aufgebaut als man das zu erst aus den Blockschaltbildern der Regelungstechnik denken würde.
Nicht wirklich: auch in Hugos Blockschaltbildern wird nirgends der Stellwert mit dem Istwert addiert - trotzdem wollte Hugo so etwas programmieren!

Wenn man auf ein Blockschaltbild für den Regler schaut, dann hat dieser einen Eingang und einen Ausgang. Für den Eingang musst du die Regeldifferenz bilden und das Ausgangssignal muss man ggf. auch noch mal normieren. Im Blockschaltbild hat man dafür auch noch mal zwei Elemente extra. Der LabVIEW PID Regler hat die Sachen schon drin und da hast du auch schon deine Unterschied. Das muss einem erst mal klar werden. Hugo war es offensichtlich nicht bewusst, aber jetzt hat er es ja verstanden. (Siehe letztes VI von ihm).