' schrieb:Hallo zusammen,
also ich wollte in Abhängigkeit von den Daten auf dem GPIB-Bus eine bestimmte Aktion in LabVIEW (7.1) auslösen. Dazu wollte ich in einer Schleife oder ähnlichen die Daten auf den Bus mithören und bei einem bestimmten Befehl (Zeichenkette) eine andere Aktion durch LabVIEW auslösen. Leider stehe ich jetzt vor dem Problem, dass ich entweder den Wald vor lauter Bäumen nicht sehe.... So komplex kann es doch nicht sein, klingt doch relativ einfach, mithören, verstehen und drauf reagieren. Über einen GPIB-Auf-USB-Adapter 'häng' ich am Bus, aber dass sollte ja egal sein...
Kann mir vielleicht jemand mal kurz unter die Arme greifen? Danke.
Thomas
Das geht so nicht so einfach oder eigentlich gar nicht. GPIB ist ein Master-Slave Bus. Jemand muss der System Controller (SC) sein der bestimmt wer in einem bestimmten Moment sprechen darf. Das ist normalerweise der Computer der das System steuert aber früher gab es auch GPIB Instrumente mit gewisser interner Intelligenz und Benützerkonfiguration die das auch manchmal konnten.
Dieser SC ist zu Beginn auch der Controller in Charge (CIC), kann diese Aufgabe aber durch eine GPIB Command an ein anderes dazu fähiges Instrument delegieren. Der SC kann jederzeit durch Anlegen eines bestimmten Bus Kommandos die Kontrolle zurückfordern. Andere Instrumente können nur CIC werden wenn sie vom aktuellen CIC dazu die Erlaubnis bekommen.
Das heisst in Deinem Fall also dass Du einen Computer hast der ein Instrument ansteuert. Dieser Computer ist typischerwise der SC. Nun möchtest Du einen zweiten Computer der mithört und solange Du nur passiv mithören willst geht das sogar beinahe. Aber ohne dass Du im anderen Computer in der Software etwas machst um diesem zweiten Computer die CIC Aufgabe zuzuteilen, kann dieser niemals aktiv auf den Bus zugreifen, das heisst lesen ist zwar möglich aber niemals schreiben.
Andersum ist auch nicht besser. Du könntest den zweiten Computer SC machen und Dein Programm starten das den CIC an den ersten übergibt. Wenn aber die Software auf dem ersten Computer nicht explizit damit umgehen kann, dass sie nicht SC ist und daher auch eventuel nicht CIC dann produziert die allerlei Fehler und wird niemals das tun was sie normalerweise tut. Und die meisten Programme sind halt einfach so geschrieben dass sie davon ausgehen dass Sie zu jedem Zeitpunkt ganz einfach CIC sind.
Auch wenn Du nur lesen möchtest auf dem zweiten Computer ist's noch nicht so trivial. Da Du allen Datenverkehr wohl sehen willst musst Du nicht auf Device Ebene arbeiten sondern auf Board Ebene. Und ich bin mir nicht ganz sicher aber ich glaube dass das nur mit den traditionellen VIs funktioniert und nicht mit VISA. Um auf Board Ebene zu arbeiten verbindest Du am GPIB Knoten die Adresse mit einem String 0:
0 ist die Boardnummer und der Doppelpunkt gibt an dass es eine Boardnummer ist und nicht eine Deviceadresse.
Alternativ kannst Du auch ein GPIB+ Device von NI kaufen. Das hat extra Hardware eingebaut, die das abhören des GPIB Busses vereinfacht und auch noch sehr exakte Timingdiagramme aller Signale auf dem GPIB Bus aufnehmen kann. Ein sehr interessantes Gerät aber eigentlich nur sinnvoll wenn Du entweder GPIB Instrumente entwickelst oder mit ganz kuriosen Instrumenten arbeiten musst.
Rolf Kalbermatter