Post on 23-Nov-2018
Cours Supervision – Serveur OPC - Pierre Bonnet 1
SUPERVISIONServeurs OPC
Master Pro ASE SMaRT
« Sytèmes Mobiles Automatisés et Réseaux de Terrain »
Cours Supervision – Serveur OPC - Pierre Bonnet 2
Pierre BONNET
Cours Supervision – Serveur OPC - Pierre Bonnet 3
SERVEURS OPC
OPC signifie
Object Linking and Embedding forProcess Control .
La norme OPC est maintenue depuis 1997 par la fondation OPC qui assure sa promotion.La fondation regroupe aujourd’hui plus de 220 membres dont les plus grands noms de l’informatique industrielle.Différents groupes de travail sont actifs en son sein et travaillent aux futures améliorations et évolutions des spécifications.
Sites de référence : http://www.opcfoundation.org/http://www.opcconnect.com
Cours Supervision – Serveur OPC - Pierre Bonnet 4
SERVEURS OPC
Quelques membres de la fondation OPC
Fabricants d'automates : Siemens, Schneider, Rockwell , Omron, Mitsubishi, Phenix Contact, Pilz, ABB ….
Fabricants d'automates spécialisés : Lacroix Sofrel , WIT, Schneider (télégestion),
Editeurs de superviseurs :Areal, Arc Informatique, Codra, 4CE Industry, Invensys, Iconics, ...
Serveurs/Outils OPC :Kepware, Kassl, Matrikon, Integration Objects, Geniop,
Cours Supervision – Serveur OPC - Pierre Bonnet 5
Objectifs du standard OPC
SERVEURS OPC
• Standardiser les échanges de flux entre équipements hétérogènes communicants.
• Limiter la prolifération des protocoles
• Faciliter la maintenance des communications
• Pérenniser les installations
• Donner le choix des fournisseurs aux utilisateurs
• Permettre aux exploitants de ce concentrer sur leur métier.
Cours Supervision – Serveur OPC - Pierre Bonnet 6
Structure globale sans OPC
SERVEURS OPC
Source: 4CE Industry
Cours Supervision – Serveur OPC - Pierre Bonnet 7
Sans OPC
SERVEURS OPC
Conflits d ’accès
deux logiciels ne peuvent pas accéder simultanément à la même ressource matérielle
Incompatibilité entre différents vendeurs
des ressources matérielles peuvent ne pas être pas supportées par certains logiciels
Evolutions matérielles difficiles
une évolution des spécifications d ’un matériel peut bloquer le fonctionnement d ’un logiciel qui devra être réécrit
Duplication des efforts de développement
chaque logiciel doit s ’interfacer avec chaque matériel
Cours Supervision – Serveur OPC - Pierre Bonnet 8
Avec OPC
SERVEURS OPC
Source: 4CE Industry
Cours Supervision – Serveur OPC - Pierre Bonnet 9
SERVEURS OPC
Que comprend la spécification OPC ?
- une spécification commune à tous les serveursOPC Common et OPC Security
- l ’accès aux données en temps réel OPC Data Access .
- la gestion des alarmes et événements OPC Alarm & Event.
- la construction d ’historiques OPC Historical Data Access
- les traitements par lot OPC Batch
OPC est une spécification récente (1997) qui évolue rapidement
Cours Supervision – Serveur OPC - Pierre Bonnet 10
SERVEURS OPC
Que comprend la spécification OPC ?
Etat des spécifications OPC en 2006
définition récente
OPC UA s'appuie exclusivement sur XML; cette norme a pour objet de définir les moyens d'accès aux informations à un niveau élevé ( typiquement MES, ERP) ; elle présente l'avantage de ne pas être liée à une spécification propriétaire (DCOM) et de pouvoir être implantée sur toute structure (automate, microcontroleur...)
Cours Supervision – Serveur OPC - Pierre Bonnet 11
SERVEURS OPC
Sur quelle architecture repose OPC [version "classique"] ?
- la spécification COM/DCOM de Microsoft Distributed Component Objet Model
- COM implémente les connections entre les différents composants logiciels d'une application et forme un "bus" logiciel indépendant du langage de programmation.
- COM n'est intégré nativement que sur machine Windows d'où difficulté d'intégration directe d'un serveur ou d'un client sur une machine embarquée (automate...).
Concrètement, OPC est limité à l'architecture Windows
Un serveur OPC est donc généralement une machine Windows externe reliée à des automates, des E/S déportées, des capteurs "intelligents"...
Une machine peut héberger plusieurs serveurs OPC.
Cours Supervision – Serveur OPC - Pierre Bonnet 12
SERVEURS OPCLa spécification COM
- le modèle COM ou ActiveX est conçu pour permettre à des applications d'accéder à des composants pré-écrits et enregistrés sur une machine Windows. Le composants ActiveX est généralement un fichier de type exe , dll ou ocx . C'est une norme propriétaire (Microsoft) et non ouverte , sa durée de vie est imposée par le propriétaire . Microsoft souhaite actuellement faire disparaître DCOM au profit de .NET
- Tous les composants ActiveX suivent un modèle de programmation unique défini par Microsoft. Les outils de développement usuels (famille Visual Studio) permettent de gérer le modèle de façon transparente pour le programmeur.
- Pour le client (appelant), tous les composants ActiveX sont accessibles par l'intermédiaire de pointeurs d'interface. Si le composants est sur la même machine que l'appelant (composant in-process) , l'appel du client est direct pour le composant.
Cours Supervision – Serveur OPC - Pierre Bonnet 13
SERVEURS OPCLe modèle COM distribué ou DCOM
- Lorsque le composant ActiveX est hors de la machine du client (out-of-process) , l'appel atteint d'abord un objet de type proxy fourni par le modèle COM. Cet appel est reçu par un stub (squelette de classe) sur la machine distante, qui appelle lui-même le composant COM .
Le processus est totalement transparent pour l'utilisateur.
Source: http://pagesperso-orange.fr/visual.basic/mandcom.htm
Attention : l'appel au composant distant nécessite une gestion des droits d'accès sur le client et sur le serveur (voir http://www.opcactivex.com par exemple)
Cours Supervision – Serveur OPC - Pierre Bonnet 14
SERVEURS OPC
Spécifications OPC Common
Trois fonctionnalités de base pour tout serveur OPC:
Enregistrement des serveurs dans la base de registre du système.
Interface IOPC Server List qui permet aux applications clientes de connaître l ’existence des serveurs installés sur une machine (mais pas obligatoirement actifs)
Interface IOPC Shut Down qui permet aux serveurs de signaler à leurs clients qu ’ils s ’arrêtent
Cours Supervision – Serveur OPC - Pierre Bonnet 15
SERVEURS OPC
Spécifications OPC Common
Détails sur l ’enregistrement:
La fondation OPC a défini des identificateurs de catégorie CATID pour chaque catégorie de serveur (OPC DA 1.1, OPC DA 2.0, OPC A&E...). L ’unicité de l ’identificateur alphanumérique est garantie.
Le client se connecte au composant OPCenum.exe qui expose l ’interface IOPCServerList . Le client a connaissance de tous les serveurs OPC disponibles sur la machine (actifs ou non).
Le client dispose des informations nécessaires à la connexion aux serveurs: CLSID, ProgID .
Détails sur la fermeture : le serveur envoie aux clients une chaîne de caractère indiquant la raison de l ’arrêt par la méthode ShutDownRequest
Cours Supervision – Serveur OPC - Pierre Bonnet 16
SERVEURS OPC
Serveur OPC Data Access
Un serveur OPC Data Access a pour fonction de :
Collecter les données issues des périphériques matériels (lecture) ou leurs faire parvenir les mises à jour de données (écriture)Ces opérations sont périodiques (lecture) ou apériodiques (lecture, écriture), en mode synchrone (attente de la réponse/acquittement) ou asynchrone (réponse/acquittement signalée par un évènement)
Assurer l ’intégrité des données (qualité et fraîcheur)
Répondre aux requêtes de clients (fournir les données, écrire vers le matériel...)
Avertir les clients abonnés des changements d ’état des variables par un évènement
Informer le client des problèmes de sécurité (dysfonctionnement logiciel ou matériel)
Cours Supervision – Serveur OPC - Pierre Bonnet 17
Structure de données d ’un serveur OPC Data Access
SERVEURS OPC
Objet OPC Item
Objet interne au serveur, contenant l ’information utile (valeur numérique, état d ’une variable…). Si le serveur physique est un automate, les items correspondent bits et registres
Pour le client, l' Item OPC ne représente pas la valeur de la donnée source mais la référence à cette donnée.
Plusieurs Items peuvent exister pour la même donnée source (méthodes d'accès différentes, redondance...)
Objet OPC Branche
Les Item OPC sont regroupés par branche dans le serveur. Une branche correspond à un spécificité fonctionnelle (type de bus, automate, esclave...)
Une branche peut comprendre des sous-branches
Cours Supervision – Serveur OPC - Pierre Bonnet 18
Structure de données d ’un serveur OPC Data Access (côté serveur)
SERVEURS OPC
Le client peut s'informer de la structure du serveur par une requête du type "Browse"
Cours Supervision – Serveur OPC - Pierre Bonnet 19
Exemple de Structure de données d ’un serveur OPC Data Access (côté serveur)
SERVEURS OPC
Cours Supervision – Serveur OPC - Pierre Bonnet 20
Exemple de structure de serveur OPC Data Access obtenue par "Browse"
SERVEURS OPC
Source: Kassl.de
Cours Supervision – Serveur OPC - Pierre Bonnet 21
Structure de données vu du côté client
SERVEURS OPC
Objet OPC Server
Pour chaque client, le serveur OPC établit un objet de type OPC Server et crée un canal de communication séparé avec le client.
Objet OPC Group
Les transmissions se font sur la base du Groupe.
L ’objet Groupe contient les informations sur lui-même et décrit l ’organisation logique des items côté client.
Le nom de Groupe doit être unique parmi les Groupes du client.
Les Groupes peuvent être renommés ou créés dynamiquement à la demande du client. Leur contenu est modifiable dynamiquement par le client.
Il existe des Groupes public et local (private)
Le regroupement des items a pour objectif de minimiser le nombre d'échanges entre le serveur et le client
Cours Supervision – Serveur OPC - Pierre Bonnet 22
Structure de données d ’un serveur OPC Data Access (côté client)
SERVEURS OPC
Cours Supervision – Serveur OPC - Pierre Bonnet 23
Structure de données d ’un serveur OPC Data Access
SERVEURS OPC
Un item possède des propriétés parmi lesquelles:
- son nom - son type (Simple, Entier, flottant, Booléen, énumération, tableau...)
- sa valeur- sa qualité (bon, mauvais, incertain...)- son unité de mesure, échelle mini, maxi - son horodatage (timestamp) [ heure UTC]
- ses propriétés ( commentaire, droits lecture/écriture, vitesse de rafraîchissement, fuseau horaire...)
L ’interface « Browse » permet au client de connaître les noms et les propriétés des items disponibles sur le serveur.
Chaque client construit son ou ses groupes d'items sur le serveur à l'aide des fonctions spécifiques . Il définit le mode d'accès :- direct (écriture)- cyclique (lecture)- abonnement à un changement dans le groupe (évènement)
Cours Supervision – Serveur OPC - Pierre Bonnet 24
Structure de données d ’un serveur OPC Data Access
SERVEURS OPC
Objet Item OPC (exemple analysé à l'aide du browser Kassl)
Source: kassl.de
Cours Supervision – Serveur OPC - Pierre Bonnet 25
Principales fonctions d' Accès aux données d ’un serveur OPC DA
SERVEURS OPC
Source: Faweb
Cours Supervision – Serveur OPC - Pierre Bonnet 26
Connexion d'un serveur OPC Data Access en VBA
SERVEURS OPC
La connexion est facilitée par la possibilité de rechercher dynamiquement les noms des serveurs .
Set MyServer = New OPCServerServeurs = MyServer.GetOPCServers
"Serveurs" contient la liste des identifiants des serveurs accessibles
Connexion
Set MyServer = New OPCServerMyServer.Connect (ServeurId)
Il faut penser à libérer la mémoire en fin d'utilisation !
Déconnexion
MyServer.DisconnectSet MyServer = Nothing
Cours Supervision – Serveur OPC - Pierre Bonnet 27
Connexion d'un serveur OPC Data Access en VBA
SERVEURS OPC
Ajout d'un groupe de variables/items
Dim MyGroup As OPCGroup
Set MyGroup = MyServer.OPCGroups.Add("Groupe1")
Il est possible d'attribuer des propriétés spécifiques sur un groupe
Attention : Toutes ces fonctions peuvent générer des erreurs, par exemple si la connexion est refusée (erreur sur le nom du serveur) , le nombre maximum de groupes atteints... Il est impératif de prévoir leur gestion.
Sub mon_programme On Error GoTo Gestion_Erreur mes_commandes_source_erreur 'connexion ou déconnexion par ex. ...
Exit Sub
Gestion_Erreur: MsgBox "Erreur!"End sub
Cours Supervision – Serveur OPC - Pierre Bonnet 28
Connexion d'un serveur OPC Data Access en VBA
SERVEURS OPC
Ajout d'item dans un groupe existant
For i=1 to 1000 Item = "Bit" & i 'Le String Item sera étendu par la variable I -> Bit1 à Bit1000 MyGroup.OPCItems.AddItem (Item, ... )Next iChaque appel AddItem génère un changement de tache.
Ajout par paquets d'item dans un groupe
For i=1 to 1000 Items(i)="Bit" & i Next iMyGroup.OPCItems.AddItems (1000, Items, ... )
Les Items seront construits dans un tableau et déposés dans un groupe avec un appel unique de méthode au Serveur OPC .
Cours Supervision – Serveur OPC - Pierre Bonnet 29
Connexion d'un serveur OPC Data Access en VBA
SERVEURS OPC
Lecture item
La méthode de lecture utilisée ici est la lecture simple synchrone (blocage de l'appelant en attente de la réponse)
Ecriture item
Ces opérations peuvent être faites sur un groupe complet avec des opérations asynchrones (performances améliorées)
MyItem.Read OPCDevicevaleur_item = MyItem.Valuequalite_item = MyItem.Qualityhorodatage_item = MyItem.TimeStamp
MyItem.Write (valeur_a_ecrire)
Cours Supervision – Serveur OPC - Pierre Bonnet 30
Accès aux données d ’un serveur OPC Data Access : lecture
SERVEURS OPC
Lecture synchrone : le client est bloqué dans sa tache jusqu'à la fin de traitement de l'écriture par le serveur
Lecture asynchrone : le client peut continuer sa tâche (sur processeur multicore). Il est prévenu de la fin de lecture par le serveur par appel de la procédure évènementielle.
MyGroup.SynchRead()
client
Call
End
serveur
MyGroup.AsyncRead()
MyGroup_AsyncReadComplete()
serveur
Call
End
client
Cours Supervision – Serveur OPC - Pierre Bonnet 31
Accès aux données d ’un serveur OPC Data Access : lecture par abonnement
SERVEURS OPC
Abonnement : le client souscrit à un abonnement pour un groupe d'items auprès du serveur.Le serveur informe le client de tout changement de valeur d'un item par notification de l'événement.
Le client continue sa tâche et se trouve intrrompu à chaque notification.
Cette solution permet d'optimiser la charge du processeur.
Il est possible de "forcer" la lecture par MyGroup.Refresh()
server
Subscribe
Notify
MyGroup.IsSubscribed
MyGroup_DataChange()
MyGroup_DataChange()
client
Notify
Cours Supervision – Serveur OPC - Pierre Bonnet 32
Accès aux données d ’un serveur OPC Data Access : écriture
SERVEURS OPC
Ecriture synchrone : le client est bloqué dans sa tache jusqu'à la fin de traitement de l'écriture par le serveur (ce temps comprend la lecture ou l'écriture physique de la sortie sur le matériel couplé au serveur)
Ecriture asynchrone : le client peut continuer sa tâche (sur processeur multicore). Il est prévenu de la fin de l'écriture par le serveur par appel de la procédure événementielle (gestion des éventuelles erreurs d'écriture, cycle suivant...)
MyGroup.SynchWrite()
client
Call
End
serveur
MyGroup.AsyncWrite()
MyGroup_AsyncWriteComplete()
serveur
Call
End
client
Cours Supervision – Serveur OPC - Pierre Bonnet 33
Couches logicielles d ’un serveur OPC Data Access avec serveur distant
SERVEURS OPC
Cours Supervision – Serveur OPC - Pierre Bonnet 34
Architecture logicielle typique OPC Data Access
SERVEURS OPC
L'interface OPC utilise des pointeurs. C'est pourquoi il est nécessaire d'utiliser un wrapper pour les langages ne disposant pas de l'accès au pointeur d'une variable (ex : VB)
Cours Supervision – Serveur OPC - Pierre Bonnet 35
Relations possibles client/serveur OPC
SERVEURS OPC
Source: Faweb
Cours Supervision – Serveur OPC - Pierre Bonnet 36
Comparaison DDE/OPC
SERVEURS OPC
Dynamic Data Exchange ne tient pas compte des spécificités des environnements industriels
DDE est la propriété de Microsoft qui n'a pas souhaité maintenir cette fonctionnalité depuis de nombreuses années (abandon total sur la plate-forme .net puis sur Win Seven ) au profit de COM . Certains éditeurs (Wonderware) poursuivent la maintenance des liaisons établies sous DDE (FastDDE).