Ce document fournit des solutions aux codes d'erreur GPIB.
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).
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 "oh" 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 :
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 :
Condition d'erreur : La fonction n'a détecté aucun 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 :
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 :
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 :
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 :
Condition d'erreur : L'opération d'E/S a été abandonné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 :
Solutions :
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 :
Condition d'erreur : Une erreur a lieu lors de l'utilisation de DMA pour les transferts de données.
Description : EDMA se produit si une erreur DMA système est rencontrée lorsque le driver NI-488.2 tente de transférer des données via le GPIB en utilisant DMA.
Solutions :
Condition d'erreur : Fonction non autorisée tant que les E/S asynchrones sont en cours.
Description : L'EOIP se produit lorsqu'une opération d'E/S asynchrone n'est pas terminée avant un autre appel GPIB. Vous ne pouvez utiliser la fonction ibstop, ibnotify, ibwait ou ibonl que pendant les opérations d'E/S asynchrones. Si un autre appel GPIB est tenté, EOIP est renvoyé.
Cause possible : Appel de tout appel de fonction GPIB non supporté pendant les E/S asynchrones.
Solution :
Condition d'erreur : Opération non réalisable
Description : L'ECAP se produit lorsque votre carte GPIB n'est pas capable d'effectuer une opération, ou lorsqu'une capacité particulière a été désactivée dans le logiciel et qu'un appel est effectué qui requiert cette capacité.
Solution :
Condition d'erreur : Erreur de système de fichiers.
Description : EFSO se produit lorsqu'un appel ibrdf ou ibwrtf rencontre un problème lors d'une opération sur fichier. Plus précisément, cette erreur indique que la fonction ne peut pas ouvrir, créer, rechercher, écrire ou fermer le fichier auquel vous accédez. Le code d'erreur spécifique du système d'exploitation pour cette condition est contenu dans ibcntl.
Solutions :
Condition d'erreur : Erreur de transfert d'octets de commande.
Description : EBUS se produit lorsque certaines erreurs de bus GPIB se produisent pendant les fonctions du périphérique. Toutes les fonctions du périphérique envoient des octets de commande pour effectuer l'adressage et d'autres opérations de gestion de bus. Les périphériques sont censés accepter ces octets de commande dans le délai spécifié par la configuration par défaut ou la fonction ibtmo. EBUS se produit si un timeout a eu lieu lors de l'envoi de ces octets de commande.
Cause possible : Aucun périphérique GPIB n'est connecté à votre contrôleur GPIB. Cela peut être dû au fait que tous vos instruments sont éteints, qu'un de vos instruments est en erreur et active une ligne de handshake, que votre câble GPIB est déconnecté de votre carte ou que votre câble GPIB est brisé.
Solutions :
Condition d'erreur : Octets d'état d'interrogation série perdus.
Description : ESTB n'est rapporté que par la fonction ibrsp. ESTB indique qu'un ou plusieurs octets d'état d'interrogation série reçus d'interrogations série automatiques ont été supprimés par manque d'espace de stockage. Plusieurs octets d'état plus anciens sont disponibles ; cependant, le plus ancien est renvoyé par l'appel ibrsp.
Cause possible : L'instrument affirme à plusieurs reprises la ligne SRQ.
Solutions :
Condition d'erreur : SRQ bloquée sur la position ON.
Description : ESRQ ne peut être renvoyé que par un appel ibwait au niveau du périphérique, dans lequel vous avez configuré la fonction ibwait pour qu'elle renvoie une fois que le bit RSQ du mot d'état (ibsta) est activé. ESRQ indique qu'une attente pour RQS n'est pas possible car la ligne GPIB SRQ est bloquée sur ON.
Cause possible : Cette situation peut être causée par les événements suivants : un problème de câblage peut entraîner l'activation de la ligne SRQ ; un périphérique inconnu du logiciel active la ligne SRQ - parce que le logiciel ne connaît pas ce périphérique, il ne peut jamais interroger en série le périphérique pour désactiver la ligne SRQ ; ou un testeur de bus GPIB (ou un équipement similaire) peut forcer l'activation de la ligne SRQ.
Solutions :
Condition d'erreur : Problème de table.
Description : ETAB se produit uniquement pendant les fonctions FindLstn et FindRQS. ETAB indique qu'il y a eu un problème avec une table utilisée par ces fonctions.
Cause possible : Dans le cas de FindLstn, ETAB signifie que la table donnée n'avait pas assez de place pour contenir toutes les adresses des récepteurs trouvés. Dans le cas de FindRQS, ETAB signifie qu'aucun des périphériques de la table donnée ne demandait de service.
Solutions :
Condition d'erreur : L'interface GPIB est verrouillée et inaccessible.
Cause possible : Généralement, cette erreur se produit lorsque plusieurs processus veulent accéder à la même interface et qu'un processus a déjà verrouillé l'interface. Cette erreur est renvoyée lorsque l’opération ne peut pas être effectuée en raison du verrou existant sur l’interface. Elle est également renvoyée lorsqu’un processus tente de déverrouiller une interface alors que ce verrouillage n’existe pas.
Solution :
Condition d’erreur : échec de la réinitialisation du callback ibnotify.
Cause possible : Cette erreur se produit lorsqu’une notification asynchrone (ibnotify) est utilisée dans les applications NI-488.2. Cette fonction est utile si vous souhaitez que votre application soit avertie de manière asynchrone de l’occurrence d’un ou de plusieurs événements GPIB. Cette notification d’événement est effectuée au moyen d’une fonction de callback. La fonction de callback est enregistrée avec le driver NI-488.2 lorsque l’appel ibnotify est effectué. Cette erreur indique que cette notification de callback n'a pas réussi à se réinitialiser en renvoyant une valeur illégale ou lorsqu'une erreur fatale du driver (EDVR) s'est produite.
Solutions :
Condition d'erreur : Handle d'entrée non valide.
Cause possible : Plusieurs commandes GPIB prennent le handle d'entrée de la carte ou du périphérique comme paramètre d'entrée, ce qui peut être la source de cette erreur. Cette erreur peut survenir dans plusieurs circonstances. Voici certains de ces scénarios :
Solutions :
Condition d'erreur : Attendre en cours sur un handle d'entrée spécifié.
Cause possible : Cette erreur se produit lorsqu’il existe plusieurs threads dans le même processus, et lorsque plus de deux threads accèdent à la même interface. EWIP indique qu’un appel ibwait est déjà en cours sur un descripteur d’unité précis ; cela se produit lorsqu’un thread effectue déjà un appelibwait en utilisant le même descripteur et qu’un autre thread tente d’appeler ibwait sur le même descripteur.
Solution :
Condition d'erreur : Annulation de la notification d'événement à cause de la réinitialisation de l'interface.
Cause possible : L’erreur ERST survient lorsque la notification d’événements a été annulée en raison de la réinitialisation de l’interface. Un appel ibwait en attente dans le driver renvoie ERST dans les situations suivantes :
Une référence à un callback ibnotify peut être faite avec l’erreur ERST dans les situations suivantes :
Solutions :
Condition d'erreur : Perte d'alimentation de l'interface.
Cause possible : L’erreur EPWR survient lorsqu’une interface perd son alimentation. Cela se produit souvent lorsque le système passe en état de veille et en revient.
Solutions :