LabVIEWForum.de - Hat schon jemand einen PI-Regler in LabVIEW programmiert?

LabVIEWForum.de

Normale Version: Hat schon jemand einen PI-Regler in LabVIEW programmiert?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

so langsam läuft meine Programmierung an- aber irgendwie willes noch nicht so ganz.
Ich möchte eine physikalische Größe (Druck) über einen PI-Regler regeln. Der P-Regler schein zu funktionieren (ich gebe Die Differenz auf den Regler, der verstärkt entsprechend) nur mein I-Regler tut noch gar nichts.
Ich habe das PtByPt-Integral-VI gewählt, da ich kontinuierlich Daten einlese, nur leider scheint es nicht das zu sein, was ich brauche- ich will meine Messwerte mit einer Zeitbasis multiplizieren und dann aufaddieren.
Bei dem VI gibt es ein initial-Eingang und eine initial condition- kann ich darüber irgendwie das Integral nullen, wenn der Regler nicht aktiv ist?

Wäre dankbar für jede Hilfe, bzw für Hinweise auf Beiträge, in denen es auch um Regelungstechnik in LabVIEW geht, oder links oder irgendwelche nützlichen Informationen.

Vielen Dank!!!
Das Point-to-Point Interal würde ich nicht verwenden, mach es doch einfach so wie im Beispiel "Simple PID" zu LabVIEW, wo die Integralsumme einfach in einem shift-Register zwischengespeichert wird.
Das Problem ist allerdings, daß in Version 8 der PID-Regler in den Beispielen gar nicht mehr vorhanden ist, obwohl die Beispielbezeichnungen das glauben machen wollen. In Version 7 ist der PID-Regler aber noch vorhandnen. Bei Version 7.1 weiß ich nicht. Wenn die Beispile fehlen, schicke ich Dir das control.llb von Version 7.
Zu finden sind sie in Version 7 in: examplesDAQSolutioncontrol.llb.(584kB)
Es gab noch ein interessantes Beispiel in einer ganz alten Version von LabVIEW. Es geht darum, daß die Regelung in einer Nicht-Echtzeit-Umgebung noch einigermaßen leidlich funktioniert. Im angehängten Beispiel wird es so gemacht, daß jedes dt individuell gemessen wird. Die andere, schnellere Möglichkeit ist -und so war es in dem erwähnten Beispiel -, daß die Samples äquidistant von der Messkarte erfasst werden, wobei die Samples in einen Buffer kommen. Für den Fall, daß sich wegen eines Windows-Interrupt einmal zwei Werte im Buffer angesammelt haben, wird der aktuellste Wert benutzt und statt dt wird 2*dt verwendet. Ist zwar nur ein Notbehelf, aber die große Katastrophe im Falle eines Interrupts bleibt der Regelung dann auf jeden Fall erspart.
Jetzt will ja NI sowohl sein Realtime-System als auch den Control-Kit zu LV verkaufen. Deshalb kannst Du von den normal mitgelieferten Beispielen nicht mehr viel erwarten.
[attachment=8901]
Hallo,

ich habe grad beim Testen des PID-Reglers bemerkt, dass die "First Call?" Funktion innerhalb der While-Schleife stehen sollte, weil sonst der I-Anteil und der D-Anteil ständig den Wert 0 erhalten.
Referenz-URLs