LabVIEWForum.de
2 VIs verknüpfen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: 2 VIs verknüpfen (/Thread-2-VIs-verknuepfen)



2 VIs verknüpfen - redhand - 29.11.2013 15:11

Hall Forum,
sorry das ich schon wieder frage, aber heute will es einfach nicht laufen BlinkBahn

ich habe 2 verschiedene VI's die unabhängig voneinander auch funktionieren. In einem wird eine Temperatur ausgewertet, im anderen ein Weg. Auch das dokumentieren in jeweils einer txt-Datei funktioniert.
Ziel ist es, alle halbe Sekunde beide Werte so parallel wie möglich in einer txt-Datei zu dokumentieren.
Ich habe jetzt schon x Versuche unternommen mit Schleifen an unterschiedlichen Orten etc...Ahrg1

Hat hierzu vlt jemand eine Idee?
Anbei beide VI's.


RE: 2 VIs verknüpfen - Y-P - 29.11.2013 15:13

Wie wäre es mit synchronisierten Schleifen?

Gruß Markus


RE: 2 VIs verknüpfen - redhand - 29.11.2013 15:33

(29.11.2013 15:13 )Y-P schrieb:  Wie wäre es mit synchronisierten Schleifen?


Und wo finde ich sowas? Ist damit sowas wie "Rendezvous" gemeint?


RE: 2 VIs verknüpfen - jg - 29.11.2013 15:34

Offtopic2
Bei der "Wegmessung" hast du gelernt, nicht dauernd die COM-Schnittstelle zu öffnen und zu schließen.
Wieso machst du das immer noch in der Temp-Messung.

Was soll das hier?
[attachment=47535]

Wieso machst du bei der Wegmessung noch mit Split-Array rum, ich habe dir den einfacheren Weg per Array-Index gezeigt.
Bei der Kanal-Auswahl habe ich dir auch etwas anderes gezeigt/programmiert. Dein Ansatz funktioniert jetzt nur, wenn du von deiner Gegenstelle immer nur Kanal 1 zurückbekommst, ansonsten nicht.

Wieso bei der Temp-Messung derselbe "Quatsch" mit Split-Array? Wenn du nur 1 Wert (aus 2 Registern) abfragst, dann brauchst du nicht mit Arrays zu hantieren.

Gruß, Jens


RE: 2 VIs verknüpfen - redhand - 29.11.2013 16:01

(29.11.2013 15:34 )jg schrieb:  Bei der Wegmessung hast du gelernt, nicht dauernd die COM-Schnittstelle zu öffnen und zu schließen.
Wieso machst du das immer noch in der Temp-Messung.
Übersehen von mir Angel_not Danke!

(29.11.2013 15:34 )jg schrieb:  Was soll das hier?
Zum vergessen, ich dachte irgendwie "Warten" braucht auf der rechten Seite auch eine Verbindung.

(29.11.2013 15:34 )jg schrieb:  Wieso bei der Temp-Messung derselbe "Quatsch" mit Split-Array? Wenn du nur 1 Wert (aus 2 Registern) abfragst, dann brauchst du nicht mit Arrays zu hantieren.
Ich übersehe eindeutig zu vielBlink

(29.11.2013 15:34 )jg schrieb:  Wieso machst du bei der Wegmessung noch mit Split-Array rum, ich habe dir den einfacheren Weg per Array-Index gezeigt.
Bei der Kanal-Auswahl habe ich dir auch etwas anderes gezeigt/programmiert. Dein Ansatz funktioniert jetzt nur, wenn du von deiner Gegenstelle immer nur Kanal 1 zurückbekommst, ansonsten nicht.

Meinst du das "Array dezimieren" nach der ersten Case-Struktur? Funktioniert das nicht?
Ist das mit der Kanal-Auswahl an mir vorbeigegangen?! Blink
Ich habe es versucht wenn ich einen von Hand eingegebenen String sende, dann ging es.

Und um auf meine Anfangsfrage zurückzukommen, wie mache ich eine synchronisierte Schleife? :/


RE: 2 VIs verknüpfen - Y-P - 29.11.2013 16:21

...und dann schließt Du es einfach an eine Forschleife an. O
Du weißt schon, dass man da die Anzahl der Durchläufe anschließt? Unsure

Gruß Markus

(29.11.2013 16:01 )redhand schrieb:  Zum vergessen, ich dachte irgendwie "Warten" braucht auf der rechten Seite auch eine Verbindung.



RE: 2 VIs verknüpfen - jg - 29.11.2013 16:34

(29.11.2013 16:21 )Y-P schrieb:  ...und dann schließt Du es einfach an eine Forschleife an. O
Du weißt schon, dass man da die Anzahl der Durchläufe anschließt? Unsure
Und dass die Ausgabe von "Wait [ms]" die Anzahl des computer-internen Millisekunden-Counters ist? x-Milliarden mal lässt du somit eine leere For-Schleife durchlaufen. Hmm
Wenn du die Abfrage alle 500 ms laufen lassen willst, langt auch ein paralleles Wait.

Zwecks Wegmessung, Zitat aus deinem anderen Thread:
Zitat:Die Signale kommen folgendermaßen:
Ich bekomme immer 2 Byte, wobei die ersten 4 Bit des ersten Bytes die Information der Kanalnummer beinhaltet (0001 für Kanal 1; 0010 für Kanal 2 etc.).
Was ist, wenn deine Gegenstelle mehrere Kanäle überträgt und du beim Start der Kommunikation nicht Kanal 1 erwischst? Dann geht deine Wahl der "Nullsetzung" schief.

Gruß, Jens

--

Und jetzt noch ein konstruktiver Vorschlag: Du könntest per Queues immer einen Cluster "Zeitstempel + Wert" aus deinen beiden VIs an eine dritte parallele Schleife übertragen. Dort werden die ankommenden Werte (inkl. Timestamp) analysiert und dann zusammengesetzt.

Gaaaanz einfache Variante:
Akt. Werte der beiden Schleife in lokale Anzeige schreiben, und parallel das Speichern im 500 ms Takt, wobei immer der zuletzt ausgelesene Wert gespeichert wird. Ist zwar leicht asynchron, aber die Asynchronität hast du schon durch Abfrage 2er Messgeräte per RS-232-Schnittstelle.


RE: 2 VIs verknüpfen - jg - 29.11.2013 19:23

Hier eine Quick&Dirty Umsetzung mit lokalen Variablen. Ich geb's zu, nicht sonderlich schön, aber zum ersten Probieren sollte es reichen.
[attachment=47536]
Gruß, Jens


RE: 2 VIs verknüpfen - redhand - 02.12.2013 10:03

(29.11.2013 19:23 )jg schrieb:  Hier eine Quick&Dirty Umsetzung mit lokalen Variablen. Ich geb's zu, nicht sonderlich schön, aber zum ersten Probieren sollte es reichen.

Gruß, Jens

Danke für die Idee mit den lokalen Variablen. Genau nach sowas habe ich zum ersten Probieren auch gesucht.
Problem ist, dass die beiden Schlaufen zu Weg- bzw. Temperaturmessung nicht parallel laufen :/
Stichwort synchronisierte Schleifen klingt gut, wie man so etwas umsetzt komm ich einfach nicht voran ConstructionBlink
Im Idealfall sollte im zuletzt hochgeladenen VI von jg ("Temperaturmessung.vi") die beiden While-Schleifen parallel laufen.
Ist das möglich?

Grüße redhand


RE: 2 VIs verknüpfen - Trinitatis - 02.12.2013 10:09

(02.12.2013 10:03 )redhand schrieb:  Stichwort synchronisierte Schleifen klingt gut, wie man so etwas umsetzt komm ich einfach nicht voran ConstructionBlink

Hallo Redhand,

2 Schleifen parallel laufen zu lassen ist z.B. über Rendezvous umsetzbar oder im einfacheren Fall auch über die Funktion warte vielfache ms, wobei hier sichergestellt sein muss, dass der vorher/hinterher auszuführende Code innerhalb der Wartezeit ausgeführt werden kann.


Gruß, Marko