LabVIEWForum.de - 3 analoge Ein- und Ausgänge nutzen

LabVIEWForum.de

Normale Version: 3 analoge Ein- und Ausgänge nutzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe folgendes Problem: ich möchte mit Hilfe einer DAQ Box 3 analoge Ausgangsspannungen erzeugen und damit ein Postionierungsaktor in x, y und z-Richtung ansteuern.
Dies hab ich mit Hilfe einer State Machine versucht, das Problem ist nur die Quene-Struktur nicht so recht funktioniert.
Ich weiß nicht so richtig wie ich die innerste While Schleife beende, so dass diese inaktiv wird und durch die Quenes in den nächsten Ereignis Case springt.
Ich möchte auch nicht einfach nur 3 Stopp Schalter einbinden, so dass ich jeweils die Schleife für die 3 Case beende.

Ich danke euch für eure Tipps
Vielleicht hilft Dir "DAQmx Wait Until Done.vi".

Gruß Markus
Hallo KaroAss,

Zitat:Dies hab ich mit Hilfe einer State Machine versucht, das Problem ist nur die Quene-Struktur nicht so recht funktioniert.
Das Ding heißt Queue...
Was heißt "funktioniert nicht so recht"? Was ist das Problem hier?
Wäre es nicht sinnvoll, die Vorgabe "Eingabe in nm..." in der Eventschleife abzufragen und als Parameter mit in die Queue zu schreiben?

Zitat:Ich weiß nicht so richtig wie ich die innerste While Schleife beende, so dass diese inaktiv wird und durch die Quenes in den nächsten Ereignis Case springt.
Vielleicht wäre hier eine sinnvolle Abbruchbedingung gefragt? Irgendwas in der Art von "Ziel mit gewünschter Präzision erreicht"? Und zusätzlich etwas Fehlerbehandlung wie "Ziel auch nach 10min immer noch nicht erreicht, vielleicht doch mal den Finger aus dem Fahrbereich nehmen!"?
Hallo Gerd,

danke für deine Antwort.
das habe ich mir auch schon übelegt, ich wusste nicht wie ich direkt die Daten via Parameter übertrage, so dass ich erstmal ein Schalter eingebunden habe, um den jeweiligen Case zu aktivieren. Wie muss die Architektur sein, damit das direkt funktioniert?


Ich bekomme die While Schleife nicht inaktiv. Solange diese nicht inaktiv ist, springt mein Programm nicht in den nächsten Event (z.B von x-Achse zu y-Achse)

Die Abbruchbedingung für den Postionierer ist erstmal nicht so entscheidet, weil man über das Programm nur den Aktor manuell verfahren soll. Wenn das Programm läuft möchte ich dies als exe kompilieren, so dass der Aktor an einem bestimmten Messrechner funktioniert.
Hallo KaroAss,

Zitat:ich wusste nicht wie ich direkt die Daten via Parameter übertrage
Deine Queue überträgt einen Cluster aus String und Variant, das hast du sicher aus irgendeinem Beispiel übernommen. Du könntest den Zielwert im Variant übertragen - oder das Variant durch einen DBL-Wert ersetzen, wenn es so für dich "übersichtlicher" wird...

Zitat:Ich bekomme die While Schleife nicht inaktiv.
Solange die Schleifen auf "endlos" eingestellt sind, wird das auch nicht funktionieren...

Zitat:Die Abbruchbedingung für den Postionierer ist erstmal nicht so entscheidet
Doch, die ist entscheidend, weil damit die Schleife beendet wird!
Für den Anfang könnte es ausreichen, wenn z.B. die Schleife einfach den Zielwert per DAQmx ausgibt und nach 10 Iterationen beendet wird (d.h. einfach eine zeitgesteuerte Loop...).
Perfekt!
so mach ich das, die Übertragung über Variant und das auslesen der Werte über Variant to Data, da brauche ich die nervigen Schalter auch nicht mehr.
Genau und als Abbruchbedingung werde ich eine zeitgesteuerte Loop benutzen.

Dank dir
Referenz-URLs