GPIB-Fehlercodes und gängige Lösungen (Teil 1)

Überblick

Nachfolgend finden Sie eine Liste von GPIB-Fehlern mit entsprechenden Lösungen.

Inhalt

Ein Großteil des folgenden Textes stammt aus dem "NI-488.2 User Manual for Windows", zu dem Sie unter Weitere Ressourcen weiter unten einen Link finden.

 

EDVR (0)

Situation: Treiberfehler.

Beschreibung: EDVR wird ausgegeben, wenn die GPIB-Hardware nicht richtig konfiguriert ist oder wenn der an die ibfind-Funktion übergebene Schnittstellen- oder Gerätename falsch ist.

Mögliche Ursache: EDVR-Fehler treten häufig auf, wenn der Schnittstellenname einer Karte oder der Gerätename falsch buchstabiert ist. Zum Beispiel tritt dieser Fehler auf, wenn der Standard-Schnittstellenname für NI-Karten ("GPIB0") mit dem Buchstaben "O" anstelle einer Null angegeben wird ("GPIBO"). Ebenso kann dieser Fehler auftreten, wenn die an die Funktion ibdev übergebene Kartennummer (Board Index) falsch ist. Die Kartennummer ist der Zahlenanteil des Namens der Schnittstelle für die GPIB-Karte, doch viele Benutzer gehen fälschlicherweise davon aus, dass die Nummer die Primäradresse der Karte ist. Beispiel: Sie installieren in Ihrem Computer eine PCI-GPIB-Karte und weisen dieser die Primäradresse 2 zu. Der Standard-Schnittstellenname für die Karte ist jedoch "GPIB0", das heißt, die Nummer der Karte lautet 0 und nicht 2.

Lösungen:

  • Nutzen Sie im GPIB-Konfigurationsprogramm die Standardeinstellungen für Ihre GPIB-Hardware (das heißt GPIB0 für den Schnittstellennamen und 0 für die Primäradresse).
  • Verwenden Sie die Funktion ibdev anstelle der Funktion ibfind zum Start der Kommunikation mit Ihrem Messgerät (die Notwendigkeit des Gerätenamens entfällt dadurch).
  • Wenn Sie den Gerätenamen für Ihre Messgeräte angeben müssen, sorgen Sie dafür, dass diese in den Gerätevorlagen für das GPIB-Konfigurationsprogramm ordnungsgemäß konfiguriert sind (weitere Informationen finden Sie im Benutzerhandbuch Ihres NI-488.2).
  • Verwenden Sie den von ibdev oder ibfind ausgegebenen Bezeichner als den ersten Parameter in nachfolgenden NI-488-Funktionen. Schauen Sie sich die Variable vor der fehlerhaften Funktion an, um sich zu vergewissern, dass ihr Wert unverändert gültig ist.

 

ECIC (1)

Situation: Für die Funktion muss die GPIB-Karte der verantwortliche Controller (CIC) sein.

Beschreibung: Für bestimmte Funktionen muss die GPIB-Karte der verantwortliche Controller sein. Die betreffenden Funktionen sind im "NI-488.2 Function Reference Manual" aufgeführt, zu dem Sie weiter unten einen Link finden. Ihre GPIB-Karte ist per Standardeinstellung der System-Controller. Dies ist jedoch nicht das Gleiche wie der verantwortliche Controller. Der System-Controller kann jederzeit zum verantwortlichen Controller werden (auf jedem GPIB kann es immer nur einen System-Controller geben).

Mögliche Ursache: ECIC-Fehler kommen häufig zustande, wenn zum Beginn des Programms der Befehl "Interface Clear" nicht gesendet wird. Dieser Befehl sorgt dafür, dass Ihre GPIB-Karte als verantwortlicher Controller fungiert.

Lösungen:

  • Wenn Ihre GPIB-Karte als System-Controller dienen soll, verwenden Sie ibrsc 1, um zu gewährleisten, dass Ihre GPIB-Karte als System-Controller konfiguriert ist.
  • Wenn Ihre GPIB-Karte der System-Controller ist, sollte mit der Funktion ibsic (oder Funktion SendIFC) der IFC-Befehl ("Interface Clear") gesendet werden. Dadurch wird Ihre GPIB-Karte der verantwortliche Controller, und die GPIB-Kommunikation wird erneut initialisiert.
  • Wenn Ihre GPIB-Karte einer von mehreren Controllern des Busses ist, sollten Sie vor jedem Aufrufen einer Funktion, für die Ihre GPIB-Karte der verantwortliche Controller sein muss, das CIC-Bit des Status-Worts ibsta überprüfen. Wenn dieses nicht angezeigt wird, können Sie die Funktion ibwait aufrufen (mit dieser wird die Wartezeit-Maske für das CIC-Bit festgelegt), um die weitere Verarbeitung so lange zu verzögern, bis Ihre GPIB-Karte die Steuerung erlangt hat.

 

ENOL (2)

Situation: Funktion hat keine Empfangsgeräte erkannt.

Beschreibung: Die GPIB-Kommunikation erfordert ein einzelnes Sendegerät (Talker) zum Schreiben von Datennachrichten und ein oder mehrere Empfangsgeräte (Listener) zum Lesen von Datennachrichten. ENOL tritt in der Regel auf, wenn ein Schreibvorgang unternommen wurde, jedoch keine Empfangsgeräte adressiert werden oder unter den angegebenen Adressen keine Empfangsgeräte vorhanden sind. Bei einem Sendegerät zeigt ENOL an, dass die GPIB-Adresse, mit der kommuniziert werden soll, nicht die GPIB-Adresse des an den Bus angeschlossenen Geräts ist.

Mögliche Ursachen: Das Messgerät, mit dem kommuniziert werden soll, befindet sich nicht an der erwarteten Primäradresse, das Messgerät ist nicht eingeschaltet oder das Kabel zum Messgerät ist entweder nicht eingesteckt oder defekt.

Lösungen:

  • Vergewissern Sie sich, dass die GPIB-Adresse Ihres Geräts mit der GPIB-Adresse des Geräts übereinstimmt, an das die Daten geschrieben werden sollen.
  • Überprüfen Sie, dass das Kabel ordnungsgemäß an das Gerät angeschlossen ist. Tauschen Sie das Kabel aus, um sicherzugehen, dass das Kabel nicht schadhaft ist.
  • Stellen Sie sicher, dass mindestens zwei Drittel Ihrer Geräte eingeschaltet sind.
  • Verwenden Sie für den Datenaustausch auf Kartenebene den entsprechenden Hex-Code in der Funktion ibcmd, um Ihr Gerät als Empfangsgerät zu adressieren.
  • Legen Sie durch Aufrufen der Funktion ibpad (und bei Bedarf von ibsad) die Primäradresse des Geräts fest. Die Funktion ibpad gibt die vorherige Einstellung für das Gerät aus. So können Sie überprüfen, ob die konfigurierte Adresse des Geräts mit der tatsächlichen Adresse übereinstimmt.

 

EADR (3)

Situation: Die GPIB-Karte (GPIB0 oder GPIB1) wurde falsch adressiert.

Beschreibung: EADR tritt auf, wenn die GPIB-Karte der verantwortliche Controller ist und sich vor Beginn der Lese- und Schreibfunktionen nicht richtig adressiert. Die Fehlermeldung EADR wird auch von der Funktion ibgts ausgegeben, wenn ein Shadow-Handshake angefordert wird und die GPIB-ATN-Leitung deaktiviert ist. In diesem Fall kann der Shadow-Handshake nicht ausgeführt werden, und der Fehler dient als entsprechender Hinweis.

Mögliche Ursachen: Ihre GPIB-Karte ist auf die gleiche Primäradresse wie das Messgerät konfiguriert, mit dem kommuniziert werden soll.

Lösungen:

  • Weisen Sie Ihrer GPIB-Karte stets eine andere Adresse als Ihrem Gerät zu. Die GPIB-Karte sollte (fast) immer die Primäradresse 0 haben und ohne Sekundäradresse konfiguriert sein. Rufen Sie ibpad 0 und ibsad 0 am Anfang Ihres Programms auf, damit die Adresse Ihrer Karte ordnungsgemäß eingerichtet wird.
  • Erst wenn die GPIB-Karte korrekt adressiert ist, sollten Funktionen wie ibrd, ibwrt, RcvRespMsg oder SendDataBytes aufgerufen werden.
  • Die Funktion ibgts sollte, wenn überhaupt, nur unmittelbar nach ibcmd aufgerufen werden. Die Funktion ibcmd aktiviert die ATN-Leitung, woraufhin die Geräte auf Befehle statt auf Datennachrichten warten.

 

EARG (4)

Situation: Ungültige Argumente bei Funktionsaufruf.

Beschreibung: EARG tritt auf, wenn an einen Funktionsaufruf ein ungültiges Argument übergeben wird.

Mögliche Gründe: Nachfolgend einige Beispiele: Die Funktion ibtmo wird mit einem Wert aufgerufen, der nicht im Bereich von 0 bis 17 liegt (die zulässigen Timeout-Werte entsprechen einer Wertetabelle von 0 bis 17, wobei die Standardeinstellung 13 einem Timeout von 10 Sekunden entspricht). Die Funktion ibeos wird mit wertlosen Bits im höchstwertigen Byte des zweiten Parameters aufgerufen, oder ibpad (oder ibsad) wird mit ungültigen Adressen aufgerufen.

Lösungen:

  • Informieren Sie sich im "NI-488.2 Function Reference Manual" (siehe den Link unten), wie die gültigen Parameter lauten.
  • Verwenden Sie keinen Gerätedeskriptor in einer Funktion auf Kartenebene und keinen Kartendeskriptor in einer Funktion auf Geräteebene.

 

ESAC (5)

Situation: Die GPIB-Karte ist nicht der System-Controller.

Beschreibung: ESAC tritt auf, wenn ibsic, ibsre, SendIFC oder EnableRemote aufgerufen wird und die GPIB-Karte nicht als System-Controller fungieren kann.

Mögliche Ursache: Die GPIB-Karte ist nicht als System-Controller konfiguriert.

Lösungen:

  • Weisen Sie der GPIB-Karte System-Controller-Funktion zu, indem Sie ibrsc 1 aufrufen, oder das GPIB-Konfigurationsprogramm verwenden.

 

EABO (6)

Situation: I/O-Operation wurde abgebrochen.

Beschreibung: EABO weist darauf hin, dass ein I/O-Vorgang abgebrochen wurde.

Mögliche Ursache: EABO tritt normalerweise bei einem Timeout während eines Lese- oder Schreibvorgangs auf. Der Fehler kann jedoch auch daher rühren, dass während eines I/O-Vorgangs ibstop, ibclr oder eine ähnliche Funktion aufgerufen wurde. Beim Schreiben von Daten an eine PCI-GPIB-Karte kann es zu einem Timeout kommen, wenn das PCI-Bus-Mastering (eine Option im BIOS Ihres Computers) nicht aktiviert ist. Beim Lesen von Daten kann ein Timeout auftreten, wenn das Sendegerät den letzten Befehl nicht verstanden hat und daher nicht reagiert. Wenn ein Gerät nichts sendet, kommen folgende Ursachen dafür in Frage:

  • Die Nachricht an das Gerät wurde falsch buchstabiert. Zum Beispiel ist "*IDN?" eine gängige Identifizierungsabfrage für IEEE-488.2-konforme Geräte. Es kommt gelegentlich vor, dass man "*IND?" eingibt, so dass das Gerät nicht versteht und folglich keinen Nachrichten-String ausgibt, der empfangen werden kann.
  • Die Nachricht an das Gerät kann auch einen Befehl enthalten, den das Gerät nicht versteht. So wird zum Beispiel die Nachricht "*IDN?" aus dem vorherigen Beispiel nur von IEEE-488.2-konformen Geräten verstanden. Ein älteres, nicht IEEE-488.2-konformes Gerät kann mit "*IDN?" nichts anfangen und erzeugt folglich keinen Nachrichten-String.
  • Das Gerät verwendet möglicherweise ein bestimmtes EOS-Zeichen (EOS = Ende des Strings) zum Signalisieren des Datenendes und Sie vergessen, dieses an die Nachricht anzuhängen. Wenn Ihr Gerät zum Beispiel einen Zeilenvorschub als EOS-Zeichen erwartet, funktioniert "ID?" nicht, sondern nur "ID?\n" (wobei \n einen Zeilenvorschub in IBIC darstellt).
  • Möglicherweise erwarten Sie ein EOI ("End or Identify", eine der fünf Leitungen zur Busverwaltung) zum Signalisieren des Datenendes. Doch wenn das Messgerät beim Abschluss des Sendevorgangs seiner Nachricht die EOI-Leitung deaktiviert lässt, tritt bei jedem Lesevorgang ein Timeout auf.

Lösungen:

  • Sorgen Sie dafür, dass Ihre Nachrichten nur aus Befehlen aus dem Repertoire des Messgeräts bestehen. Eine Liste der möglichen Befehle finden Sie in der Regel im Benutzerhandbuch Ihres Geräts.
  • Sehen Sie im Benutzerhandbuch nach, ob sich Ihr Gerät in einem GPIB- oder 488.2-Modus befinden muss, um als GPIB-Empfangsgerät zu fungieren.  Oft reagieren Instrumente nur auf die Standardbefehle, nachdem sie in diesen Modus versetzt wurden, und sie geben sonst einen Fehler aus, obwohl ein gültiger Befehl gesendet wurde.
  • Verwenden Sie die für Ihr Gerät angemessene Methode zum Signalisieren des Datenendes. Die Byte-Anzahl (eine bestimmte Anzahl erwarteter empfangener Bytes in einer Nachricht) wird immer verwendet. Manche Geräte arbeiten mit EOS und der Byte-Anzahl, manche mit EOI und der Byte-Anzahl und manche nur mit der Byte-Anzahl. Die für Ihr Messgerät möglichen Methoden zum Signalisieren des Datenendes sind im Benutzerhandbuch aufgeführt.
  • Wenn das Gerät das Datenende durch EOS signalisiert, sorgen Sie dafür, dass das Abschlusszeichen an das Ende der Nachricht angehängt wird. Sie können das Abschlusszeichen im GPIB-Konfigurationsprogramm angeben. Beachten Sie, dass der NI-488.2-Treiber nicht automatisch ein Abschlusszeichen anfügt.
  • Verlängern Sie die Timeout-Zeitspanne für I/O-Operationen mit Hilfe des Befehls ibtmo.
  • Wenn Sie trotz des Empfangs sämtlicher Daten eine EABO-Fehlermeldung erhalten, suchen Sie nach einem bestimmten String-Abschlusszeichen (z. B. Zeilenvorschub oder Wagenrücklauf) und konfigurieren Sie die GPIB-Karte so, dass sie den Lesevorgang bei diesem Zeichen mit Hilfe der Funktion ibeos beendet.

 

ENEB (7)

Situation: Nicht vorhandene GPIB-Karte.

Beschreibung: ENEB tritt auf, wenn unter der im GPIB-Konfigurationsprogramm angegebenen I/O-Adresse keine GPIB-Karte vorhanden ist. Das Problem kann folgende Ursachen haben: Die Karte ist nicht physisch an das System angeschlossen; die während der Konfiguration angegebene I/O-Adresse weicht von der Einstellung der Karte ab; es besteht ein Systemkonflikt mit der Basis-I/O-Adresse; der Schnittstellenname der Karte unterscheidet sich vom Schnittstellennamen der Ihrem Gerät zugeordneten Karte.

Lösungen:

  • Ermitteln Sie die I/O-Basisadresse für Ihre Karte mit Hilfe des GPIB-Konfigurationsprogramms. Überprüfen Sie anhand des Ressourcen-Managers Ihres Systems, ob der Adressbereich von einer anderen Karte belegt ist oder sich mit dem einer anderen Karte überlappt. Vergewissern Sie sich, dass der Name für Ihr Gerät der gleiche ist wie der Schnittstellenname der Karte, die auf Ihrem Gerät als Kommunikationsadresse konfiguriert ist (siehe auch den Artikel "ENEB Error (Non-existent GPIB Board Error) During Communication with Instrument" in der Link-Liste ganz unten).
  • Bei alten Karten müssen die Jumper und Dip-Schalter der Karte auf die gleichen Ressourceneinstellungen konfiguriert sein, wie im GPIB-Konfigurationsprogramm festgelegt wurden.
  • Schalten Sie Ihren Computer aus und stellen Sie sicher, dass die Karte fest im Steckplatz sitzt.

 

Der vorliegende Artikel wird in GPIB-Fehlercodes und gängige Lösungen (Teil 2) und GPIB-Fehlercodes und gängige Lösungen (Teil 3) fortgesetzt.