LabVIEWForum.de - Komplizierte Abfrage mit Schleife

LabVIEWForum.de

Normale Version: Komplizierte Abfrage mit Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Das schreit doch nach einer State-Machine als Lösung!

Gruß, Jens
Hi Jens,
meinst du sowas vielleicht:
http://LabVIEWwiki.org/State_machine
Danke schoen fuer den Hinweis. Das will ich gerne versuchen.

Viele Gruesse
Blue
Hallo LVF.

Ich habe jetzt eine Version, die fast das macht, was ich mir vorstelle. Ich habe allerdings noch ein Problem.

Die Pumpdirection wird per Schieberegister in eine For-Schleife reingefuettert. Die For-Schleife zaehlt die Anzahl der halben Pumpzklen im Moment.
Innerhalb der For-Schleife befindet sich eine Case-Abfrage, die die Pumpdirection abfragt und in dieser Case-Struktur befindet sich eine While-Schleife, die solange ausgefuert werden soll, bis das Zielvolumen erreicht ist. Ich habe die Abbruchbedigung auf "Continue if true" gesetzt. Ich hoffe, das heisst, die Schleife wird verlassen, sobald das Zielvolumen erreicht ist.

Was passiert jetzt: Alles laeuft wunderbar bis meine while-Schleife erreicht wird. Die Werte bleiben einfach nicht in der While-Schleife. Die Pumpdirection wird einfach weiter geleitet und verbleibt nicht in der while-Schleife. Das ist doof, weil dann die for-Schleife weiterlaeuft und die Pumpdirection dann gewechselt wird. Die For-Schleife soll aber erst dann weiterspringen, wenn die while-Schleife beendet ist. Wie vermeidet man dieses Verhalten?

Ich haenge meine jetzige Version einmal an. Vielleicht mag ja jemand kurz drueberschauen. Es ist LabVIEW 8.5

Vielen Dank.

Gruesse
Blue
Aus dem hohlen Bauch heraus und mangels SubVIs würde ich es mal mit Schieberegistern versuchen.

Gruß Markus
Hallo
Ich habe gerade in der while-Schleife die Abbruch-Bedingung gewechselt von "Continue if true" to "stop if true". Dann bleiben die Sachen auch in der Schleife und die while-Schleife wird ausgefuehrt. Ich habe das "Continue if true" falsch verstanden. Tut mir leid.
Dumme Frage, aber wie verlasse ich die Schleife, wenn Target reached true ist, ohne das Programm komplett zu stoppen? Die Status-VI fragt in der while-Schleife bei jedem Durchgang den aktuellen Status der Pumpe ab.

Markus, welche Vis moechtest du bitte sehen?


Viele Gruesse blue.
Ich wollte Dein VI öffnen und sehe nur Kästen mit "?". Ich weiß allerdings nicht, ob die VIs wichtig waren / sind.
Hast Du das mit den Schieberegistern versucht? Vielleicht habe ich Deine Frage / Dein Problem aber auch nicht richtig verstanden.

Gruß Markus
Meine Schleife bricht aus einem anderen Grund nicht ab. Die Abbruchbedigung wird von einer SubVi nicht ausgegeben.
Der Grund ist der folgende:

Meine Pumpe gibt ihren Status zurueck und der sieht wie folgt aus:

01 steht fuer die Pumpen-Nummer.
Die Zahl wird nun von verschiedenen Symbolen gefolgt:

Pumpe ist idle: 01: (: zeigt idle an)
Pumpe injiziert: 01> (> meint injiziert)
Pump ist gegen den limit switch gedonnert: 01* (* meint stalled)

Nur im Fall, wo das Zielvolumen erreicht wird, gibt sie zurueck: 01:T* (T* meint Target reached). Was der zusaetzliche Doppelpunkt da macht, erschliesst sich mir nicht. Macht das Sinn?


Der Hersteller faengt das nun mit einer match pattern function ab. Regular expression ist [<>:*T]. Aber im Falle von T* greift das nicht, weil dann : nur zurueckgegeben wird.

Meine Fragen sind jetzt:

1. Gibt es eine Moeglichkeit, einen Substring in [<>:*T] einzufuegen, der :T* lauten wuerde?
2. Oder muss ich das Problem ueber die Stringlaenge abfangen? Der String ist sonst drei Zeichen lang, im Target reached-Fall 5 Zeichen lang.
3. Ich versuche gerade mit [:T*] und [Confused] zu experimentieren, s dass reg exprression lautet: [<>[Confused]*[:T*]], aber das klappt leider nicht. Bei Target reached bekomme ich trotzdem noch den : ausgespuckt.
4. Ist die Adresse null, dann taucht nichts auf, also kein 00. Die Strings beginnen dann einfach nur mit >, :, T* oder *. Macht das Sinn seitens des Herstellers?

Ich haenge die VI auch mal an. LabVIEW 8.5

Vielen Dank fuers Anschauen.

Viele Gruesse blue
Seiten: 1 2
Referenz-URLs