Codes d'erreur GPIB et solutions courantes (1ère partie)

Aperçu

Ce document donne des solutions pour répondre aux codes d'erreur GPIB.

Contenu

Une grande partie des informations suivantes proviennent du Manuel de l'utilisateur du NI-488.2 pour Windows (voir les Ressources supplémentaires ci-dessous).

 

EDVR (0)

Condition d'erreur : Erreur de driver.

Description : EDVR est renvoyé lorsque le matériel GPIB n'est pas configuré correctement ou que le nom d'interface ou de périphérique transmis à la fonction ibfind est incorrect.

Cause possible : Les erreurs EDVR sont souvent dues à une faute de frappe dans le nom de l'interface de votre carte ou le nom du périphérique de votre instrument. Par exemple, le nom d'interface par défaut pour les cartes NI est GPIB0, mais il est possible que vous l'écriviez GPIBO (avec la lettre O au lieu d'un zéro). Cette erreur peut également se produire si l'indice de la carte transmis à la fonction ibdev est incorrect. L'indice de la carte est la partie numérique du nom de l'interface pour la carte GPIB, mais on pense souvent, à tort, qu'il s'agit de l'adresse principale de la carte. Par exemple, je peux installer une carte PCI-GPIB dans mon ordinateur et donner une adresse principale de 2. Le nom d'interface par défaut pour la carte est GPIB0, l'indice de la carte est donc 0, pas 2.

Solutions :

  • Utilisez les paramètres par défaut pour votre matériel GPIB dans l'utilitaire de configuration GPIB (par exemple, GPIB0 pour le nom de l'interface et zéro pour l'adresse principale).
  • Utilisez la fonction ibdev plutôt que la fonction ibfind pour ouvrir les communications avec votre instrument (pour éviter d'utiliser son nom de périphérique).
  • Si vous devez utiliser des noms de périphériques pour vos instruments, assurez-vous alors qu'ils sont correctement configurés dans les modèles de périphériques de l'utilitaire de configuration GPIB (reportez-vous au manuel d'utilisation du NI-488.2 pour plus de détails).
  • Utilisez le descripteur d'unité renvoyé par ibdev ou ibfind comme premier paramètre dans les fonctions NI-488 suivantes. Examinez la variable devant la fonction défaillante pour vous assurer que sa valeur n'a pas été corrompue.

 

ECIC (1)

Condition d'erreur : La fonction nécessite que la carte GPIB soit le contrôleur en charge (CIC).

Description : Certaines fonctions nécessitent que votre carte GPIB soit le CIC ; ces fonctions sont indiquées dans le manuel de référence des fonctions NI-488.2 (voir le lien associé, ci-dessous). Par défaut, votre carte GPIB sera le contrôleur système, ce qui est différent du contrôleur en charge. Le contrôleur système est en mesure de devenir le CIC à tout moment (il peut y avoir un contrôleur système sur un GPIB donné).

Cause possible : Souvent, les erreurs ECIC sont dues au fait que vous n'envoyez pas Interface Clear au début de votre programme pour vous assurer que votre carte GPIB est le CIC.

Solutions :

  • Si votre carte GPIB est censée être le contrôleur système, utilisez alors ibrsc 1 pour vous assurer que votre carte GPIB est configurée en tant que contrôleur système.
  • Si votre carte GPIB est le contrôleur système, utilisez la fonction ibsic (ou la fonction SendIFC) pour envoyer Interface Clear. Cela permet à votre carte GPIB de devenir le CIC (cela réinitialise également les communications GPIB sur le bus).
  • Si votre carte GPIB est l'un des multiples contrôleurs sur le bus, vérifiez toujours le bit CIC du mot d'état, ibsta, avant d'essayer tout appel de fonction nécessitant que votre carte GPIB ait le statut de CIC. S'il n'apparaît pas, vous pouvez appeler la fonction ibwait (définit le masquage d'attente pour le bit CIC) pour retarder tout autre traitement jusqu'à ce que le contrôle soit passé à votre carte GPIB.

 

ENOL (2)

Condition d'erreur : La fonction n'a pas détecté de récepteur.

Description : Les communications GPIB nécessitent un émetteur unique (pour écrire les messages de données) et un ou plusieurs récepteurs (pour lire les messages de données). ENOL se produit généralement lors d'une tentative d'opération d'écriture, mais qu'aucun récepteur n'est adressé ou qu'il n'y a pas de récepteur aux adresses spécifiées. Pour une écriture de périphérique, ENOL indique que l'adresse GPIB avec laquelle vous tentez de communiquer ne correspond pas à l'adresse GPIB du périphérique connecté au bus.

Cause possible : L'instrument avec lequel vous essayez de communiquer n'est pas à l'adresse principale attendue, l'instrument n'est pas sous tension ou le câble de l'instrument est déconnecté ou cassé.

Solutions :

  • Assurez-vous que l'adresse GPIB de votre périphérique correspond à l'adresse GPIB du périphérique sur lequel vous souhaitez écrire des données.
  • Vérifiez que le câble est correctement connecté à l'instrument. Essayez de changer de câble pour vérifier qu'il n'est pas cassé.
  • Assurez-vous qu'au moins les deux tiers de vos périphériques sont sous tension.
  • Pour les communications au niveau de la carte, utilisez le code hexadécimal approprié dans la fonction ibcmd pour adresser votre périphérique en tant que récepteur.
  • Appelez la fonction ibpad (et ibsad, si nécessaire) pour définir l'adresse principale de votre périphérique. La fonction ibpad renvoie le précédent paramètre du périphérique et vous pouvez vérifier si l'adresse configurée correspond à l'adresse réelle du périphérique.

 

EADR (3)

Condition d'erreur : La carte GPIB (GPIB0 ou GPIB1) n'est pas correctement adressée.

Description : EADR se produit lorsque la carte GPIB est le contrôleur en charge (CIC) et ne s'adresse pas correctement avant les fonctions de lecture et d'écriture. EADR est également renvoyé par la fonction ibgts lorsque la fonctionnalité de shadow handshake est requise et que la ligne GPIB ATN est déjà désactivée. Dans ce cas, le shadow handshake n'est pas possible et l'erreur est renvoyée pour vous en informer.

Cause possible : Votre carte GPIB est configurée pour la même adresse principale que l'instrument avec lequel vous essayez de communiquer.

Solutions :

  • Ne configurez jamais votre carte GPIB à la même adresse que votre périphérique. Il est (presque) toujours conseillé de laisser votre carte GPIB configurée pour l'adresse principale 0, et pas d'adresse secondaire. Appelez ibpad 0 et ibsad 0 au début de votre programme pour configurer correctement l'adresse de votre carte.
  • Assurez-vous que la carte GPIB est correctement adressée avant d'appeler ibrd, ibwrt, RcvRespMsg ou SendDataBytes.
  • Évitez d'appeler ibgts, sauf immédiatement après un appel ibcmd. La fonction ibcmd provoque l'assertion de la ligne ATN, ce qui indique aux instruments d'attendre des messages de commande, au lieu de messages de données.

 

EARG (4)

Condition d'erreur : Argument non valide pour un appel de fonction.

Description : EARG se produit lorsqu'un argument non valide est passé à un appel de fonction.

Cause possible : Voici quelques exemples : vous appelez ibtmo avec une valeur qui n'est pas comprise entre 0 et 17 (les valeurs de timeout possibles correspondent à une table de valeurs comprises entre 0 et 17, la valeur par défaut étant 13, ce qui représente un timeout de 10 secondes) ; vous appelez ibeos avec des bits sans signification définis dans l'octet élevé du second paramètre ; ou vous appelez ibpad (ou ibsad) avec des adresses non valides.

Solutions :

  • Consultez le manuel de référence des fonctions NI-488.2 (voir le lien associé ci-dessous) pour vous assurer que vos paramètres sont valides.
  • N'utilisez pas de descripteur de périphérique dans une fonction au niveau de la carte ou de descripteur de carte dans une fonction au niveau du périphérique.

 

ESAC (5)

Condition d'erreur : La carte GPIB n'est pas le contrôleur système, tel que requis.

Description : ESAC se produit lorsque ibsic, ibsre, SendIFC, ou EnableRemote est appelé lorsque la carte GPIB ne dispose pas des capacités de contrôleur système.

Cause possible : La carte GPIB n'est pas configurée en tant que contrôleur système.

Solutions :

  • Donnez à la carte GPIB la capacité de contrôleur système en appelant ibrsc 1 ou en utilisant l'utilitaire de configuration GPIB.

 

EABO (6)

Condition d'erreur : Opération d'E/S annulée.

Description : EABO indique qu'une opération d'E/S a été annulée pour une raison quelconque.

Cause possible : L'erreur EABO est généralement due à un timeout lors d'une opération de lecture ou d'écriture, mais peut également être provoquée par l'appel de la fonction ibstop, de la fonction ibclr ou de fonctions similaires au cours d'une opération d'E/S. Vous pouvez recevoir un timeout pendant les opérations d'écriture avec une carte PCI-GPIB, si le contrôle du bus PCI (une option dans le BIOS de votre ordinateur) n'est pas activé. Vous pouvez recevoir un timeout pendant les opérations de lecture, si l'instrument à partir duquel se font les lectures n'a pas compris la commande précédente et n'a donc rien à vous écrire. Voici quelques raisons pour lesquelles l'instrument n'aurait rien à dire :

  • Le message à l'instrument a peut-être été mal orthographié. Par exemple, "*IDN?" est une requête d'identification commune pour les instruments conformes à la norme IEEE 488.2. Il est facile d'orthographier ce message "*IND?", que l'instrument ne comprendra pas : il ne générera donc pas de chaîne de message à lire à partir de l'instrument.
  • Le message à l'instrument peut contenir une commande que l'instrument ne comprend pas. Par exemple, le message "*IDN?" de l'exemple précédent n'est compris que par les instruments conformes à la norme IEEE 488.2. Si votre instrument est un ancien matériel non conforme à la norme IEEE 488.2, il ne comprendra pas "*IDN?" et ne génèrera pas de chaîne de message à lire à partir de l'instrument.
  • L'instrument peut utiliser un caractère EOS (fin de chaîne) particulier comme méthode de terminaison, mais vous pouvez oublier d'ajouter ce caractère de terminaison à votre message. Par exemple, si votre instrument attend un retour à la ligne en tant que caractère EOS, alors "ID?" ne fonctionnera pas, mais "ID?\n" (où \n représente un retour à la ligne dans IBIC) le fera.
  • Vous pouvez vous attendre à voir EOI (End or Identify, l'une des cinq lignes de gestion de bus) comme méthode de terminaison, mais si l'instrument ne définit pas la ligne EOI à la fin de l'envoi de son message, toute opération de lecture expirera.

Solutions :

  • Assurez-vous que vos messages sont composés de commandes que l'instrument comprend. Consultez le manuel de l'utilisateur de votre matériel pour obtenir la liste des commandes possibles.
  • Consultez le manuel de l'utilisateur pour voir si votre instrument doit être en mode GPIB ou 488.2 pour être un récepteur GPIB.  Souvent, les instruments ne répondent aux commandes standard qu'après avoir été placés dans ce mode, sinon, ils renvoient une erreur, malgré l'envoi d'une commande valide.
  • Vérifiez que vous utilisez la méthode de terminaison correcte pour votre instrument. Le nombre d'octets (là où vous vous attendez à recevoir un certain nombre d'octets dans un message) est toujours utilisé, mais certains instruments utilisent EOS et le nombre d'octets, certains utilisent EOI et le nombre d'octets et certains n'utilisent que le nombre d'octets. Consultez le manuel d'utilisation de votre matériel pour connaître les méthodes de terminaison possibles à utiliser avec votre instrument.
  • Si EOS est la méthode de terminaison, assurez-vous d'ajouter le caractère de terminaison à la fin de votre message. Vous pouvez spécifier le caractère de terminaison dans l'utilitaire de configuration GPIB, mais le driver NI-488.2 ne l'ajoutera pas automatiquement pour vous !
  • Allongez le temps de timeout pour les opérations d'E/S à l'aide de la commande ibtmo.
  • Si vous recevez toutes les données et obtenez une erreur EABO, recherchez un caractère de fin de chaîne particulier (par exemple, retour à la ligne ou retour chariot) et configurez la carte GPIB pour terminer la lecture sur ce caractère à l'aide de la fonction ibeos.

 

ENEB (7)

Condition d'erreur : Carte GPIB inexistante.

Description : ENEB se produit lorsqu'aucune carte GPIB n'existe à l'adresse d'E/S spécifiée dans l'utilitaire de configuration GPIB. Ce problème survient dans les cas suivants : la carte n'est pas physiquement connectée au système, l'adresse d'E/S spécifiée lors de la configuration ne correspond pas aux paramètres réels de la carte, il existe un conflit système avec l'adresse d'E/S de base, ou le nom de l'interface pour la carte est différent de celui de la carte associée à votre périphérique.

Solutions :

  • Déterminez l'adresse d'E/S de base de votre carte en consultant l'utilitaire de configuration GPIB. Vérifiez le gestionnaire de ressources de votre système pour voir si une autre carte essaie d'utiliser tout ou partie de cette plage d'adresses. Assurez-vous que le nom de l'interface de votre carte est le même que celui de la carte avec laquelle votre périphérique est configuré pour communiquer (voir le lien vers la Base de connaissances 2368N85R ci-dessous).
  • Pour les cartes d'ancienne génération, assurez-vous que les cavaliers et les commutateurs DIP de la carte sont configurés sur les mêmes paramètres de ressources que l'utilitaire de configuration GPIB pense utiliser.
  • Éteignez votre ordinateur et assurez-vous que la carte est fermement insérée dans son emplacement.

 

Vous trouverez la suite de ces informations de dépannage dans Codes d'erreur GPIB et solutions courantes (2e partie) et Codes d'erreur GPIB et solutions courantes (3e partie).