Hallo
Ich bin neu hier und habe ein Problem:
Ich muss bei meiner Arbeit AO-Sollwerte (Drehzahl) aus einem 2D-Array über NI-PXI 6230 ausgeben (im 10 Hz-Takt). Zwischen diesen Sollwertausgaben sollte ich noch über einen PI-Regler die Drehzahl nachregeln.(Drehzahl wird ber einen Frequenztask aufgenommen)
Habe keine Ahnung, wie ich das realisieren kann. Kann mir da jemand helfen?
Ich würde die analoge Ausgabe und die Drehzahlregelung in zwei parallelen Schleifen abarbeiten.
Gruß Markus
Ich denke ich würde eine "timed loop" verwenden. Frequenz etwa 100Hz (mehr wirst du mit einem normalen System nicht schaffen). Darin die Regelung ausführen lassen. Den Sollwert gleichst du dann einfach alle 10 Iterationen an den neuen Wert aus dem Array an.
Grüße
Danke für die Antworten!
Ich krieg das mit der Sollwertanpassung aber einfach nicht hin. Wie kann ich das realisieren?
Ich kenne die timed loops nicht, bzw weiss nicht, was passiert wenn die Ausfühung dieser Schleife länger Dauert als die 10HZ.
Gibt es übrigens einen PI-Regler in LV? oder hat schon mal jemand so einen programmiert?
' schrieb:Danke für die Antworten!
Ich krieg das mit der Sollwertanpassung aber einfach nicht hin. Wie kann ich das realisieren?
- Hast du schon was probiert? Screenshot? Woran scheitert es?
Ich kenne die timed loops nicht, bzw weiss nicht, was passiert wenn die Ausfühung dieser Schleife länger Dauert als die 10HZ.
- wenn er die Zeit nciht einhalten kann passiert nichts im allgemeinen. Das Programm läuft normal weiter. Er gibt dir allerdings die Möglichkeit eine Überschreitung abzufangen und darauf zu reagieren. Denke aber nicht, dass du das brauchst. Hängt davon ab, wie sensibel geringe Abweichungen von den 10Hz sind.
Gibt es übrigens einen PI-Regler in LV? oder hat schon mal jemand so einen programmiert?
-Soweit ich weiß gibt es die. Allerdings nicht im Base Package. Bin hier aber kein Experte. Da wäre wohl Lucki der richtige hier im Forum. Das ist unser anerkannter Fachmann für "Alles und Regelung im Speziellen":)
Ich habe bis jetzt nur was mit Queues einigermassen hingekriegt. Funktioniert aber auch nicht richtig.
Mit timed-loops scheitere ich schon bei der Bedinnung (i+1)/10 = natürliche Zahl?
bin halt LV-Anfänger
Ich habe es mal mit Markus's Ansatz versucht und zwei paralelle Schleifen gemacht und die Date mit einer Queue übertraen. Funktioniert aber auch nicht, da die Regler-Schleife wegen den nicht anliegenden Queue-Werten zuwartet.
Kann mir da jemand weiterhelfen?
Hallo m.l.e,
wie schnell muss denn Deine Regelung sein?
Wenn Du hier etwas Masse bewegst brauchst du nicht so schnell sein weil kein mechanisches System so schnell reagieren kann.
Womöglich reicht eine einfache While-Schleife und für den Zeitfehler rechnest Du die Ausführzeit in Deinen Regelalgorithmus mit ein.
Das ist auf jeden Fall besser wie eine "vielleicht richtige" Timed Loop.
Dann wird der Aufbau einfach. Alle 100ms die neue Solldrehzahl auf den Regler geben und der gibt die Stellgröße dann an Deinen Motor.
Grüße
kpa
Danke für die Hinweise!
Meine Regelung sollte schon schneller als 10 Hz sein. Ich muss von kleineren Gleichstrommotoren die Drehzahl regeln. Gleichzeitig wird ebenfalls die Belastung (Drehmoment) über einen anderen Motor geregelt.
halten denn die timed loops die Zeiten manchmal nicht ein?
Wie kann ich denn alle 100ms die neue Solldrehzahl dem Regeler vorgeben, wenn ich die Reglerschleife in einem schnelleren Takt ausführe?
Das ist eigentlich mein Hauptproblem.
Gruss
m.l.e
Hallo m.l.e,
"Wie kann ich denn alle 100ms die neue Solldrehzahl dem Regeler vorgeben, wenn ich die Reglerschleife in einem schnelleren Takt ausführe?
Das ist eigentlich mein Hauptproblem."
Die "Quotient & Remainder" aus der Numeric Palette ist das richtige für dich.
Im Anhang ein Beispiel mit Notifier und normalen While-Schleifen aber es geht ja um das Prinzip.
Gruß
Ralf