Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
19.05.2015, 11:59 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2015 13:43 von jg.)
Hallo,
ich lese mit einem Sub-VI über meine COM-Schnittstelle ein Messwertprotokoll von einem Gerät "PCE-Instrument" ein.
Mein Problem ist nachdem ich das Protokoll habe, soll Programmablauf weiter geführt werden aber funktioniert das nicht.
es kommt immer folgende-Fehlermeldung "Zeitüberschreitung".
Ich kann auch kein Auslesen bei der Programmierung bekommen.
Welschen Teil habe ich falsche gemacht? schnittstellenbeschreibung-ab-ls-lsm-pm-tp-sd-serie.pdf (Größe: 191,37 KB / Downloads: 357)
- Das mit dem TermChar hast du falsch gemacht. Aktiviere das TermChar und lass es auf dem Default (LF=0x0A)!
- Die Anzahl zu lesender Bytes ist eigentlich ok, ich würde aber trotzdem statt der 16 eine 99 eintragen…
- Hast du die Stringkonstante am VISAWrite auf "Hex-Display" eingestellt? Falsch ist vor allem, dass du den Displaymode nicht anzeigen lässt!
Ansonsten:
- Ersetze das ConcatString durch FormatIntoString - das macht dein VI viel übersichtlicher…
- "Messrate ms" sollte vom Typ U32 sein…
Die Programm kann so zum Überlauf des Lesepuffers führen
Die Kommunikation erfolgt nach dem Master-Slave-Prinzip: Der PC sendet, die Waage antwortet. Damit das Gewicht dauernd aktuell empfangen wird, wir dauernd der Lesebefehl gesendet. Soweit OK.
Und jetzt kommts: Wenn das Gewicht nicht mehr von der Waage empfangen werden soll, muss man aufhören, den Lesebefehl zu senden. Falsch ist es, den Lesebefehl weiter zu senden und die Antwort nicht mehr aus dem Lesepuffer zu holen. Das führt zum Überlauf.
Übrigens: Wenn Du kein VI sendest, verschenkst Du die Chance, dass dir mit einem korrigiertem VI geantwortet wird. Und falls Du dich noch dazu entschließen solltest: Unbedingt (abgespecktes) Haupt-und Sub-VI posten. Vielleicht kommen die Werte deshalb nicht im Haupt-VI an, weil in der Kommunikation zwischen beiden etwas nicht läuft. (Üblicherweise würde man die Werte mit einer Queue zum MainVI senden. Davon ist bei Dir nichts zu sehen)
NB: Die Messrate kannst Du auch weglassen. Die Waage wartet mit der Antwort, bis sie austariert ist, und dann wartet das Read-VI bis die Antwort vollständig ist. Die Messrate hält sich also auch ohne Waits in Grenzen, und so ist die Gewichtsanzeige immer maximal aktuell.
19.05.2015, 14:01 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2015 14:11 von yashire.)
- Das mit dem TermChar hast du falsch gemacht. Aktiviere das TermChar und lass es auf dem Default (LF=0x0A)!
- Die Anzahl zu lesender Bytes ist eigentlich ok, ich würde aber trotzdem statt der 16 eine 99 eintragen…
- Hast du die Stringkonstante am VISAWrite auf "Hex-Display" eingestellt? Falsch ist vor allem, dass du den Displaymode nicht anzeigen lässt!
Ansonsten:
- Ersetze das ConcatString durch FormatIntoString - das macht dein VI viel übersichtlicher…
- "Messrate ms" sollte vom Typ U32 sein…
hallo GerdW,
habe ich so unter geändert aber bekomme ich kein Auslesen.
Zum Vorteil wird es kein "Zeitüberschreitung" anzeigen.
Ich bin neuer Anfang mit LabVIEW und weiße nicht, wie ich weiter machen soll....
(19.05.2015 13:07 )Lucki schrieb: Die Programm kann so zum Überlauf des Lesepuffers führen
Die Kommunikation erfolgt nach dem Master-Slave-Prinzip: Der PC sendet, die Waage antwortet. Damit das Gewicht dauernd aktuell empfangen wird, wir dauernd der Lesebefehl gesendet. Soweit OK.
Und jetzt kommts: Wenn das Gewicht nicht mehr von der Waage empfangen werden soll, muss man aufhören, den Lesebefehl zu senden. Falsch ist es, den Lesebefehl weiter zu senden und die Antwort nicht mehr aus dem Lesepuffer zu holen. Das führt zum Überlauf.
Übrigens: Wenn Du kein VI sendest, verschenkst Du die Chance, dass dir mit einem korrigiertem VI geantwortet wird. Und falls Du dich noch dazu entschließen solltest: Unbedingt (abgespecktes) Haupt-und Sub-VI posten. Vielleicht kommen die Werte deshalb nicht im Haupt-VI an, weil in der Kommunikation zwischen beiden etwas nicht läuft. (Üblicherweise würde man die Werte mit einer Queue zum MainVI senden. Davon ist bei Dir nichts zu sehen)
NB: Die Messrate kannst Du auch weglassen. Die Waage wartet mit der Antwort, bis sie austariert ist, und dann wartet das Read-VI bis die Antwort vollständig ist. Die Messrate hält sich also auch ohne Waits in Grenzen, und so ist die Gewichtsanzeige immer maximal aktuell.
Dank für Ihre Hilfe.
Jetzt weiße ich nicht wo das Problem ist.
Ich habe immer kein Auslesen bekommen...
(19.05.2015 12:31 )GerdW schrieb: Hallo yashire,
Zitat:Welschen Teil habe ich falsche gemacht?
- Das mit dem TermChar hast du falsch gemacht. Aktiviere das TermChar und lass es auf dem Default (LF=0x0A)!
- Die Anzahl zu lesender Bytes ist eigentlich ok, ich würde aber trotzdem statt der 16 eine 99 eintragen…
- Hast du die Stringkonstante am VISAWrite auf "Hex-Display" eingestellt? Falsch ist vor allem, dass du den Displaymode nicht anzeigen lässt!
Ansonsten:
- Ersetze das ConcatString durch FormatIntoString - das macht dein VI viel übersichtlicher…
- "Messrate ms" sollte vom Typ U32 sein…
Und ich habe die Stringkonstante am VISAWrite auf "Hex-Display" eingestellt...
Termination Char bitte über "VISA Configure Serial Port" definieren! Dort hast du es deaktiviert, da nützt es wenig, danach einen Termination-Character per Property-Node zu setzen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!