Hallo lumaxo,
Zitat:- Datenerfassung für höhere Abtastraten ist mit GPIB gar nicht möglich. Ich kann mit GPIB zwar Übertragungsraten von 7,7 MB/s (HS488) erreichen, aber dies gilt eben nur große Datenpakete. Möchte ich nur ein paar Byte hin und her schieben (meine Messwerte), fällt die Übertagungsrate sehr viel niedriger aus (Figur 1/2).
Du machst hier den Fehler, das Schnittstellenprotokoll GPIB mit den Fäghigkeiten von Messgeräten in einen Topf zu werfen. Die (mögliche) Geschwindigkeit der Schnittstelle sagt nichts, aber auch
rein gar nichts, über die Fähigkeiten der daran angeschlossenenen Messgeräte aus!
- Es ist daher sinnvoller die Analog Ein/Ausgänge der Geräte zu verwenden, auch wenn dieser stärker rauschen, um Abtastraten > 1000/s zu erzielen.
und noch einige allgemeinere Aussagen zur Implementierung von GPIB. Ich habe gelesen:
Zitat:- Man sollte die VISA-VIs verwenden. Diese sind bequemer und haben keinen Nachteil gegenüber den GPIB-VIs, richtig?
Es gibt ein, zwei Sachen, die sich mit den LowLevel-GPIB-Funktionen besser machen lassen. Die wirst du aber nicht benötigen, deshalb solltest du bei VISA bleiben. Sobald statt der NI-GPIB-Schnittstelle eine eines anderen Herstellers genommen wird, bist du quasi auf VISA angewiesen…
Zitat:Ich benötige Ausgabe- bzw. Abtastraten von min. 1000 Samples/s.
Da hilft wohl ein Blick ins Manual deiner Messgeräte, ob diese das überhaupt unterstützen. Solange du diese nicht benennst, musst du selbst lesen. Wenn du uns da genauere Angaben machst, könnten wir selbst nachschauen…
Zitat:- Für VISA Read muss nur eine ausreichend große Byte Anzahl vorgeben, Es werden ohnehin nur soviele gelesen wie am Bus vorhanden sind. In meiner Test VI zum lesen des Feldes ist es aber unbedingt notwendig die genaue Byte-Anzahl des erwartenden Wertes zu definieren, andererseits werden (bei zuvielen Bytes) der nächste Wert an den alten angeheftet (Scrennshots kann ich gerne morgen nachreichen).
VISA liest nach drei Bedingungen:
- die gewünschte Anzahl Zeichen ist im Lesepuffer vorhanden/angekommen
- es wird ein TermChar erkannt
- es wird der TimeOut erreicht
Zitat:- Es ist nicht notwendig eine Wartezeit zwischen VISA-Read und Write einzubauen. Mein Test - VI stürzt allerdings bei Wartezeiten unter 20 ms ab.
Das hat nichts mit VISA selbst zu tun, sondern mit den Geräten, die am verwendeten Bus hängen. Das VISAWrite schreibt den String nur in einen Ausgangsbuffer, wo ihn dan der Treiber nach Bedarf abholt und ausgibt - wofür er seine Zeit braucht. Dann muss das Gerät den Befehl empfangen, auswerten und umsetzen: das dauert! Und dann muss noch die Antwort generiert und versendet werden: auch das dauert (ein Multimeter in der höchsten Auflösung braucht dann schon mal ~0.5s für die Messung selbst))! Und dann musst du den Befehl aus dem Lesepuffer abholen - mittels VISARead. Deshalb
kann eine Wartezeit sinnvoll sein -
ABER: da du ja eh auf eine bestimmte Anzahl Zeichen im Puffer wartest, ist es einfacher, hier einen vernünftigen TimeOut-Wert zu setzen…
Warum dein VI "abstürzt" kann ich nicht sagen. Kannst du das VI mal für LV2011 anhängen?