Steuerung eines Servoventils - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: Hardware (/Forum-Hardware) +---- Forum: 3rd Party Hardware (/Forum-3rd-Party-Hardware) +---- Thema: Steuerung eines Servoventils (/Thread-Steuerung-eines-Servoventils) |
Steuerung eines Servoventils - MatthiasM - 04.07.2011 08:48 Hallo, ich plane im Rahmen meiner Masterarbeit einen hydraulischen Prüfstand mit doppeltwirkendem Hydraulikzylinder und MOOG Servoventil mit integrierter Elektronik. Nun bin ich dabei, mit Labview die Regelung zu realisieren. Der Zylinder soll eine kraftgeregelte Schwingung erzeugen. Ich will fünf Prüfsequenzen (Kraft, Kraftamplitude, Frequenz und Dauer) einstellen können, die nacheinander ablaufen. Die Istwerterfassung erfolgt über zwei Drucksensoren (0..10 V) an den Anschlüssen des Zylinders, der Sollwert wird über Labview vorgegeben und als +-10 V Signal an das Ventil überreicht. Die Signalwandlung erfolgt mittels DT9812-10V. Das Ziel ist, die Druckdifferenz zu bilden (und auf die Kraft umzurechnen) und mit dem Solltwert abzugleichen. Ich hatte bis vor 6 Wochen nie etwas mit Labview zu tun und dementsprechend ist auch mein Wissensstand. Ich habe zig Übungen gemacht und komme eigentlich auch schon gut klar, aber im Moment stellt sich mein Vorhaben als nicht ganz so einfach dar. Ich erzähle vielleicht erst einmal, wie meine Vorgehensweise war, auch wenn das jetzt viel Text wird: Meine Idee war, zuerst die Benutzeroberfläche mit der Sollwerterstellung zu programmieren. Ich habe also zuerst die Bedienoberfläche so zusammengestellt, wie ich sie gerne hätte und habe mich dann an die Verbindungen gemacht. Funktioniert auch alles so, wie ich es mit vorstelle. Ich gebe also meine Werte vor und kriege als Ergebnis meine Sollkurve (durch die Einheit Newton noch nicht ausgabefähig). Mit diesem Kurvenverlauf wollte ich mich jetzt der zweiten Aufgabe witmen, nämlich der Istwerterfassung, der Regelung und der Regelkurvenausgabe. Und da beginnen die Problemchen. Ich habe also zwei analoge Eingänge, die ich mit 1 kHz abtasten möchte, und einen analogen Ausgang. Erst erfolgt die Differenzbildung der Eingänge, dann die Regelung mit der Sollkurve im PID-Regler, und die Regelkurve soll dann zum Ausgang. Ich habe mir mit den Beispiel VI's von Datatranslation jetzt halbwegs etwas zurechtgebaut, aber leider auf Basis von Halbwissen. Zur vereinfachten Erklärung habe ich mal das VI und (aus Grund der bestimmt fehlenden SubVIs) einen Screenshot angehängt. Für die Anbindung hab ich LV-Link genutzt, meine Labview Version ist 2010 Student. Mein Problem ist jetzt auch, dass die Komponenten erst zu einem späteren Zeitpunkt angeschafft werden, so dass ich nicht ausprobieren kann, ob das VI überhaupt funktioniert bzw. wo es hapert. Gibt es also eine Möglichkeit, einfach einen taskin.net zu simulieren? Eine einfache Eingangsimulation mit DAQ9.5 habe ich schon hingekriegt, aber ich würde gerne den endgültigen Aufbau testen. Ich muss sagen, den rechtenTeil des VIs habe ich zwar zusammengestellt, aber noch nicht richtig verstanden. Z.B. warum habe ich beim AOUT einen Ausgang ins Programm? Wo gehe ich denn mit meiner Regelkurve hin, dass sie am analogen Ausgang anliegt? Funktioniert die Zeitverzögerung beim Kurvenverlauf überhaupt so, wie ich es mir gedacht habe? Oder ist das Unsinn? Um alle Fragen und Probleme hier im Forum zu diskutieren ist die Aufgabe wahrscheinlich zu umfangreich, aber über Hilfestellung wäre ich echt dankbar. Vielleicht hätte ich auch alles ganz anders aufbauen sollen. Leider haben wir in der Firma niemanden, der je mit Labview gearbeitet hat und an der HS ist der Experte im Moment beschäftigt. Ich liste zur vereinfachten Gliederung meine Fragen noch einmal auf: 1. Ist der grundsätzliche Aufbau überhaupt schlüssig? 2. Ist es sinnvoll, die Variablen durch Queues zu ersetzen? 3. Wieso habe ich beim Aout einen Eingang in das Programm? 4. Wozu brauche ich die OLStart VIs? Verstehe den Hintergrund noch nicht ganz. 5. Was hat es mit den OLCloseTask rechts auf sich? Verstehe ich auch noch nicht. 6. Kann ich mein Taskin.net simulieren? 7. Wenn ich eine Sinusspannung als Eingang habe, muss der Reader auf MultipleSample oder Single Sample? Wie kann ich bei Multiple dann die Differenz von Ain0 und Ain1 bilden? . . . unzählige weitere, aber ich fange erstmal klein an. Schonmal besten Dank Matthias RE: Steuerung eines Servoventils - GerdW - 04.07.2011 10:43 Hallo Matthias, Zitat:1. Ist der grundsätzliche Aufbau überhaupt schlüssig?Nun ja: Ein Sequenz mit 5 Frames, die alle genau das gleiche tun? Wäre da nicht eine Schleife effektiver? Deine AI/AO-Tasks laufen asynchron zum UI, auch hier könnte die Steuerung des Startzeitpunktes sinnvoll sein. Zitat:2. Ist es sinnvoll, die Variablen durch Queues zu ersetzen?Welche "Variablen"? Zitat:3. Wieso habe ich beim Aout einen Eingang in das Programm?Der AO benötigt einen Wert, den er dann ausgeben soll. Diesen Anschluß hast du beim AO-Block... Zitat:4. Wozu brauche ich die OLStart VIs? Verstehe den Hintergrund noch nicht ganz.Du defnierst einen Task ("Aufgabe"). Dieser Task sollte auch irgendwo gestartet werden... Zitat:5. Was hat es mit den OLCloseTask rechts auf sich? Verstehe ich auch noch nicht.Der Task sollte auch kontrolliert beendet werden... Zitat:6. Kann ich mein Taskin.net simulieren?Ich sehe nirgends ein "Taskin.net"... Zitat:7. Wenn ich eine Sinusspannung als Eingang habe, muss der Reader auf MultipleSample oder Single SampleMulti/Single ist von deiner Lesefrequenz abhängig. Wenn dir softwaregetaktete 100Hz ausreichen, geht auch Single. Sonst eben MultiSample. Zitat:Wie kann ich bei Multiple dann die Differenz von Ain0 und Ain1 bilden?Genau gleich mit der Subtract-Funktion... RE: Steuerung eines Servoventils - Lucki - 04.07.2011 11:11 Auch für starr ablaufende Sequenzen ist eine State-machine meist besser. Du kannst dann z.B Pausieren, Messung beenden, das Vi stoppen, auch zwischen den Sequenzen. Habe mal ein kleines Gerüst erstellt, wie es sein könnte. Einer der Nachteile von Nicht-NI-Hardware ist, daß Du im Forum kaum Hilfe erwarten kannst, wenn nicht zufällig jemand Erfahrungen damit hat und die Treiber installiert hat. Da Du noch nichts gekauft hast, solltes Du das auch mal unter diesem Gesichtspunkt kalkulieren. RE: Steuerung eines Servoventils - MatthiasM - 05.07.2011 08:57 Hallo, ich habe jetzt die Sequenzen mit einer State-Machine aufgebaut, funktioniert auch alles einwandfrei. Dann fange ich mal mit den Fragepunkten an: 1.S.o. Meinst du damit die Synchronisation zwischen Sollwerterstellung und Ai/Ao Anbindung? Wie könnte man das denn realisieren? auch einfach einen Startzeitpunkt festlegen? 2. Damit meine ich z.B. die Variable für die Kurven Chart in den einzelnen Sequenzen. 6. War ungeschickt ausgedrückt. Die Sub-VIs von DT basieren ja auf OpenLayer.net Technoligie. Der Eingang wird dort als Taskin.net bezeichnet und ich habe gedacht, dass man hier irgenwie einen Kurvenverlauf vorgeben kann. 7. Wenn ich auf Multiple umstelle, funktioniert die Subtract Funktion nicht mehr. Ich kriege die Meldung, dass ein Poly-VI nicht mit einem Subtract verbunden werden kann. ( Abtastfrequenz sollen 1 kHz sein). Ich habe mir jetzt überlegt, das Programm noch einmal mit einem NI-USB 6211 aufzubauen. Beim 6008 ist mir der Analogausgang zu langsam und das 6211 Modul ist doppelt so teuer wie das von DataTranslation. Aber wenn ich das Programm mit NIDaq aufbaue, kann ich wenigstens den Grundlegenden Aufbau des Programms verifizieren, also wenigstens schonmal für meine Arbeit zeigen, dass es funktioniert wie geplant. Gruß Matthias RE: Steuerung eines Servoventils - MatthiasM - 05.07.2011 16:19 Hallo, ich habe das VI noch einmal überarbeitet. Mir erscheint der Aufbau jetzt relativ schlüssig, gibt sicherlich noch viel Verbesserungsvorschläge oder Fehler. Wäre echt für jede Anmerkung dankbar. Gruß Matthias Müller |