LabVIEWForum.de
visa write; visa read zeitgesteuert - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: visa write; visa read zeitgesteuert (/Thread-visa-write-visa-read-zeitgesteuert)



visa write; visa read zeitgesteuert - ThomasDipl - 19.11.2008 12:24

Hallo zusammen,

ich hab folgendes Problem. Im Moment hab ich jeweils zwischen visa write und visa read und den darauf folgenden visa write und visa read Zeitverzögerungen eingebaut (siehe vi. Case 12). Allerdings arbeitet LabVIEW diese Zeitverzögerungen nicht ordnungsgemäß ab. Konnte mir auch niemand sagen warum. Allerdings ist für eine richtige Antwort diese Verzögerung notwendig. Es ist auch schon mal der Fall aufgetreten, das LabVIEW mir zwei Befehle auf einmal geschickt hat und ich dann eine falsche Antwort bekommen habe. gibt es eine Möglichkeit diese nicht richtig arbeitende Zeitverzögerung zu ersetzten? Das ich mit dem Senden immer warte bis ich eine Antwort bekommen habe. Sprich Frage 1 senden, wenn Antwort da, Antwort eins empfangen, nach dem Empfangsvorgang Frage 2 senden, wenn Antwort da, Antwort zwei empfangen usw.

Vielen Dank für die Hilfe.

Im Anhang ist das vi.

LabVIEW 8.5


visa write; visa read zeitgesteuert - Achim - 19.11.2008 13:55

' schrieb:Allerdings arbeitet LabVIEW diese Zeitverzögerungen nicht ordnungsgemäß ab.

Wie hast du das festgestellt?

[attachment=15418]


visa write; visa read zeitgesteuert - ThomasDipl - 19.11.2008 14:01

Servus Achim,

ich hab am Serial Port Monitor gelauscht! Den ersten Case macht er sauber. Den zweiten und den dritten zusammen, und danach den vierten, fünften, sechsten und siebten zusammen.


visa write; visa read zeitgesteuert - jg - 19.11.2008 14:07

Das die Cases zusammen ausgeführt werden, kann gar nicht sein, da wird dein Serial Port Monitor zu langsam sein, denn du hast in den Cases 0-6 schließlich eine Wartezeit von Null drinstehen:

[attachment=15420]

Was ist eigentlich jeweils die Antwort, die du erwartest? Du testest dies momentan nur in einem Case, ansonsten langt es die offenbar, wenn du schon ein beliebiges Zeichen bzw. sogar gar kein Zeichen als Antwort erhältst.

Gruß, Jens


visa write; visa read zeitgesteuert - ThomasDipl - 19.11.2008 14:19

Case 0-6 bekommt er jeweils die gleiche Antwort. Deshalb kann ich die ohne Wartezeit ausführen! Danach kommt der Einwahlvorgang auf den eine ganz bestimmte Antwort kommt. Falls das Modem correct verbunden ist, folgen die restlichen Cases für das aktivieren der Steuerung. Und falls diese nicht genau nacheinander abgearbeitet werden, bekomme ich keine Daten. Und das ist leider ab und zu der Fall. Wie gesagt, ab und zu funktioniert´s und ab und zu eben nicht. Jeweils mit dem selben vi.


visa write; visa read zeitgesteuert - Lucki - 19.11.2008 15:36

' schrieb:Case 0-6 bekommt er jeweils die gleiche Antwort. Deshalb kann ich die ohne Wartezeit ausführen!
So funktioniert das nicht.
Das "Senden" funktioniert so, daß die Bytes in den Sendepuffer geschoben werden, von wo aus dann mit irgendeinen windowseigenen Slave-Prozess die Serielle Leitung bedient wird. Das VI "Senden" hat keine Wartezeit.
Wenn Du danach sofort abfragst, wieviele Bytes im Empfangsbuffer sind, ist die Antwort immer Null, denn die Gegensstelle hat zu diesem Zeitpunkt noch nicht einmal die Nachricht bekommen, daß sie etwas senden soll.
Das machst Du sieben Mal hintereinader so.
Wenn dann einmmal eine Wartezeit kommt und sich Gelgenheit bietet, daß sich im Empfangspuffer etwas ansammeln kann, dann sind es garantiert nicht die gewünschten Bytes auf Grund er Anfrage beim letzten Senden, sondern irgendetwas ganz anderes. Was es ist ist, laßt sich schwer sagen, denn was weiß ich wie die Gegenstelle reagiert, wenn Du sieben Mal umittelber hintereinander etwas sendest ohne die Antworten abzuwarten. Vermutlich hat sie davon einen Hustenanfall bekommen.

Ganz und gar abwegig ist Deine Vermutung, daß das Warte-VI nicht richtig funktioniert.
Du solltest als Diagnose an alle Leitungen "Bytes im Buffer" Anzeigen oder Sonden anschließen, und nachschauen, ob überall die richtigen Bytes empfangen wurden, auch wenn Dich diese Bytes letztlich nicht interessieren.


visa write; visa read zeitgesteuert - ThomasDipl - 19.11.2008 16:01

Lucki, genau diese Zeit brauche ich als Verzögerung!!! Senden, Empfangen und dann, erst wenn die gewünschten Bytes empfangen wurden die nächsten wieder senden!!! Wie funktioniert denn die Diagnose? Genau so eine Möglcihkeit suche ich, welche visa read abwartet und erst anschl. das nächste visa write betätigt.


visa write; visa read zeitgesteuert - jg - 19.11.2008 16:48

Nachdem mir gerade langweilig ist, habe ich dir mal eine Event-basierte Leseroutine gebastelt. Diese kannst du als SubVI einsetzen, dann wird dein VI auch wesentlich übersichtlicher. Was hierbei voraussetzt wird ist, dass du bei jedem Befehl wissen musst, wieviele Zeichen deine Antwort enthält.
[attachment=15425]
Wenn jede Antwort mit einem bestimmten Zeichen (z.B. Carriage Return) abgeschlossen wird, könnte man die Leseschleife natürlich auch darauf hin umbauen.

Was du allerdings nicht vergessen darfst, nach dem Öffnen der Schnittstelle folgendes VI einfügen:
[attachment=15424]

Lv85_img[attachment=15426]

Gruß, Jens

P.S.: Sag mal, so ganz hast du das Konzept der StateMachine noch nicht verstanden, oder wieso baust du in "State 12" nochmal die komplette State-Machine ein?Hmm


visa write; visa read zeitgesteuert - Achim - 20.11.2008 06:46

' schrieb:Nachdem mir gerade langweilig ist,

Wo gibt's den sowas?!HmmBig GrinWinkTongue