Intégration · Analyse

Connecter OPC UA à Python pandas / Jupyter

ProduitPython pandas / Jupyter
CatégorieAnalyse
Rôle OPC UAClient

Tirer des données OPC UA directement dans un DataFrame est la façon la plus rapide de répondre à une question sur une machine, et le bon outil pour une investigation ponctuelle. Ce n'est pas un collecteur : un notebook qui doit rester en fonctionnement est une dépendance de production que personne ne supervise.

Avant de commencer

  • asyncua installé, et le wrapper synchrone si vous n'aimez pas await dans un notebook.
  • Un accès en lecture au serveur, et son certificat approuvé s'il exige de la sécurité.
  • Une question claire. Les notebooks sont excellents pour répondre à une question et mauvais pour tourner indéfiniment.

Mise en place

  1. Utilisez le wrapper synchrone dans un notebookfrom asyncua.sync import Client vous donne la même API sans asyncio, ce qui se comporte bien mieux dans la boucle d'événements de Jupyter que d'essayer d'en imbriquer une.
  2. Collectez dans une liste, puis construisez le DataFrame une seule foisAjouter à un DataFrame à chaque notification est lent et alloue en permanence. Tamponnez les notifications dans une liste de dicts et construisez le DataFrame à la fin.
  3. Conservez le code de statut et les deux horodatages en colonnesVous en aurez besoin. Une analyse qui moyenne silencieusement un UncertainLastUsableValue produit un chiffre que personne ne peut défendre, et vous ne pouvez pas reconstruire le statut après l'avoir jeté.
  4. Indexez sur SourceTimestamp, en UTCDéfinissez-le comme un DatetimeIndex conscient du fuseau horaire. Mélanger des horodatages locaux naïfs venant de plusieurs machines, c'est ainsi qu'une limite d'équipe se retrouve décalée d'une heure.
  5. Lisez l'historique plutôt que d'attendreSi le serveur prend en charge l'accès historique, lisez une fenêtre passée au lieu de rester une heure dans un abonnement. Si vous avez besoin d'agrégats par équipe, demandez-les au serveur avec TimeAverage ou PercentGood : il les calcule bien moins cher que vous.
  6. Passez à un vrai collecteur quand ça marcheUne fois que le notebook répond à la question de façon répétable, déplacez la logique dans un petit service avec reconnexion et supervision. Un notebook laissé en marche sur le portable de quelqu'un est un incident de production qui attend qu'on rabatte un écran.

À quoi ressemble l'espace d'adressage

Ce que vous sélectionnez, aplati en colonnes. Les valeurs structurées se décodent en objets Python si vous chargez d'abord les définitions de types de données du serveur, que vous pouvez ensuite normaliser en colonnes. La structure issue des spécifications companion est disponible si vous la parcourez, mais pandas ne la préservera pas pour vous.

Les pièges

  • Jupyter fait tourner sa propre boucle d'événements : le client async simple peut donc se comporter bizarrement dans une cellule. Le wrapper synchrone évite entièrement le problème.
  • Un abonnement dans un notebook s'arrête au redémarrage du kernel, silencieusement. Tout jeu de données collecté ainsi comporte des trous que vous ne remarquerez qu'en le traçant.
  • Rééchantillonner avant de vérifier les codes de statut est l'erreur d'analyse classique : les valeurs mauvaises et incertaines se retrouvent moyennées dans une série d'apparence propre.
  • Des horodatages sans fuseau venant de plusieurs serveurs ne peuvent pas être comparés sans risque. Normalisez en UTC à l'ingestion, pas au moment du tracé.
  • De longues lectures d'historique non bornées contre un historian de production vous vaudront un appel téléphonique. Bornez chaque requête.

En extraire les données OEE

Idéal pour prototyper un calcul de TRS avant de le figer dans une plateforme, et pour la discussion sur les définitions qui suit toujours. Calculez la disponibilité à partir des durées d'état, la performance par rapport à un temps de cycle idéal déclaré, la qualité à partir des comptages de rebuts, et gardez chaque hypothèse dans une cellule à côté du nombre. C'est un outil de modélisation, pas de supervision - dès que la réponse doit exister à chaque poste, elle relève d'un service.

À vérifier avant de vous y fier :Les API des bibliothèques bougent entre versions majeures. Épinglez asyncua et pandas dans le notebook et consignez les versions à côté de tout résultat sur lequel vous comptez agir.
Intégrations liées

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.

Téléchargement gratuit
OPC UA Machine Data → OEE Mapping Kit
Quels nœuds interroger, comment ils deviennent Disponibilité, Performance et Qualité, et quelle spécification companion vous donne déjà la réponse: pour que vous cessiez d'inventer des tags.
Obtenir le kit de mapping gratuit →
Gratuit, sans cours, sans connexion