LabVIEWForum.de - Probleme mit Sub-VI und Sequenz

LabVIEWForum.de

Normale Version: Probleme mit Sub-VI und Sequenz
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich habe folgendes Problem:

Aus meinem Hauptprogramm heraus rufe ich ein Sub-VI auf, in dem sich weitere Sub-VIs befinden (in meinem Beispiel nur angedeutet, damit etwas einfacher). Dadurch kam es zu Problemen (Sub-VIs funktionierten nicht richtig, weil aktuelle Werte nicht ankamen), die ich durch kurze Recherche im Forum und die Verwendung von Meldern vorerst beheben konnte.

Nun haben sich aber zwei weitere Probleme ergeben:

1.) Die Sequenz in der While-Schleife meines Sub-VI wird nur einmal durchlaufen, statt N-mal und ich habe keine Idee woran das liegen könnte! Sad

2.) Die Übertragung der berechneten Werte aus dem Sub-VI in Hauptprogramm funktioniert nicht. Muss ich da auch mit Meldern arbeiten oder ganz anders?

Vielen Dank schonmal!

MfG

Pete

---

Lv85_img

[attachment=16669]

[attachment=16670]
Hallo Pete3000!

Könntest du wenn möglich deine angehängten VIs mal zu LV8.2 zurückspeichern? Würde dann auch mal gerne einen Blick darauf werfen.

Schöne Grüße
Falk
' schrieb:Hallo Pete3000!

Könntest du wenn möglich deine angehängten VIs mal zu LV8.2 zurückspeichern? Würde dann auch mal gerne einen Blick darauf werfen.

Schöne Grüße
Falk

Selbstverständlich! Bin für jede Hilfe dankbar!

Hier also die Versionen für LV 8.2 und 8.0:

Lv82_img:

[attachment=16671]
[attachment=16672]

Lv80_img:

[attachment=16673]
[attachment=16674]
Hallo Pete!

Also ich habe mir gerade deine VIs mal angeschaut und ich muss eingestehen, dass ich immer noch nicht verstanden habe was du genau machen willst. Besonders die Verwendung der 5 Notifiers hat mich komplett aus der Bahn geworfen. Wofür verwendest du die? Da du diese ja erst ein deinem SubVI erstellst, ist es sehr unwahrscheinlich, dass du diese irgendwo anders benutzt, oder?

Trotz meiner Unwissenheit hänge ich mal ein abgeändertes SubVI hier ran. Wenn ich nichts übersehen habe sollte, dann sollte das eigentlich deine Funktionalität widerspiegeln. Hoffe ich zu mindestensWink. Wenn nicht einfach in die Tonne hauenSmile.

Schöne Grüße
Falk

Lv82_img
Das sieht aber nocht gut aus.
1.) Die Melder machen hier gar keinen Sinn und sind auch falsch verwedet. Du übergibst ja alle Veriablen direkt über die Eingänge des Sub-VIs. Da brauchst Du doch kein Melder mehr. Falsche Verwendung: Die Eingabe von Daten in den Meldern funktioniert so überheupt nicht. An das VI "Melder anfordern" wird gewöhlich ein Konstante angeschossen, die den Datentyp definiert.

2) Stelle Dir vor, Du hättest die Ausgangvariablen ganz links anstatt ganz rechts platziert. Dann würdest Du wahrscheinlich einsehen, daß es so nicht funktioniert: Der noch nicht definierte Wert dieser Veriablen wird an die VI-Anschlüsse übergeben, und was dann noch mit lokalen Variablem gemacht wird, hat darauf keine Auswirkungen mehr. Warum überhaupt diese vielen Lokalen Variablen? Ich verwede auch welche, aber für einen Anfänger sind sie meist tödlich - oder man lernt gleich als erste Lektion die Wirkungweise der Parallelen Verarbeitung und macht sich mit den unerwarteten Effekten, die da passieren können, gründlich vertraut. Also Rat: Weitgehend weglassen und die Anzeigen direkt anschließen (Das darf auch innerhalb der Sequenz sein) .
Zur Not, aber das dürfte man eigentlich gar nicht vorschlagen, weil es immer noch grauenvoll ist, kannst Du künstlich eine Datenabhängigkeit herstellen wir im Bild gezeigt.

3) Die lokale Variablen an dem Stop-Zeichen werden gelesen, bevor die Sequenz abgearbeitet findet. Änderung siehe Bild.
[attachment=16676]
Vielen Dank erstmal für die schnellen Rückmeldungen auch zu fortgeschrittener Stunde! Echt spitze! Yourock

Offensichtlich hab ich die Sache mit den Meldern nicht ganz richtig verstanden. Für mich wirkte es bei der Einzelbefehlsausführung so, als ob die Werte nicht rechtzeitig ankommen. In einigen ähnlichen Beiträgen hab ich gelesen, dass mir das bei Schleifen evtl. weiterhelfen könnte, deswegen hab ich das mal ausprobiert. Sah auf den ersten Blick auch so aus, als ob das funktioniert. Das nur ganz kurz zur Erklärung meiner "verqueren" Programmierversuche... Blush

Nun aber nochmal zu den Verbesserungsvorschlägen:

Hab das mal ausprobiert und es funktioniert im Prinzip, allerdings erfüllt das Programm noch nicht ganz die eigentlichen Anforderungen. Sad

Wie bekomme ich es hin, dass das Sub-VI schon während seiner Ausführung die aktuellen Werte an das Hauptprogramm ausgibt und nicht wie momentan erst nach Ende des Sub-VIs der letzte Wert ans Hauptprogramm übergeben wird?
' schrieb:Wie bekomme ich es hin, dass das Sub-VI schon während seiner Ausführung die aktuellen Werte an das Hauptprogramm ausgibt und nicht wie momentan erst nach Ende des Sub-VIs der letzte Wert ans Hauptprogramm übergeben wird?
Ds geht mit globalen Variablen, oder aber - und viel besser - mit Meldern oder Queues.
Schau Dir mal dieses einfachste Beispiel von mir dazu an. Wenn Du das richtig verstanden hast, dann müßtest Du auch soweit sein das selbst richtig anzuwenden.
Dieses Prinzip des Datenaustausches wird häufig auch als "Erzeuger-Verbraucher-Struktur" (Producer-Consumer) bezeichnet. Kannst ja auch mal unter diesen Stichworten suchen.
' schrieb:Ds geht mit globalen Variablen, oder aber - und viel besser - mit Meldern oder Queues.
Schau Dir mal dieses einfachste Beispiel von mir dazu an. Wenn Du das richtig verstanden hast, dann müßtest Du auch soweit sein das selbst richtig anzuwenden.
Dieses Prinzip des Datenaustausches wird häufig auch als "Erzeuger-Verbraucher-Struktur" (Producer-Consumer) bezeichnet. Kannst ja auch mal unter diesen Stichworten suchen.

Danke für den Hinweis auf das Beispiel. Jetzt habe ich das Prinzip verstanden, hoffe ich.

Noch eine Frage zum Abschluss: Ist es auch möglich die für mich relvenaten Werte im Sub-VI zu einem Cluster zu bündeln und dann über nur einen Melder zu verschicken oder muss ich zwangsläufig für jeden zu übermittelnden Wert einen separaten Melder erstellen und dann auch wieder separat abfragen? Hab das eben mal ausprobiert und es klappt bei mir nicht...
' schrieb:Noch eine Frage zum Abschluss: Ist es auch möglich die für mich relvenaten Werte im Sub-VI zu einem Cluster zu bündeln und dann über nur einen Melder zu verschicken oder muss ich zwangsläufig für jeden zu übermittelnden Wert einen separaten Melder erstellen und dann auch wieder separat abfragen? Hab das eben mal ausprobiert und es klappt bei mir nicht...

Das sollte eigentlich klappen. Wichtig hierbei ist, dass die Datentypen 100% übereinstimmen. Am besten lege dir eine Typendefinition des Cluster mittels Control-Element (Strict Type Def.) an und verwende stets diesen für die Verdrahtung bei den Melder-VIs.


Schöne Grüße
Falk
' schrieb:Das sollte eigentlich klappen. Wichtig hierbei ist, dass die Datentypen 100% übereinstimmen. Am besten lege dir eine Typendefinition des Cluster mittels Control-Element (Strict Type Def.) an und verwende stets diesen für die Verdrahtung bei den Melder-VIs.

Ok, jetzt funktioniert der Melder auch mit Cluster! Besten Dank! Top2
Seiten: 1 2
Referenz-URLs