Référence
Codes de statut OPC UA
Tous les codes de statut OPC UA qu'un ingénieur rencontre réellement, avec leur signification, les vraies causes par ordre de fréquence, et la correction. Actuellement 127 codes documentés sur les 273 de la liste normative des StatusCode, priorisés selon la fréquence à laquelle ils bloquent un projet.
Comment s'en servir.Travaillez sur le code que vous avez réellement reçu, pas sur celui que vous attendiez. OPC UA renvoie le code le plus spécifique qu'il peut, et ce code nomme en général le vrai problème: une erreur de certificat n'est presque jamais une erreur réseau. Si vous n'arrivez pas du tout à vous connecter, commencez parBadConnectionRejected; si la session s'ouvre puis tombe, commencez parBadSecurityChecksFailed.
127 pages
Certificats 14
BadCertificateChainIncompleteUn certificat émis par une autorité échoue à la validation alors même que l'autorité racine est approuvée, et l'erreur évoque une chaîne incomplète ou impossible à construire plutôt qu'un pBadCertificateHostNameInvalidLe canal s'ouvre suffisamment pour valider le certificat puis échoue sur une incompatibilité de domaine ou de nom d'hôte, typiquement juste après queBadCertificateInvalidLa négociation échoue immédiatement sans détail utile, et déplacer le certificat dans le magasin de confiance ne change strictement rien.BadCertificateIssuerRevocationUnknownLa validation aboutit sur le certificat du pair mais échoue sur l'un des certificats d'autorité au-dessus, typiquement dans une PKI à deux niveaux où seule la CRL de la sous-autoritéBadCertificateIssuerRevokedToutes les applications dont le certificat provient d'une même autorité de certification échouent à se connecter d'un coup, tandis que celles certifiéBadCertificateIssuerTimeInvalidToutes les applications certifiées par une même CA cessent de se connecter au même instant, alors que les certificats d'application individuels sont tous largement à l'intérieur de leur propre vBadCertificateIssuerUseNotAllowedDes certificats émis par une CA d'entreprise opérationnelle - approuvée ailleurs dans l'entreprise, valable pour TLS - sont refusés par les applications OPC UA avec une erreur d'émettBadCertificatePolicyCheckFailedUn équipement ancien ou un client historique est refusé dès la négociation alors que des pairs modernes se connectent normalement au même endpoint, et le certificat lui-même estBadCertificateRevocationUnknownUn certificat correctement chaîné, en cours de validité et correctement nommé est refusé avec une erreur liée à la révocation, et le dossier crl de votre PKI est vide ou contientBadCertificateRevokedUne connexion qui fonctionnait auparavant échoue à la négociation avec ce code, et le certificat du pair atterrit dans le magasin des rejetés alors quBadCertificateTimeInvalidUne connexion qui fonctionnait depuis des mois échoue du jour au lendemain, ou un équipement flambant neuf échoue dès la première connexion avec une erreur de validité de certificat.BadCertificateUntrustedLa connexion meurt pendant OpenSecureChannel, le client affiche une boîte de dialogue de confiance ou une erreur de certificat, et une copie du certificat fautif apparaîtBadCertificateUriInvalidLa validation du certificat passe les contrôles de confiance et de nom d'hôte puis échoue sur l'URI d'application, souvent juste après que quelqu'un a copié une configuratiBadCertificateUseNotAllowedUn certificat approuvé, en cours de validité et correctement nommé est malgré tout rejeté, et le message pointe l'usage de la clé plutôt que la confia
Sécurité 7
BadApplicationSignatureInvalidLe canal sécurisé s'ouvre et CreateSession réussit, puis ActivateSession échoue immédiatement : le client semble donc presque se connecter avant de tomber.BadNonceInvalidUn couple client-serveur précis échoue à OpenSecureChannel ou à ActivateSession alors que les deux applications fonctionnent parfaitement avec tous les autres pairs.BadSecurityChecksFailedLa négociation dépasse la liste des endpoints puis meurt pendant OpenSecureChannel, CreateSession ou ActivateSession, avec une erreur de sécurité qui ne nomme aucunBadSecurityModeInsufficientLes lectures et les browses fonctionnent normalement, mais un appel de méthode précis ou un nœud précis échoue, et il échoue de façon identique pour chaque utilisateur essayé.BadSecurityModeRejectedUne connexion de test rapide non sécurisée est refusée d'emblée, ou un client configuré pour Sign échoue face à un serveur qui ne publie que SignAndEncrypt.BadSecurityPolicyRejectedUn client qui se connecte sans problème à un serveur refuse de se connecter à un autre, et l'échec survient immédiatement à l'ouverture du canal, sansBadUserSignatureInvalidLa connexion anonyme ou par nom d'utilisateur au même serveur fonctionne, et seule l'identité utilisateur par certificat échoue, toujours à l'ActivateSession.
Authentification 4
BadIdentityChangeNotSupportedUne application qui se connecte en anonyme puis se ré-active avec les identifiants d'un utilisateur pour une action privilégiée est refusée à la ré-activation, alorsBadIdentityTokenInvalidActivateSession échoue immédiatement quels que soient le nom d'utilisateur et le mot de passe essayés, et la connexion anonyme au même endpoint peut très bien fonctionner.BadIdentityTokenRejectedLes identifiants d'un utilisateur sont refusés alors qu'un autre utilisateur se connecte sans problème au même endpoint, avec le même client et les mêmes réglages.BadUserAccessDeniedLe browse fonctionne, les lectures sur certains nœuds fonctionnent, et une lecture, une écriture ou un appel de méthode précis est refusé à un utilisateur alors qu'un administrateur peut l'effectuer.
Sessions 4
BadSessionClosedLes appels échouent immédiatement avec BadSessionClosed au lieu d'expirer, souvent juste après qu'un chemin d'arrêt ou une reconnexion s'est exécuté en parallèle du travail normalBadSessionIdInvalidUn client qui lit tranquillement depuis des minutes ou des heures échoue soudain sur tous les appels de service avec BadSessionIdInvalid, et continueBadSessionNotActivatedLa connexion semble s'établir - pas d'erreur de certificat, pas de timeout - mais la première vraie requête, généralement un Browse du dossier racine, échoue avec BadBadTooManySessionsDe nouveaux clients ne peuvent plus se connecter alors que ceux déjà en place continuent de fonctionner, et l'échec apparaît au CreateSession plutôt qu'au niveau de la socket ou du certificat.
Canaux 4
BadRequestHeaderInvalidChaque appel de service sur un canal par ailleurs sain échoue avec la même erreur d'en-tête, y compris les plus simples comme Read : le problème n'est donc clairement pas leBadSecureChannelClosedLes requêtes échouent en bloc dès que le canal tombe, généralement avec les requêtes Publish en attente qui se terminent en premier, et l'état de connexion du clientBadSecureChannelIdInvalidLes requêtes sont rejetées instantanément avec une erreur de niveau canal, souvent juste après une tentative de reconnexion qui semblait avoir réussi au niveau TCP.BadSecureChannelTokenUnknownUne connexion de longue durée échoue à intervalle régulier - souvent à l'heure pile ou sur un multiple fixe de minutes - et se rétablit après une reco
Connexion 17
BadConnectionClosedLes requêtes en vol, en particulier les appels Publish en long polling, se terminent toutes avec la même erreur au même instant, et l'état du client passe en reconBadConnectionRejectedLe client échoue immédiatement avec une erreur de connexion et aucun détail OPC UA - pas de liste d'endpoints, pas d'invite de certificat, pas de session.BadEndpointUrlInvalidLa connexion échoue avant toute invite de certificat ou d'utilisateur, généralement en moins d'une seconde, le client signalant l'URL plutôt qu'un problème réseau ou de sécuriBadProtocolVersionUnsupportedLa connexion TCP est acceptée puis coupée en quelques millisecondes, avant toute liste d'endpoints, toute demande de certificat ou toute session, avecBadRequestInterruptedPlusieurs requêtes en vol échouent ensemble à l'instant exact où une reconnexion démarre, sans qu'aucun motif de défaut côté serveur ne soit attaché à l'une d'elles.BadRequestTimeoutUn type d'appel - un gros Browse, un Read en masse, une méthode qui touche la couche terrain - expire systématiquement alors que les petits appels sur la même session rBadServerHaltedLa connexion s'établit ou se rétablit sans problème, mais chaque appel de service est refusé avec le même code, et cela persiste jusqu'à ce que quelqu'un intervienne ouBadServerNotConnectedSoit tous les appels d'un client échouent instantanément sans la moindre activité réseau, soit un sous-ensemble de tags d'une passerelle passe en mauvBadServerTooBusyLes requêtes sont refusées rapidement et proprement sur une connexion par ailleurs saine, par salves qui coïncident avec un démarrage d'usine, un redémarrage serveur ou unBadShutdownToutes les requêtes en cours se terminent d'un coup avec le même code, la connexion tombe immédiatement après, et le serveur reste injoignable pendant un courtBadTcpEndpointUrlInvalidLa connexion TCP est acceptée puis fermée immédiatement par une trame d'erreur : le client signale donc un échec en bien moins d'une seconde, sans aucBadTcpMessageTooLargeLes petites opérations fonctionnent bien mais un appel précis échoue à chaque fois : un Read large, un Write volumineux, un browse d'un gros dossier, ou une notificatioBadTcpMessageTypeInvalidUn serveur configuré pour le reverse connect journalise des rejets répétés depuis l'adresse du client et cesse de réessayer, tandis que le client affiche un messBadTcpNotEnoughResourcesLes connexions ou les grandes requêtes échouent sur un serveur qui tourne depuis un moment, souvent en même temps que des échecs d'abonnement et de brBadTcpSecureChannelUnknownLes messages sont rejetés au niveau de la couche de trames juste après ce qui ressemblait à une reconnexion réussie, ou juste après un redémarrage du serveur pendant que leBadTcpServerTooBusyLes nouvelles connexions sont refusées au handshake alors que les clients existants continuent de fonctionner, et les refus se concentrent au démarrage de l'usine ou après un redémarrage du serveur.BadTimeoutLes opérations échouent après un intervalle fixe qui correspond à une valeur par défaut du SDK, et la connexion se rétablit souvent d'elle-même un instant plus tard, donnant une dent de scie de d
Espace d'adressage 12
BadAttributeIdInvalidUne lecture renvoie Good au niveau du service mais une entrée du tableau de résultats porte ce statut, en général celle d'un dossier ou d'un objet qu'BadBrowseDirectionInvalidUn appel Browse échoue immédiatement avec ce code pour chaque nœud, y compris des nœuds bien connus comme le dossier Objects, alors qu'un Read sur la même sessionBadContinuationPointInvalidUne requête de browse ou d'historique volumineuse fonctionne sur les premières pages puis échoue en cours de route, plus souvent sur un serveur chargBadNoContinuationPointsLe browse ou l'HistoryRead se met à échouer pour tous les clients sur un serveur chargé, et les défaillances disparaissent après le redémarrage des clients plutôt qu'après une quelconqueBadNoMatchUn chemin de browse qui se résout sur une machine ne trouve aucune correspondance sur une machine apparemment identique, ou une requête qui fonctionnait sur un système de test renvoieBadNodeClassInvalidUne opération précise échoue sur un nœud qui se parcourt et se lit parfaitement, le plus souvent un Call de méthode ou un abonnement à des événements.BadNodeIdInvalidToute requête touchant un nœud particulier échoue de façon identique, et la valeur fautive dans le journal paraît souvent visiblement incorrecte - unBadNodeIdUnknownUn client qui fonctionnait depuis des mois échoue soudainement sur tout ou partie de ses nœuds juste après un chargement de contrôleur, une mise à jour de firmware ou une reconfBadNotFoundUne entrée d'un résultat de traduction de chemin de browse est mauvaise alors que les autres se résolvent, ou bien un chemin entier échoue sur un élément précis que vous voyez pourtant très bien dansBadObjectDeletedUn sous-ensemble de nœuds qui fonctionnait il y a un instant se met à échouer alors que le reste de l'espace d'adressage est intact, souvent après laBadReferenceTypeIdInvalidUn appel Browse ou AddReferences qui fonctionne contre un serveur échoue contre un autre, et le browse ne renvoie rien plutôt qu'un ensemble de résultats vide.BadTooManyMatchesUne traduction de chemin ou une requête échoue uniquement contre les plus grosses machines ou les serveurs les plus chargés, alors que la même requête réussit sur un petit espace d'adres
Accès aux données 14
BadDataEncodingInvalidUn Read ou un CreateMonitoredItems sur une variable structurée échoue avec BadDataEncodingInvalid alors que les nœuds scalaires du même serveur se lisent sans problème.BadDataEncodingUnsupportedLes valeurs structurées se lisent correctement avec l'encodage par défaut mais échouent dès que le client demande du XML ou du JSON, sur un serveur qui se comporte par ailleurs normalementBadDecodingErrorUn nœud précis ou un appel de service précis échoue au décodage alors que tout le reste fonctionne sur la même session, ou un client lève une exceptioBadEncodingLimitsExceededLes lectures ou les notifications d'abonnement fonctionnent sur de petits ensembles et échouent dès qu'un lot grossit, qu'un grand tableau est ajouté ou qu'un export de l'espace d'adressage est tenté.BadIndexRangeInvalidUn Read ou un Write incluant un IndexRange échoue immédiatement, alors que la même requête sans IndexRange réussit et renvoie le tableau entier.BadIndexRangeNoDataUne lecture avec plage qui fonctionnait hier renvoie désormais BadIndexRangeNoData, généralement après que le tableau sous-jacent a rétréci ou que le serveur a redémarré avec un tBadNotReadableLe browse montre le nœud et ses attributs sans problème, mais chaque Read de l'attribut Value et chaque tentative de l'ajouter à un abonnement renvoie BadNotReaBadNotWritableUn Write renvoie BadNotWritable immédiatement, sans délai et sans effet sur la valeur, alors que les Read sur le même nœud fonctionnent parfaitement.BadOutOfRangeUne écriture avec une valeur plausible est rejetée alors qu'une valeur plus petite ou plus grande sur le même nœud passe, et la lecture du nœud révèleBadRequestTooLargeUn Read, un Write ou un CreateMonitoredItems groupé échoue purement et simplement, sans résultats par item, alors que la même opération scindée en deux réussit.BadResponseTooLargeUn Browse d'un gros dossier, un HistoryRead sur une longue fenêtre ou un Publish pendant une salve échoue, alors que le même appel sur un périmètre plus réduit renvoie normaBadStructureMissingUn appel de service échoue immédiatement avec BadStructureMissing et sans résultats par item, en général la première fois qu'une requête construite à la main ou générée est utilisée.BadTypeMismatchUne écriture qui semble correcte renvoie BadTypeMismatch pour un item alors que les autres items de la même requête réussissent, et relire le même nœud fonctionnBadWriteNotSupportedUn Write échoue avec BadWriteNotSupported alors que l'AccessLevel indique CurrentWrite, et la même valeur écrite depuis un autre outil passe.
Appareil 6
BadDeviceFailureLes tags d'un équipement ou d'un module d'E/S passent en défaut alors que le reste du serveur reste sain, et l'équipement lui-même affiche une indication de défaut.BadNoCommunicationLa session reste connectée et le browse fonctionne, mais un groupe de tags bascule en mauvais statut au même instant et y reste jusqu'à ce que l'équipBadNotConnectedUn nœud se parcourt normalement et possède un DisplayName et un DataType cohérents, mais chaque lecture renvoie un statut bad et aucune valeur n'est jamais arrivée - pas même uneBadOutOfServiceUn tag passe en défaut à un moment qui coïncide avec des travaux de maintenance plutôt qu'avec un événement équipement ou réseau, et il revient à Good quand les travauxBadSensorFailureUne mesure passe en mauvais statut alors que toutes les autres valeurs du même équipement restent Good, souvent avec le signal brut posé sur un dépassBadWaitingForInitialDataImmédiatement après la création d'un abonnement, la première notification pour tout ou partie des items arrive avec ce statut et sans valeur, puis les vraies valeurs suivent
Abonnements 13
BadDeadbandFilterInvalidLes items avec bande morte sont rejetés alors que des items identiques avec DeadbandType None sont acceptés, et le rejet suit le nœud plutôt que le clienBadEventFilterInvalidUne tentative d'abonnement aux événements sur l'objet Server ou sur une zone d'alarmes échoue immédiatement, et aucun événement n'est jamais livré aloBadFilterNotAllowedCreateMonitoredItems ou ModifyMonitoredItems rejette un item précis avec ce code alors que des items identiques sans filtre sont acceptés.BadFilterOperandInvalidUn abonnement aux événements est rejeté et la réponse porte un EventFilterResult avec un statut mauvais sur un opérande select ou where précis plutôtBadMonitoredItemFilterUnsupportedLe même filtre qui fonctionne contre un serveur est rejeté par un autre, généralement un automate ou une passerelle embarquée, alors que l'item lui-même est créé avec succBadMonitoredItemIdInvalidModifyMonitoredItems, SetMonitoringMode, SetTriggering ou DeleteMonitoredItems renvoie ce code pour certains items alors que d'autres items du même appel réussBadMonitoringModeInvalidSetMonitoringMode ou CreateMonitoredItems rejette l'item avec ce code, et l'item soit ne remonte jamais rien, soit reste dans le mode qu'il avait déjà.BadNoSubscriptionLa boucle Publish renvoie ce code immédiatement et de façon répétée sur une session qui se connecte proprement et sait lire et parcourir normalement.BadSubscriptionIdInvalidDes appels Publish qui fonctionnaient se mettent à renvoyer ce code à chaque tentative, et plus aucune notification de changement de données n'arrive, alors qu'un simple Read sur leBadTooManyMonitoredItemsCreateMonitoredItems réussit pour la première partie d'un gros lot et renvoie ce code pour le reste : l'abonnement démarre donc avec moins d'itemsBadTooManyOperationsUn appel Read, Write, Browse ou CreateMonitoredItems volumineux est rejeté d'emblée avec ce code comme erreur portant sur toute la requête, alors queBadTooManyPublishRequestsUn client qui fonctionne contre un serveur consigne régulièrement ce code contre un autre, parfois avec des trous occasionnels dans les données, alors que tout le reste deBadTooManySubscriptionsCreateSubscription échoue une fois que le système tourne depuis un certain temps ou une fois les derniers clients mis en service, alors que les abonnements existants continuent de fonctionn
Historique 6
BadAggregateInvalidInputsUne lecture traitée renvoie de bonnes valeurs d'agrégat pour la plupart des intervalles et ce code pour quelques-uns épars, généralement les intervalles couvrant un arrêt machine ouBadAggregateNotSupportedLes lectures d'historique brutes fonctionnent, TimeAverage fonctionne, et PercentGood ou WorstQuality renvoie ce code depuis le même serveur.BadBoundNotFoundLes lectures à horodatages fixes renvoient des valeurs au milieu d'un poste mais échouent aux tout premiers et tout derniers instants demandés.BadDataUnavailableLes lectures d'historique réussissent pour les derniers jours et échouent avec ce code dès que la fenêtre demandée remonte dans des données plus anciennes.BadHistoryOperationInvalidL'appel au service d'historique aboutit lui-même mais chaque nœud revient avec ce code, et décaler la fenêtre temporelle de quelques secondes le faitBadHistoryOperationUnsupportedUne lecture d'historique brute ou traitée qui fonctionne contre un serveur ne renvoie rien d'autre que ce code contre un autre, alors que la variable a manifestement des
Méthodes 5
BadArgumentsMissingUne méthode qui fonctionne depuis la boîte de dialogue Call d'UaExpert échoue depuis votre propre client avec ce code, et ajouter un argument fictif change l'erreur plutôtBadInvalidArgumentL'appel atteint la méthode et échoue immédiatement, les mêmes valeurs passant depuis un outil du fournisseur mais pas depuis votre client.BadMethodInvalidLa méthode est clairement visible dans l'espace d'adressage et lisible dans UaExpert, mais chaque Call renvoie ce code.BadNotExecutableLe même appel réussit quand la machine est à l'arrêt en mode local et échoue dès qu'elle tourne, ou réussit pour un identifiant et échoue pour un autre.BadTooManyArgumentsUn appel de méthode qui fonctionnait échoue désormais après une mise à jour du client ou une rétrogradation du serveur, sans changement des valeurs envoyées.
Serveur 9
BadInternalErrorUne requête reproductible échoue alors que tout le reste sur la même session fonctionne, et le journal du serveur contient une exception ou une pile d'appels au même inBadInvalidStateLe même appel réussit parfois et échoue à d'autres moments, la différence suivant ce que faisait la machine ou l'objet à cet instant.BadNotImplementedUn service ou une opération défini dans la spécification et visible dans votre SDK renvoie le même refus à chaque tentative, sur chaque nœud, depuisBadNotSupportedUn service qui fonctionne avec les paramètres par défaut échoue dès que vous réglez une option, un filtre, un encodage ou un drapeau particulier.BadNothingToDoUn appel de service échoue instantanément sans aucun résultat par opération, généralement juste après un chargement de configuration ou une étape de filtrage dans le client.BadOutOfMemoryLes requêtes se mettent à échouer en charge alors que les plus petites passent encore, et le serveur peut récupérer de lui-même une fois que les clients se calment.BadResourceUnavailableUne partie de l'espace d'adressage fonctionne normalement tandis qu'une branche, un service ou un équipement échoue systématiquement, souvent à partirBadServiceUnsupportedUn appel précis échoue de façon identique à chaque fois depuis tous les clients, alors que les sessions, le browse et les lectures fonctionnent normalement.BadUnexpectedErrorUne opération échoue avec un statut qui ne dit rien de précis, parfois par intermittence, et le client n'a aucune information supplémentaire sur laquelle agir.
Uncertain 6
UncertainEngineeringUnitsExceededUn tag signale une valeur légèrement au-delà de ses limites déclarées avec un statut uncertain, le plus souvent à zéro, au maximum, ou juste au-delà d'une extrémité de la plaUncertainInitialValueLa première notification de nombreux items après la création d'un abonnement porte ce statut, et les valeurs réelles avec le statut Good suivent au bout d'un cycle ou dUncertainLastUsableValueUn tag continue d'afficher une valeur plausible et figée pendant que l'horodatage cesse d'avancer, et les courbes en aval s'aplatissent au lieu de passer en défaut.UncertainNoCommunicationLastUsableValueLes tags d'un équipement se figent tous sur des valeurs plausibles avec un statut incertain au même instant, alors que les tags des autres équipementsUncertainSensorNotAccurateUn seul tag analogique remonte un statut incertain alors que sa valeur se situe à la limite de sa plage ou près de celle-ci, et les tags autour de lui sont tous Good.UncertainSubstituteValueUn tag signale un nombre suspicieusement rond ou qui ressemble à une valeur par défaut - zéro, une consigne nominale, une valeur de milieu d'échelle - avec un statut uncertain, et il ne
Good 6
GoodClampedUne écriture renvoie un succès, mais relire le même nœud donne un nombre différent - typiquement exactement la limite de la plage - et la machine se comporte comme si uGoodCompletesAsynchronouslyUn appel de méthode renvoie un succès immédiat pour une opération qui n'a manifestement pas pu se terminer - un chargement de recette, une mise à jourGoodMoreDataUne requête d'historique renvoie une série plausible mais courte qui s'arrête toujours au même point, et un client naïf en conclut que les données s'arrêtent là.GoodNoDataUne requête d'historique portant sur une période que vous attendiez peuplée renvoie un résultat vide avec un statut Good, et un rapport affiche un intervalle blanc au lieuGoodOverloadLes données paraissent continues et plausibles mais des échantillons manquent - un compteur saute, un cycle est absent, un transitoire rapide n'apparaît jamais - et aucune erreur n'estGoodSubscriptionTransferredAprès une interruption réseau ou un renouvellement de canal, le client journalise ce code une fois par abonnement transféré et les données reprennent sans qu'aucun monitored
Dernière vérification le 7 septembre 2026 par rapport à OPC UA 1.05.07. OPC UA Connect est une ressource pédagogique et n'est pas affiliée à l'OPC Foundation.