04.02.2009, 14:28
Beitrag #1
|
Gabs
LVF-Grünschnabel
Beiträge: 41
Registriert seit: Jan 2005
7.1 ... 2009
1995
EN
76XXX
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
Hallo allerseits,
ich habe ein Problem mit einem Gerät, das über TCP/IP angesprochen wird. Der Termination Character für das Lesen von Antworten ist ein LineFeed und ist in der Initialisierungsroutine auch so eingestellt, Enable TermChar ist auf TRUE gesetzt. Auf bestimmte Kommandos, die ich an das Gerät über VISA schicke, sendet das Gerät ein 1+Linefeed oder 0+Linefeed. Nun erwarte ich logischerweise, daß VISA immer bis zum Termination Character liest. Meistens tut es das auch, aber manchmal kommt es vor daß die VISA Read Funktion schon nach der 0 (oder 1) aufhört zu lesen und erst im nächsten Lesevorgang das Linefeed eingelesen wird. Wie kann so etwas denn passieren? Das Gerät selbst kommuniziert intern über einen XPort. Unter RS-232 (auch über VISA) tritt der Effekt nicht auf, es ist also kein Problem der Firmware des Gerätes (die vom XPort ja nichts mitbekommt).
Hat jemand eine Idee was da los sein könnte? Tritt auf unter LabVIEW Version 7.1 mit VISA 3.6 und VISA 4.1.
Gruß,
Gabs
|
|
|
04.02.2009, 15:16
(Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2009 15:16 von Y-P.)
Beitrag #2
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
Hast Du das auch schon mal mit einem neuen LabVIEW getestet (Du hast ja bis 8.5.1), oder tritt das nur bei LabVIEW 7.1 auf?
Gruß Markus
' schrieb:Tritt auf unter LabVIEW Version 7.1 mit VISA 3.6 und VISA 4.1.
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
04.02.2009, 15:17
Beitrag #3
|
Gabs
LVF-Grünschnabel
Beiträge: 41
Registriert seit: Jan 2005
7.1 ... 2009
1995
EN
76XXX
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
Hallo Markus,
nein, bisher nur mit LV 7.1, aber die Kommunikation sollte von der VISA Version abhängen, nicht von der LabVIEW Version (jedenfalls gehe ich davon aus).
Gruß,
Gabs
' schrieb:Hast Du das auch schon mal mit einem neuen LabVIEW getestet (Du hast ja bis 8.5.1), oder tritt das nur bei LabVIEW 7.1 auf?
Gruß Markus
|
|
|
04.02.2009, 15:31
Beitrag #4
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
Würde mich interessieren, ob das Problem auch auftritt, wenn Du eine neuere Version von LabVIEW und natürlich dann auch VISA verwendest. Bei VISA ist, soweit ich weiß, momentan die Version 4.4 die aktuellste Version.
Ich hatte so einen Fehler bisher nicht.
Kannst Du das testen, oder ist das ein zu großer Aufwand? Interessant wäre es.
Gruß Markus
' schrieb:Hallo Markus,
nein, bisher nur mit LV 7.1, aber die Kommunikation sollte von der VISA Version abhängen, nicht von der LabVIEW Version (jedenfalls gehe ich davon aus).
Gruß,
Gabs
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
04.02.2009, 15:37
Beitrag #5
|
eg
LVF-SeniorMod
Beiträge: 3.868
Registriert seit: Nov 2005
2016
2003
kA
66111
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
Ich verstehe nicht so ganz was VISA mit TCP/IP zu tun hat. Es sind doch unterschiedliche Bibliotheken.
Ansonsten, wenn du bei der konfiguration der Schnittstelle Termination Char eingeschaltet hast und bis zu Term. Char lesen willst, musst du beim Lesen eine große Zahl für Anzahl Bytes einstellen. Das Lesen wird automatisch am Term. Char abgebrochen.
|
|
|
04.02.2009, 16:17
Beitrag #6
|
Gabs
LVF-Grünschnabel
Beiträge: 41
Registriert seit: Jan 2005
7.1 ... 2009
1995
EN
76XXX
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
' schrieb:Ich verstehe nicht so ganz was VISA mit TCP/IP zu tun hat. Es sind doch unterschiedliche Bibliotheken.
Was VISA mit TCP/IP zu tun hat??? Die TCP/IP Kommunikation läuft über VISA, TCP/IP ist das Protokoll, VISA der Treiber...
' schrieb:Ansonsten, wenn du bei der konfiguration der Schnittstelle Termination Char eingeschaltet hast und bis zu Term. Char lesen willst, musst du beim Lesen eine große Zahl für Anzahl Bytes einstellen. Das Lesen wird automatisch am Term. Char abgebrochen.
Genau so sollte es funktionieren, tut es aber nunmal nicht - das ist ja genau meine Frage.
@ Markus: prinzipiell können wir das noch testen, müssen uns aber erstmal eine Partition dafür bauen, das wird etwas dauern.
Gruß,
Gabs
|
|
|
04.02.2009, 16:20
Beitrag #7
|
eg
LVF-SeniorMod
Beiträge: 3.868
Registriert seit: Nov 2005
2016
2003
kA
66111
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
' schrieb:Was VISA mit TCP/IP zu tun hat??? Die TCP/IP Kommunikation läuft über VISA, TCP/IP ist das Protokoll, VISA der Treiber...
Ah, sorry, klar. Ich benutze aber VIs aus der Data Communication->TCP Palette, wahrscheinlich benutzen diese intern auch die VISA-Library.
|
|
|
06.02.2009, 07:21
Beitrag #8
|
rolfk
LVF-Guru
Beiträge: 2.306
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
TCP/IP Read liest nicht bis zum Termination Character
' schrieb:Ah, sorry, klar. Ich benutze aber VIs aus der Data Communication->TCP Palette, wahrscheinlich benutzen diese intern auch die VISA-Library.
Nein, ganz sicher nicht. Die waren zuerst da. Dann kam VISA für GPIB und RS-232 zuerst als reine VI Lösung. Das war aber ziemlich komisch, unhandlich und recht unzuverlässig.
Dann kam VISA als externe Library und irgenwann konnte VISA auch TCP/IP da das als neuer Standard bei Messinstrumenten anzukommen drohte. Die Idee ist an sich bestechend und funktioniert bei VXI-11 Protokoll Geräten sogar. Ein einziger Instrument Treiber ganz egal ob das Gerät eine GPIB, RS-232, TCP/IP oder USB Schnittstelle hat.
Rolf Kalbermatter
|
|
|
06.02.2009, 09:19
Beitrag #9
|
Gabs
LVF-Grünschnabel
Beiträge: 41
Registriert seit: Jan 2005
7.1 ... 2009
1995
EN
76XXX
Deutschland
|
TCP/IP Read liest nicht bis zum Termination Character
' schrieb:Die Idee ist an sich bestechend und funktioniert bei VXI-11 Protokoll Geräten sogar. Ein einziger Instrument Treiber ganz egal ob das Gerät eine GPIB, RS-232, TCP/IP oder USB Schnittstelle hat.
Hallo Rolf,
die Idee funktioniert auch sonst recht gut - wir nutzen VISA für RS-232, GPIB und TCP/IP Steuerung unserer Kontroller, mit eigener Kommandosprache (identisch für alle Systeme von uns) und unter verschiedensten Betriebssystemen. Schlecht ist, daß die Initialisierung für die 3 unterstützten Schnittstellenprotokolle komplett verschieden ist. Noch schlechter ist daß immer noch solche Effekte wie oben beschrieben auftauchen. Bisher hab ich noch keine Lösung für das Problem
Gruß,
Gabs
|
|
|
06.02.2009, 19:19
|
rolfk
LVF-Guru
Beiträge: 2.306
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
TCP/IP Read liest nicht bis zum Termination Character
' schrieb:Hallo Rolf,
die Idee funktioniert auch sonst recht gut - wir nutzen VISA für RS-232, GPIB und TCP/IP Steuerung unserer Kontroller, mit eigener Kommandosprache (identisch für alle Systeme von uns) und unter verschiedensten Betriebssystemen. Schlecht ist, daß die Initialisierung für die 3 unterstützten Schnittstellenprotokolle komplett verschieden ist. Noch schlechter ist daß immer noch solche Effekte wie oben beschrieben auftauchen. Bisher hab ich noch keine Lösung für das Problem
Das mit der Initialisierung ist leider unvermeidbar. Die Ganze Abstraktion funktioniert in den anderen Bereichen sehr gut aber hier wird es einfach unmöglich um das einheitlich zu tun. Wenn Du einen Instrument Treiber gemacht hast beschränkt sich die ganze Schnittstellenspezifische Dudelei aber normalerweise auf das Initialize VI, es sei denn die Firmware Programmierer haben ihrerseits wieder schnittstellenabhängige Features zum Beispiel im Kommandoset eingebaut .
Das Problem das Du beschreibst kenne ich eigentlich nicht aber ich habe TCP/IP über VISA schon ziemlich lange nicht mehr gemacht. Das letzte mal war so um VISA 2.5 und das funktionierte leider in Dauertesten nie ganz richtig.
Kann es sein dass die Firmware das Zeilenende Zeichen als seperaten TCP/IP Write abschickt? Ich weiss das sollte nichts ausmachen aber wenn die Delays gross genug sind oder der sendende IP Stack den Naggle Algorithmus disabled hat kann das manchmal sehr komische Folgen haben da dann die entsprechenden Teile in seperaten TCP/IP Packeten verschickt werden. Ich denke dass die Erkennung des Ende Characters im TCP/IP VISA Treiber dabei manchmal etwas aus dem Takt kommen könnte.
Eigentlich etwas woran die VISA Entwickler durchaus interessiert sein könnten. Ich weiss nicht ob Dan Mondrik dort noch arbeitet aber er war in der Vergangenheit manchmal um die offiziellen Supportkanäle gegangen wenn er irgendwo von spezifischen Problemen mit VISA gehört hatte.
Rolf Kalbermatter
|
|
|
| |