LabVIEWForum.de - Dateneinlesung trotz Sub VI

LabVIEWForum.de

Normale Version: Dateneinlesung trotz Sub VI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Mein Problem:

Ich programiere die automatisierung eines Systems, dies würde soweit gehen, aber ich sollte während der ganzen Zeit den Druck einlesen können.
Die einzelnen automatisierte Funktionen habe ich in SubVis gesteckt, wie kriege ich es nun hin, dass mein Druck ausgelesen wird, auch wenn gerade ein SubVi läuft?

Angehängt ein Screenshot der Schleife mit den SubVis. So wie es jetzt ist wird der Druck nur ausgelesen wenn kein Sub VI läuft.

Für jede Anregung Dankbar!

PS: LW Version 7.1
' schrieb:Die einzelnen automatisierte Funktionen habe ich in SubVis gesteckt, wie kriege ich es nun hin, dass mein Druck ausgelesen wird, auch wenn gerade ein SubVi läuft?

Der Standard - Tipp:

Lege eine zweite While-Schleife parallel und lese dort kontinuierlich den Druck ein.
Via Shared Variables, FGVs etc. und Semaphores kannst Du dann den Datenaustausch zw. den zwei Schleifen realisieren.

Gruß
' schrieb:Der Standard - Tipp:

Lege eine zweite While-Schleife parallel und lese dort kontinuierlich den Druck ein.
Via Shared Variables, FGVs etc. und Semaphores kannst Du dann den Datenaustausch zw. den zwei Schleifen realisieren.

Gruß


Das habe ich schon Probiert. Auch dann wird die Schleife nur ausgeführt, wenn die andere Schleife fertig ist. Oder gibt es eine Möglichkeit, sie nicht parallel laufen zu lassen? Sprich, das die eine trotzdem immer wieder durchläuft auch wenn die andere noch nicht fertig ist?
Hallo Isabelle,

Mr.T hat schon recht, vielleicht ist es noch nicht klar genug formuliert.

Aaalso, lege einfach parallel zu Deiner ersten While-Schleife eine zweite While-Schleife an, in der Du Dein Sub-VI aufrufst, das den Druck ausliest.

Dann klappt's auch mit den Daten.

Wäre noch die letzte Frage, ob Du die Daten synchronisieren mußt oder z.B. einfach das Auslesen des Drucks 4 mal schneller ausgeführt wird als die zweite While-Schleife.

Ich empfehle Dir auf jeden Fall noch eine Zeitverzögerung mit einzubauen, und wenn sie nur 1 oder 10ms ist.
Das entlastet Deine CPU ungemein.
' schrieb:Hallo Isabelle,

Mr.T hat schon recht, vielleicht ist es noch nicht klar genug formuliert.

Aaalso, lege einfach parallel zu Deiner ersten While-Schleife eine zweite While-Schleife an, in der Du Dein Sub-VI aufrufst, das den Druck ausliest.

Dann klappt's auch mit den Daten.

Wäre noch die letzte Frage, ob Du die Daten synchronisieren mußt oder z.B. einfach das Auslesen des Drucks 4 mal schneller ausgeführt wird als die zweite While-Schleife.

Ich empfehle Dir auf jeden Fall noch eine Zeitverzögerung mit einzubauen, und wenn sie nur 1 oder 10ms ist.
Das entlastet Deine CPU ungemein.

Ich werde es nochmals versuchen. Das mit der Zeitverzögerung ist klar, da ich den Druck nur all Sekunde auslese. Das ken ich (die Probleme hat ich schon). Werd mich nochmals melden falls es noch Probleme gibt. Vielen Dank!
Nochmals Danke, nun hat es funktioniert....

Allerdings steh ich nun beim nächsten Problem. Hat jemand eine Idee, wie ich die SubVi abbrechen kann? Da es eine Messanlage ist, muss ich die Möglichkeit haben die autoatisierten Vorgänge abzubrechen. Die verschiedenen Vorgänge habe ich in den SubVis. Nun habe ich viel über Property Nodes gelesen, allerdings nur im Zusamenhang mit While Schleifen. Funktioniert das auch bei Sequenzstrukturen? Oder gibt es eine andere Möglichkeit eine Sequenz zu stoppen wenn im Hauptprogramm ein Button gedrückt wird?

Kleine Bitte... Bin kein Coputercrack... also möglichst Anfängertauglich... Unsure

Danke
<div align="left">
' schrieb:Allerdings steh ich nun beim nächsten Problem. Hat jemand eine Idee, wie ich die SubVi abbrechen kann? Da es eine Messanlage ist, muss ich die Möglichkeit haben die autoatisierten Vorgänge abzubrechen. Die verschiedenen Vorgänge habe ich in den SubVis. Nun habe ich viel über Property Nodes gelesen, allerdings nur im Zusamenhang mit While Schleifen. Funktioniert das auch bei Sequenzstrukturen? Oder gibt es eine andere Möglichkeit eine Sequenz zu stoppen wenn im Hauptprogramm ein Button gedrückt wird?

Kleine Bitte... Bin kein Coputercrack... also möglichst Anfängertauglich... Unsure

Danke

Hallo Isabelle,

Hier sind 2 VIs, die mir Lucki mal auf eine Frage von mir reingestellt hat.:
[attachment=2985]
[attachment=2986]
Das ist wirklich nicht schwer finde ich. Selbst ich hab das begriffen.Big Grin
Sowohl im HauptVI als auch SubVI forderst Du einen Melder mit exakt dem gleichen Namen an. Das HauptVI sendet die Meldung. Das SubVI fragt den Melder solange in einer Schleife ab bis der Melder die Abbruchbedingung der Schleife sendet. Wenn Das SubVI die Meldung erhalten hat und die entsprechende Aktion ausgeführt hat wird der Melder feigegeben.
Eine andere Möglichkeit wäre es von einem Stop-Knopf im HauptVI eine Referenz in Frontpanel zu erstellen. Das Schaltverhalten dieses Stop-Knopfs darf nicht gelacht sein, da man sonst keine boolsche Eigenschaft übergeben kann!! Zu der Referenz erstellst Du ein Anzeigeelement und kopierst das in ein globales VI als globale Variable. Die Referenz verbindest Du mit einem Eigenschaftsknoten und deren Referenz-Ausgang mit der globalen Referenzvariable. Bei diesem wählst Du die Eigenschaft "Wert aus" und änderst dies in Schreiben. Dazu erstellst Du eine Konstante mit dem Wert False. In die Ereignisstruktur zu dem Stop-Knopf oder eine Case-Strruktur für eine andere Abbruchbedingung setzt Du die globale Variable. Die verbindest Du mit dem Referenz-Eingang des Eigenschaftsknoten. Diesmal setzt du Wert aber auf True. Im SubVI muss in der Hauptschleife wieder ein Eigenschaftsknoten mit der Eigenschaft Wert auf lesen stehen. Den Referenz-Eingang verbindest Du mit der globalen Variable, die Du außerhalb der Schleife platzierst. Den Wert verbindest Du mit dem Schleifenabbruch.
Hier die Beispiele:
[attachment=2987]
[attachment=2981]
[attachment=2988]

viel Erfolg
Grüße
SchwindelInside</div>
Referenz-URLs