OPC HDA

Le connecteur OPCHDA est disponible sous Windows uniquement. Il nécessite une configuration particulière de Windows pour fonctionner correctement. OIBus utilise un agent HDA, module intégré à OIBus mais disponible en standalone pour réaliser des extractions d’historique OPC en ligne de commande. Cet aspect sera abordé plus loin.

Configuration Windows

COM

COM est le protocole standard pour la communication entre des objets situés sur un même ordinateur mais qui font partie de programmes différents. Le serveur est l’objet qui fournit des services, comme la mise à disposition de données. Le client est une application qui utilise les services fournis par le serveur.

DCOM

DCOM représente une extension de la fonctionnalité COM pour permettre l’accès à des objets sur des ordinateurs distants. Cette base permet un échange de données standardisé entre les applications de l’industrie, des bureaux administratifs et de la fabrication. Auparavant, les applications qui accédaient aux données de processus étaient liées aux protocoles d’accès du réseau de communication. L’interface logicielle standard OPC permet de combiner de manière uniforme des appareils et des applications de différents fabricants.

Le client OPC est une application qui accède aux données de processus, aux messages et aux archives d’un serveur OPC. L’accès se fait par l’interface logicielle OPC. Un serveur OPC est un programme qui fournit aux applications de différents fabricants une interface logicielle standard. Le serveur OPC est la couche intermédiaire entre les applications de traitement des données de processus, les différents protocoles de réseau et les interfaces d’accès à ces données. Seuls les appareils dotés de systèmes d’exploitation basés sur la technologie Windows COM et DCOM peuvent utiliser l’interface logicielle OPC pour l’échange de données.

OPCDA et OPCHDA

OPCDA et OPCHDA sont des protocoles de communication utilisés dans le monde industriel et développés par la OPC Foundation (opcfondation.org) dont la dernière version date de 2003. Cette technologie a été remplacée par OPCUA mais reste cependant encore très utilisée dans l’industrie.

Un serveur HDA permet de retrouver des données historiques sur une plus ou moins longue période alors qu’un serveur DA permet de retrouver uniquement la valeur la plus récente d’un tag.

OPCDA utilise la technologie DCOM propriétaire Microsoft pour transférer les informations sur le réseau. Cette technologie est beaucoup plus complexe à paramétrer que des communications TCP classiques.

Tester la communication

DCOM utilise le port 135 du serveur HDA pour échanger avec le client. Pour ce faire, il est intéressant d’utiliser la commande tnc du Windowd Powershell installée en standard. Ci-dessous, un test qui échoue (à cause du firewall) puis un test qui réussit :

tester la communication

En cas de problème, voir le chapitre configuration firewall qui est vraisemblablement la source du problème.

Préparation de l’authentification

Un programme OPCDA client va communiquer avec le serveur DA/HDA avec l’adresse IP ou le hostname du serveur suivi du « progId » du serveur. Il va ensuite devoir être identifié au niveau Windows avec un nom et un mot de passe qui sont (par défaut) celui de l’utilisateur qui lance le programme Client. Cet utilisateur doit donc être connu sur le serveur HDA également. Il faut donc soit :

  • Lancer en tant que « opcuser » avec le mot de passe « H…..t ! » qui est connu sur le serveur HDA (faire shift click pour avoir le « launch as user » menu)
  • Créer un utilisateur avec le même mot de passe sur le serveur HDA (en supposant qu’il est accessible).
  • Faire partie du même domaine (l’utilisateur est donc accessible de tous les ordinateurs du domaine)

Important : L’utilisateur doit faire partie du groupe « Distributed COM Users »

Erreurs courantes

RPC unavailable

RPC unavailable

Probablement un problème de communication : faire les tests de l’étape 1

Access Denied

access denied

Problème de droit qui peut être diagnostiqué en utilisant le log Sécurité du serveur.

  • L’utilisateur et son mot de passe sont-ils créés sur le serveur HDA ?
  • L’utilisateur est-il dans le groupe « Distributed COM Users » sur le serveur HDA ?

Vérifier les paramétrages sur la machine client


paramétrages machine client
paramétrages machine client
paramétrages machine client
paramétrages machine client
paramétrages machine client

Configuration Firewall

La cause la plus probable est la configuration d’un firewall entre les deux ordinateurs et/ou chez l’hébergeur dans le cas de machines sur le cloud. Sur un serveur Windows, il est possible de configurer le firewall en rajoutant une règle sur le port 135 :

configuration firewall

Dans le cas d’un serveur hébergé chez Lightsail, il existe un firewall de plus dans lequel une règle custom doit être configurée pour le port 135 :


configuration firewall

Vérifier les paramétrages sur la machine Server


paramétrages machine server

Outil OPCEnum

L’OPC Foundation a fourni un outil pour permettre aux clients OPC HDA de localiser des serveurs sur des nœuds distants, sans avoir d’informations sur ces serveurs dans le registre local. Cet outil s’appelle OPCEnum et est distribué gratuitement par l’OPC Foundation. L’installation de l’interface OPC HDA de PI installe également OPCEnum. La fonction principale d’OPCEnum est d’informer ou de demander des informations aux autres instances d’OPCEnum sur les serveurs OPC HDA existants sur le système local. Lorsque OPCEnum est installé, il accorde les permissions DCOM Launch et Access à Everyone et définit le niveau d’authentification à NONE. Ceci permet l’accès à tout utilisateur qui peut se connecter au système. Les permissions peuvent être modifiées à l’aide de dcomcnfg.exe.

Connecteur OPC HDA

Le connecteur OPCHDA d’OIBus communique de manière transparente avec l’agent HDA. Il se configure donc de la même manière que les autres connecteurs. Il faut lui renseigner les champs suivants :

  • Adresse du fichier de l’agent HDA
  • Le port TCP à utiliser
  • L’adresse du serveur
  • Le nom du serveur

L’agent HDA a son propre niveau de log, qu’il est possible de configurer grâce au champ « Logging level » de la catégorie HDA Agent.

La catégorie serveur permet également d’affiner quelques paramètres associés au réseau :

  • Retry interval : durée entre deux tentatives de connexion en cas de perte
  • Max return values : nombre maximum de valeurs retournées par une requête (la requête est alors découpée)
  • Max read interval : l’interval de requête est découpé en sous intervals, notamment en cas de reprise d’activité, pour alléger la connexion.

Enfin les scan group permettent d’indiquer comment les données doivent être agrégées sur le scan mode spécifié. Par exemple, si le scan mode every10Seconds est spécifié, les valeurs selon agrégées selon la méthode indiquée par pas de 10 secondes.


scan group

Les points peuvent être listés en cliquant sur le bouton « points ». Un point Id correspond à l’adresse de la donnée sur le serveur OPCHDA.

Extraction d’historique avec l’agent HDA

Il est courant d’avoir un grand historique de valeurs disponibles dans un historian (PI/IP21) ou un équipement (DeltaV) auquel on ne peut accéder qu’avec le protocole OPC-HDA.

OPC HDA est considéré comme l’ancienne version d’OPC UA (la dernière version OPC HDA 1.20 a été publiée en 2003). Le problème de ce protocole est qu’il repose sur la technologie DCOM de Microsoft, assez difficile à configurer (par exemple, il utilise des « ports dynamiques » qui ne sont pas faciles à configurer avec les pares-feux).

OIBus dispose d’un « agent » spécifique pour HDA : « HDAagent ». HDAagent peut être exécuté en mode esclave pour l’acquisition continue mais dispose également d’un mode « ligne de commande » utile pour le débogage et l’importation de données historiques.

  • 1. HdaAgent : l’agent HDA est livré avec OIBUS. Vous devez décompresser le fichier d’installation d’OIBUS et accéder au dossier HdaAgent.
  • hda agent
  • 2. Tester l’installation : vous pouvez simplement lancer la commande « HdaAgent help » qui affichera une petite aide sur l’utilisation :
  • tester l'installation
  • 3. Tester la connectivité au serveur OPC : pour ce faire, vous pouvez utiliser la commande « HdaAgent ping ». Vous devez connaître le nom OPC de votre serveur et son adresse IP. Note : il peut être beaucoup plus facile d’installer OIBus directement sur le serveur car il est probable que le DCOM soit déjà configuré sur le serveur.
  • tester la connectivité au serveur opc
  • 4. Obtenir la liste des points (catalogue) : Pour créer le catalogue avec tous les points du serveur OPC, il est possible d’utiliser la commande suivante. Cela peut prendre une heure pour terminer. Vous devez changer les options -h et -s en conséquence. hdaagent catalog -x debug -l info -h `<<`server ip`>>` -s `<<`server name`>>` Cette commande créera dans le dossier courant les fichiers catalog.csv et hdaagent.log (utile pour vérifier les erreurs éventuelles). Le fichier résultant catalog.csv est une liste de tags dont l’historique sera exporté à l’étape suivante. C’est un fichier texte qui peut être édité si nécessaire.
  • obtenir la liste des points
  • 5. Importer l’historique : À ce stade, il est possible de lancer l’exportation de l’historique de chaque point dans le fichier catalogue.csv. Cela peut prendre plusieurs jours. Il est suggéré de commencer sur une petite période (une semaine) pour le test initial. Cela étant, vous pouvez aller sur une période plus longue (peut-être un an).

    Voici la commande : hdaagent bulk -x debug -l info -h `<<`server ip`>>` -s `<<`server name`>>` -b "2019-01-01 00:00:00" -e "2020-01-01 00:00:00”

    importer l'historique
    Cette commande va créer un fichier CSV pour chaque point du catalogue.csv. Si pour une raison quelconque le processus échoue, il est possible de le relancer. L’agent n’interrogera que les points qui manquent à l’exécution précédente en vérifiant si le fichier correspondant est déjà créé.