LabVIEWForum.de - GPIB fuer Dummies. Bidirectional ? Puffer ?

LabVIEWForum.de

Normale Version: GPIB fuer Dummies. Bidirectional ? Puffer ?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich bin neu. Ich habe ein bisschen mit LabVIEW herumexperimentiert und moechte nun ein evtl. groesseres Projekt starten.
Ein Teil hierbei ist die Kommunikation via GPIB mit einem Impedanzspektroskop.

Ich habe sehr wenig Ahnung von GPIB und Geraetekommunikation allgemein und dementsprechend ein paar allgemein Fragen, die fuer die erfahrenen hier wahrscheinlich etwas laecherlich klingen. Ich wuerde mich aber dennoch ueber antworten freuenSmile

Einen ersten einfachen Test habe ich mit einem Keithley 2000 gemacht. Das folgende VI liefert den aktuellen Messwert.

[attachment=24382]

Hier bei faellt auf, dass die Wartezeit anscheinend egal ist. Der Wert steht solang irgendwo Schlange bis er ausgelesen wird.
Danach ist er allerdings weg, denn hier:

[attachment=24383]

...haengt das Programm dann beim 2. Mal lesen und ich muss es mit dem STOP Knopf beenden.
Das Geraet bleibt aber auf TALK stehen. Dann verstehe ich nicht, warum ich nicht oefter READ GPIB verwenden kann.

1. Es gibt also anscheinend irgendwie einen Puffer und der merkt wann etwas davon ausgelesen wird. Ist das korrekt?

2. Der Puffer scheint sich im Keithley zu befinden und nicht auf der Controllerkarte, denn wenn ich waehrend der Wartezeit das Keithley ausschalte klappt es nicht mehr. Ist das korrekt?

3. Ich habe gelesen das VISA eine Art verallgemeinerte, hoehere Sprache fuer GPIB Befehle ist. Kann man das so sagen?

4. Was ist denn dann nun der Unterschied von VISA Write und GPIB Write. Die Befehle die das Geraet erwartet sind doch im Geraet festgelegt und muessen im Manual nach geschaut werden.

5. Ist mein VI vom Aufbau her korrekt oder ist es irgendwie unsauber? Ich meine, muessen irgendwelche Verbindungen erst initializiert werden bzw. wieder geschlossen werden, damit es sauberer ist?

6. Lese ich zweimal, piept das Keithley. Anscheinend heisst das der Puffer war noch nicht leer und der alte Wert wurde ueberschrieben.[attachment=24384]
Das ist aber komisch, weil da doch sicherlich mehr als ein Messwert reinpasst...

7. Kann man noch waehrend der Puffer ausgelesen wird neue Befehle schicken? Oder kann ein Geraet immer nur entweder TALKer oder LISTENer sein?

Ueber jegliche Erklaerung sehr dankbar.
Andinger
Ich kann Dir zu den ganzen GPIB-VIs nichts sagen. Ich steuere meine Geräte immer mit VISA und SCPI-Befehlen an. Da gibt es keine Probleme.
Dort habe ich mal ein Bsp. gemacht:
http://www.LabVIEWforum.de/index.php?s=&am...ost&p=48667

[attachment=24386]

Gruß Markus
Hi Andinger,

dann schnapp dir mal das (gut gemachte) Manual zu deinem K2000.

Dort findest du einen Punkt, wie man das K2000 einstellen muss, dass es auf Anfragen auch antwortet. Es gibt nämlich die Möglichkeit, nur zu antworten, wenn mit einem expliziten Befehl danach gefragt wird. Das Gerät kann aber auch auf jede Leseanfrage mit einem neuen Wert antworten... Man muss es dem Gerät nur entsprechend mitteilen. Wie und was steht im Manual. Wer lesen kann, ist klar im Vorteil :-)

Da GPIB im Grunde eine parallele Schnittstelle ist, können die Geräte immer nur in eine Richtung arbeiten...
@Y-P: Ist VISA also eine hoehere Sprache die auf dem GPIB Bus laueft ?

@GerdW: Ich hab momentan doch noch gar kein Probleme. Mein VI funktioniert doch (zumindest die erste Variante).
Ich habe nur Fragen zu GPIB.
Eine Frage wurde bisher beantwortet, und zwar das die Kommunikation nicht bi-direktional ist.
Die Begruendung ist allerdings nicht richtig, denn parallele Kommunikation allgemein kann sowohl Full- als auch Half-Duplex sein.


Kennt sich damit echt keiner genauer aus?
' schrieb:Kennt sich damit echt keiner genauer aus?
Reicht das?
Hi Andinger,

ok, ich habe mich unklar ausgedrückt: Es kann immer nur einen Talker am Bus geben! Die Geräte können immer Daten empfangen und senden, aber halt nicht gleichzeitig...

VISA ist eine allgemeinere (Software-)Schnittstelle, über die man diverse Hardware-Schnittstellen ansprechen kann. Zu den unterstützten Schnittstellen gehört auch GPIB. Die (älteren) GPIB-Funktionen sind nur speziell auf die GPIB-Schnittstelle ausgerichtet. VISA bietet aber die gleichen Funktionen an, nur etwas stärker abstrahiert...

Ansonsten gibt's ja immer noch http://www.giyf.de für allgemeine Fragen zu Schnittstellen...
Ich kenne mich nicht mit GPIB aus (naja, jetzt schon als ichs in WikiPedia nachgelesen habe), aber ich kann was zu deinen Fragen sagen.

Vorab:
GPIB ist ein Protokoll auf einer ganz tiefen Ebene. Hier sind also nur hardwarenahe Sachen spezifiziert. Ob ein gerät einen Puffer hat (etc.), liegt nicht in der Spezifikation des GPIB.


' schrieb:1. Es gibt also anscheinend irgendwie einen Puffer und der merkt wann etwas davon ausgelesen wird. Ist das korrekt?
Das ist kein Puffer im Sinne eines Puffers.
Das Endgerät bekommt den Befehl, bestimmte Daten zum Senden bereitzustellen (dein erster GPIB-Befehl). Mit diesem Befehl stellt sich das Gerät zuerst die Daten zusammen, senden darf das Gerät aber nicht. Senden darf es erst, wenn der READ-Befehl (dein zweiter GPIB-Befehl) kommt. Dem Endgerät ist es egal, welche Zeitspanne zwischen dem ersten und dem zweiten Befehl liegt. Wurden die Daten einmal gesendet, sind sie, von Endgerät ausgesehen, weg. Zweimal READ hintereinander geht also zu erst einmal nicht.

Zitat:2. Der Puffer scheint sich im Keithley zu befinden und nicht auf der Controllerkarte, denn wenn ich waehrend der Wartezeit das Keithley ausschalte klappt es nicht mehr. Ist das korrekt?
Klar. Muss so sein. Es muss ja ein bestimmter Ablauf für die DÜ zwischen PC und Endgerät eingehalten werden. Dieser Ablauf ist im übrigen ein "Protokoll". In wie weit ein solches (höheres) Protokoll in GPIB (siehe DIN) integriert ist, weiß ich nicht.

Zitat:3. Ich habe gelesen das VISA eine Art verallgemeinerte, hoehere Sprache fuer GPIB Befehle ist. Kann man das so sagen?
Nein. So allgemein kann man das nicht sagen.
VISA ist eine sehr hohe Protokollebene. Das bedeutet aber (leider), dass, wenn man was mit VISA macht, ein Handle benötigt wird. Dem VISA-System muss man nämlich mitteilen, was man machen will: COM-Schnittstellen, LPT-Schnittstellen, möglicherweise auch GPIB-Schnittstellen, TCP/IP oder was auch immer. Während dieser Initialisierung, "sucht" sich nämlich das VISA-System die entsprechenden (gekapselten) Treiber, die dann genau diese eine Aufgabe machen können.
Möglicherweise gibt es für dein Endgerät VISA-Treiber. Die sind dann aber spezifisch nur für dieses Endgerät anwendbar. Beim Initialisieren musst du dann angeben: "K2000". Dann würde ein Lesebefehl, der jetzt aus zwei GPIB-Befehlen besteht, nur noch ein einziger Aufruf sein.

Zitat:4. Was ist denn dann nun der Unterschied von VISA Write und GPIB Write. Die Befehle die das Geraet erwartet sind doch im Geraet festgelegt und muessen im Manual nach geschaut werden.
VISA ist eine Protokollebene mindestens drei (sag ich jetzt mal so) höher als GPIB.
Ein VISA-Treiber könnte die Befehle kennen, dafür ist die Protokollebene ja höher. Ein VISA-Befehl würde aus mehreren GPIB-Befehlen bestehen - wieder aufgrund der höheren Protokollebene.

Zitat:5. Ist mein VI vom Aufbau her korrekt oder ist es irgendwie unsauber? Ich meine, muessen irgendwelche Verbindungen erst initializiert werden bzw. wieder geschlossen werden, damit es sauberer ist?
Hier zu antworten fehlen mir diverse Hintergrund Infos zu der GPIB-Implementierung in LV.
Wäre ein Öffnen/Schleißen etc. notwendig, müsste das GPIB-VI einen Handle-Eingang haben, der zwangsverdrahtet werden muss.

Zitat:6. Lese ich zweimal, piept das Keithley. Anscheinend heisst das der Puffer war noch nicht leer und der alte Wert wurde ueberschrieben. Das ist aber komisch, weil da doch sicherlich mehr als ein Messwert reinpasst...
Gemäß der niedrigen Protokollebene ist es eben kein Puffer, sondern nur eine (1) Warteposition.

Zitat:7. Kann man noch waehrend der Puffer ausgelesen wird neue Befehle schicken?
Sowas wäre eine Funktion einer höheren Protokollschicht.
Vielen Dank euch! Langsam wird es mir klarer.

@Ich selbst: Ich gehe mal davon aus dass du dieses Wissen nicht von dem Wikipedia-Artikel hast, denn ich kann das alles da nicht zwischen den Zeilen rauslesenSmile

Interessant jedenfalls. Ich sag dem Geaet Daten sammeln und dann sag ich Daten uebertragen. OK. Ma kucken in wie weit ich dass jetzt auf das Impedanzspektroskop uebertragen kann.
' schrieb:Ich gehe mal davon aus dass du dieses Wissen nicht von dem Wikipedia-Artikel hast, denn ich kann das alles da nicht zwischen den Zeilen rauslesen
Stimmt. Cool

Dank einmal Überfliegen WikiPedia weiß ich jetzt, dass GPIB "General Purpose Interface Bus" heißt, die Norm dazu wohl "DIN IEC 60625-1:1981-05" und dass GPIB also ein Protokoll ich tippe mal Ebene 2 ist.

Der Rest ist Grundwissen zu Datenübertragung, die Kenntnis, wie ein Protokoll im allgemeinen funktioniert und wie das OSI-Sieben-Schichten-Modell im Groben aussieht und funktioniert. Cool
Referenz-URLs