Hallo Zusammen!
Ich hoffe ihr könnt mir weiterhelfen?!
Habe versucht in LabVIEW einen kompletten Regelkreis zu simulieren.
Mit folgenden Elementen:
Regler --> "PID.vi"
simulierte Strecke --> "Bessel Coefficients.vi"
Irgendwie bleibt jedoch meine Stellgrösse Y immer gleich der Regelgrösse X (z.B. bei Regelstrecke 1.Ordnung).
Hatte auch versucht zusätzlich die Führungsgrösse W im Graphen anzeigen zu lassen, was mir
irgendwie auch nicht gelungen ist.
Stecke was LabVIEW angeht leider noch in den Kinderschuhen und brauche daher eure Hilfe.
Irgendwelche Ideen wie ich das ganze realisieren kann?
Habe das Vi mal in den Anhang gepackt.
Gruß Stoney
Könntest Du das PID-SubVI noch posten?
In dem Vi sind zwei grobe Fehler drin:
1.) Das Filter wird bei jedem Durchlauf, und nicht nur beim ersten Aufruf, neu initialisiert (weil der Wert "erster Aufruf" nur einmal in die Schleife eingelesen wird. Die Initialisierung beim ersten Aufruf findet außerdem schon im Filter statt (Blockd. anschauen!), ist also überflüssig.
2.) Eine Regelung ist immer ein online-Verarbeitung, es fällt bei jeder Abtastung ein einziger neuer Wert an. Und da sind natürlich die Punkt-zu- Punkt Filter zu verwenden und nicht die Filter, die mit ganzen Arrays arbeiten.
[
attachment=11103]
Danke für die schnelle Antwort!
Anbei das "PID.vi" (und das "PID Advanced" mit Hand/Auto Umschaltung)
Noch ein paar Fragen:
- Wieso hast du denn den zusätzlichen Filter im VI (Führungsgröße W) implementiert?
- Welchem Zweck dient die Quotientenberechnung mit der Schleifen-Iteration?
- Kann ich bei einer Regelstrecke "höherer Ordnung" einfach mehrere Butterworth-Filter "1.Ordnung"
hintereinander schalten (wollte zwischen den einzelnen PT-Gliedern noch einstellbare Störgrössen
über ein Addierglied einbauen)?
Gruß Stoney
' schrieb:Noch ein paar Fragen:
- Wieso hast du denn den zusätzlichen Filter im VI (Führungsgröße W) implementiert?
Das hat mit der Regelung überhaupt nichts zu tun. Das dient nur dazu, zum Zweck des Vergleichs die zeitliche Antwort der Regelstrecke ohne Regelung in Plot 1 darzustellen.
Zitat:- Welchem Zweck dient die Quotientenberechnung mit der Schleifen-Iteration?
Um die Regelung zu testen und zu optimieren, braucht man Sprungfunktionen am Eingang . Die Führungsgröße ist bei den ersten 100 Schleifendurchläufen Null, bei den zweiten 100 Schleifendurchläufen so groß wie die Schiebereglereinstellung usw. Da kann man natürlich auch anders machen, ich hab das eben mal so gemacht.
Zitat:- Kann ich bei einer Regelstrecke "höherer Ordnung" einfach mehrere Butterworth-Filter "1.Ordnung" hintereinander schalten (wollte zwischen den einzelnen PT-Gliedern noch einstellbare Störgrössen über ein Addierglied einbauen)?
Es müsste schon gehen, man kann ja jedes Filter als Kaskadenbschaltung von Filtern zweiter Ordnung realisieren. Du darfst nur nicht erwarten, daß zwei in Kaskade geschaltete Butterworth-Filter automatisch wieder ein Butterworth-Filter ergeben. Die Koeffizienten von zwei hintereinandergeschalteten Filterstufen für Butterworth-Charakteristik sind anders als die eines Butterworh-Filters vierter Ordnung als Einzelstufe, aber das weißt Du wohl selbst.
Deine PID-VIs kann ich nicht öffnen. Sie gehören wohl zu einem Add-on von NI, und den Kauf kann ich offenbar nicht damit aushebeln, indem ich hinterlistigerweise diese VIs von Dir mir posten lasse. Schade...
Vielen Dank nochmal für deine Mühen!
Habe nochmal versucht zu tricksen und den Inhalt des "PID Advanced" in ein neues SubVI kopiert
und die Anschlüsse neu verbunden. Vielleicht klappts ja jetzt?!
Gruß Stoney
' schrieb:Habe nochmal versucht zu tricksen und den Inhalt des "PID Advanced" in ein neues SubVI kopiert
und die Anschlüsse neu verbunden. Vielleicht klappts ja jetzt?!
Danke, das Hochladen hat im Prinzip funktioniert, es fehlt lediglich das Sub-VI "PID get advanced Error (dbl).vi". Das ist aber nicht schlimm, ich will das VI ja nicht verwenden. Mein Interesse daran ist ein "rein schöngeistiges", ich will sehen, wie die Profis das gemacht haben. Ich werde es mir genau anschauen, vielleicht melde ich mich noch mal.
Mich befriedigt die Regelung Deines Beispiels übrigens nicht nicht ganz. Wenn die Regelstrecke ein einfacher Tiefpass erster Ordnung ist (ohne die in der Praxis unvermeidlichen zusätzlichen Phasendrehungen bei höheren Frequenzen), und man verwendet eine reine Proportionalregelung, dann kann man (in der Theorie) das Proportionalglied beliebig weit aufdrehen, so daß die Regelung immer besser wird, ohne daß das System schwingt. Im Beispiel ist das aber nicht so. Ich vermute aber, daß das einfach damit zusammenhängt, daß eine digitale Regelung etwas andres ist als eine analoge, und daß man bei einer digitalen Regelung immer dafür sorgen muß, daß ab Nyquistfrequenz die Schleifenverstärkung unter 1 ist.
Ehrlich gesagt habe ich mich mit der Materie so tiefgreifend noch nicht beschäftigt, aber ich lerne gerne
dazu ;-)
Habe noch mal "eine" Frage zu den Anschlüssen des Regler-VI's (PID Advanced.vi):
1. dt(s)
Hat irgendwas mit einer integrierten Zeit zu tun?!
Aufgefallen ist mir wenn ich den Wert auf ~10s erhöhe, erhalte ich auch das für die
Regelungstechnik übliche Überschwingen bzw. Einschwingen.
2. beta
Hat wohl irgendwas mit Störunterdrückung zu tun?!
3. linearity
Linearität von Fehlerreaktionen?!
..wer weiß genaueres?
Gruß Stoney
...ich bins schon wieder!
Du hattest im VI einen Eigenschaftsknoten (Historiendaten) eingefügt.
Was ist und was bringt mir ein Eigenschaftsknoten...hab mal nach gegoogelt und nix gefunden!
Poste hier auch nochmal meinen aktuelles Programm.
(habe zusätzlich eine Störgröße implementiert)
Eigentlich klappt jetzt alles so wie ich es aus der Praxis kenne, allerdings krieg ich es nicht hin einen
Stellbereich Y (Reglerausgang) von 0-100(%) und eine zu regelnde Größe X von 0-200(°C) über die im SubVI implementierten Funktionen "output range" und "setpoint range"einzustellen.
Irgendwelche Ideen was ich falsch mache?
Gruß Stoney
' schrieb:Du hattest im VI einen Eigenschaftsknoten (Historiendaten) eingefügt.
Was ist und was bringt mir ein Eigenschaftsknoten...hab mal nach gegoogelt und nix gefunden!
Diese Frage gehört zu den Top Tens im LVF - dort zu suchen hätte garantiert funktioniert. Das Signalverlaufsdiagramm hat ja, und das ist ein wesentlicher Unterschied zum Signalverlaufsgraphen, ein internes Memory, so daß man dort einen Einzelpunkt eingeben kann, der dann zu dem bereits vorhandenem Verlauf hinzugefügt wird.
Dieses Memory wird selbst dann nicht gelöscht, wenn das VI beendet und später neu gestartet wird. Da muß man manuell tun. Und dummer weise gibt es dafür keine einfache Methode, sondern nur die umständliche, indem man an den Eigenschaftknoten "History" eine leere Konstante anschließt (damit das Format stimmt, am besten immer mit rechter Maustaste/ Konstante erzeugen). - Andere Antworten später