LabVIEWForum.de - Datengenerierung über SubVI

LabVIEWForum.de

Normale Version: Datengenerierung über SubVI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Team,

ich stehe vor einem simplen Problem, was jedoch große Auswirkungen hat.
Ich habe ein Unterprogramm geschrieben was im Einzelaufruf super funktioniert und tut was es soll.
Rufe ich dieses über ein übergeordnetes VI auf, ohne irgend etwas zu ändern, werden falsche Werte einer Hardware generiert.
Die Hardware sendet mir zwei eindeutig unverwechselbare Werte. Im Einzeldurchlauf des SubVI passts ohne Probleme.
Wie schon beschrieben verändern sich die Werte bei einem Aufruf über ein übergeordnetes VI. Diese sind jedoch von der Hardware fix definiert.
Gibts dafür ne mögliche Erklärung??

Vielen Dank
Ihr seit die Besten =) und könnt mir echt gut helfen.
Hallo Jan,

mal schauen: Glas1

Glas2
Mist, funktioniert ohne VI überhaupt nicht…
Schuss ins Blaue: Versuchst du gewollt/ungewollt irgendwelche Typkonvertierungen durchzuführen? Das führt dann meist dazu, dass man was übersieht und falsche Werte ausgespuckt bekommt.
Stichwort Typecast
Ja da gebe ich euch vollkommen recht, nur meines Erachtens nach bringt die Anzeige des VI´s nicht wirklich was zur Thematik.
Trotzdem schonmal vielen Dank.
Also: auf Bild 1 ist eine Abfrage einer seriellen Schnittstelle programmiert. Diese soll 30 Bytes einlesen und danach stoppen. funktioniert im Einzeldurchlauf einwandfrei!!
Auf Bild 2 sind jeweils unterschiedliche Arrays im Hex-Format.
In der rechten Spalte ist das Array, wenn es Einzeln als Vi ausgeführt wird.
In der linken Spalte ist das selbe Array, ohne etwas an der Programmierung geändert zu haben (Ansprechen/ Konfiguration der Hardware zu ändern, etc.) abgebildet, welches über ein übergeordnetes VI aufgrufen wird (boolsches Bedienelement im übergeordneten VI ruft Sub-VI auf) und sich ab Zeile 5 bis zwölf von der rechten Spalte unterscheidet.
In meiner aktuellen Programmierung wird dieser fehler generiert.

Erstelle ich ein neues einzelnes VI, welches das Sub-VI aufruft. passiert diesewr Fehler nicht.
Ich möchte jetzt hier nicht meine gesamte Programmierung aufzeigen.
Es geht nur darum, ob jemand schonmal Erfahrungen gesammelt hat, das Fehler auftreten können wenn ein Sub-VI vom VI aufgerufen wird.
Ich kann mir den Fehler nicht erklären, arbeite aber schon länger mit LV wo diese aktion bisher immer funktioniert hat.
Evtl wurde eine Einstellung versehentlich geändert (Sub-Vi-Einstellungen, vllt irgendwas mit beim Aufruf neu generieren oder Laden).
Ich habe bis jetzt keine Lösung zu dem Probelem gefunden.
Vllt weiß jemand einen Rat.

Danke für eurern Rat.
Hallo Jan,

warum arbeitest du mit BytesAtPort, wenn du vorher schon genau weißt, dass du 30 Bytes lesen willst?

Sind die abweichenden Bytes relevant? Irgendein Messwert o.ä. (00000000 vs. 01274854)?
Ja ok das Bytes at Port war aus einer vorherigen Programmierung übernommen. In dieser Sache weiß ich vorher schon, wieviel bytes gelesen werden.
ja die Abweichung ist gerade das Problem. In dem Beispiel bilden 4 Bytes eine SGL.

Da das Beispiel aber funktioniert wenn man es aus einem neuem VI öffnet, die aktuelle Programmierung aber nur eine übergeordnete Ebene besitzt, ist mir nicht klar, woran es klemmt Wink
Der übergeordnete Aufruf ist eine einfache Boolsche Abfrage.

Tritt das Problem auf, muss die Hardware vom Port getrennt und wieder angeschlossen, sodass dieses wieder im Einzeldurchlauf des Sub-VI funktioniert.
Tritt der Fehler einmal durch den programmtechnischen, übergeordneten Aufruf auf, ist der fehler auch in den Einzeldurchführungen vorhanden, die vorher funktioniert haben.
Ich weiß nicht ob ich einen Hardwarefehler einschließen kann...weil es eine Abfragefehler ist. Port-Reset löst das Problem für die Einzeldurchläufe der Sub-VI
Die Schreibebefehle etc. bleiben immer gleich!

Hm....
Referenz-URLs