Vous êtes sur la page 1sur 36

Master Pro ASE SMaRT

« Sytèmes Mobiles Automatisés et Réseaux de Terrain »

SUPERVISION
Serveurs OPC

Cours Supervision – Serveur OPC - Pierre Bonnet 1


Pierre BONNET

Cours Supervision – Serveur OPC - Pierre Bonnet 2


SERVEURS OPC

OPC signifie

Object Linking and Embedding for


Process
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 3


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 4


SERVEURS OPC

Objectifs du standard 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 5


SERVEURS OPC

Structure globale sans OPC

Source: 4CE Industry

Cours Supervision – Serveur OPC - Pierre Bonnet 6


SERVEURS OPC
Sans 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 7


SERVEURS OPC
Avec OPC

Source: 4CE Industry

Cours Supervision – Serveur OPC - Pierre Bonnet 8


SERVEURS OPC
Que comprend la spécification OPC ?

- une spécification commune à tous les serveurs


OPC 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 9


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 10
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 11


SERVEURS OPC
La 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 12


SERVEURS OPC
Le 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 13


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 14


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 15


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 16


SERVEURS OPC
Structure de données d ’un serveur OPC Data Access
 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 17


SERVEURS OPC
Structure de données d ’un serveur OPC Data Access (côté serveur)

Le client peut s'informer de la structure du serveur par une requête du type "Browse"
Cours Supervision – Serveur OPC - Pierre Bonnet 18
SERVEURS OPC
Exemple de Structure de données d ’un serveur OPC Data Access (côté serveur)

Cours Supervision – Serveur OPC - Pierre Bonnet 19


SERVEURS OPC
Exemple de structure de serveur OPC Data Access obtenue par "Browse"

Source: Kassl.de

Cours Supervision – Serveur OPC - Pierre Bonnet 20


SERVEURS OPC
Structure de données vu du côté client
 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 21


SERVEURS OPC
Structure de données d ’un serveur OPC Data Access (côté client)

Cours Supervision – Serveur OPC - Pierre Bonnet 22


SERVEURS OPC
Structure de données d ’un serveur OPC Data Access
 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 23
SERVEURS OPC
Structure de données d ’un serveur OPC Data Access
 Objet Item OPC (exemple analysé à l'aide du browser Kassl)

Source: kassl.de

Cours Supervision – Serveur OPC - Pierre Bonnet 24


SERVEURS OPC
Principales fonctions d' Accès aux données d ’un serveur OPC DA

Source: Faweb

Cours Supervision – Serveur OPC - Pierre Bonnet 25


SERVEURS OPC
Connexion d'un serveur OPC Data Access en VBA
La connexion est facilitée par la possibilité de rechercher dynamiquement les noms des
serveurs .
Set MyServer = New OPCServer
Serveurs = MyServer.GetOPCServers
"Serveurs" contient la liste des identifiants des serveurs accessibles

 Connexion
Set MyServer = New OPCServer
MyServer.Connect (ServeurId)

Il faut penser à libérer la mémoire en fin d'utilisation !

 Déconnexion
MyServer.Disconnect
Set MyServer = Nothing

Cours Supervision – Serveur OPC - Pierre Bonnet 26


SERVEURS OPC
Connexion d'un serveur OPC Data Access en VBA

 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 27


SERVEURS OPC
Connexion d'un serveur OPC Data Access en VBA

 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 i
Chaque 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 i
MyGroup.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 28


SERVEURS OPC
Connexion d'un serveur OPC Data Access en VBA

 Lecture item

MyItem.Read OPCDevice
valeur_item = MyItem.Value
qualite_item = MyItem.Quality
horodatage_item = MyItem.TimeStamp
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

MyItem.Write (valeur_a_ecrire)

Ces opérations peuvent être faites sur un groupe complet avec des opérations
asynchrones (performances améliorées)

Cours Supervision – Serveur OPC - Pierre Bonnet 29


SERVEURS OPC
Accès aux données d ’un serveur OPC Data Access : lecture

client serveur
Lecture synchrone : le client est
Call bloqué dans sa tache jusqu'à la fin
MyGroup.SynchRead() de traitement de l'écriture par le
serveur
End

client serveur
Lecture asynchrone : le client peut
Call continuer sa tâche (sur processeur
MyGroup.AsyncRead()
multicore). Il est prévenu de la fin de
End lecture par le serveur par appel de la
procédure évènementielle.
MyGroup_AsyncReadComplete()

Cours Supervision – Serveur OPC - Pierre Bonnet 30


SERVEURS OPC
Accès aux données d ’un serveur OPC Data Access : lecture par abonnement

client server Abonnement : le client souscrit à un


abonnement pour un groupe d'items
auprès du serveur.
Subscribe
MyGroup.IsSubscribed Le serveur informe le client de tout
changement de valeur d'un item par
Notify notification de l'événement.
MyGroup_DataChange() Le client continue sa tâche et se
Notify trouve intrrompu à chaque
MyGroup_DataChange() notification.

Cette solution permet d'optimiser la


charge du processeur.

Il est possible de "forcer" la lecture


par MyGroup.Refresh()

Cours Supervision – Serveur OPC - Pierre Bonnet 31


SERVEURS OPC
Accès aux données d ’un serveur OPC Data Access : écriture

client serveur
Ecriture synchrone : le client est
Call bloqué dans sa tache jusqu'à la fin
MyGroup.SynchWrite() de traitement de l'écriture par le
serveur (ce temps comprend la
End lecture ou l'écriture physique de la
sortie sur le matériel couplé au
serveur)

client serveur
Ecriture asynchrone : le client peut
MyGroup.AsyncWrite() Call continuer sa tâche (sur processeur
multicore). Il est prévenu de la fin de
End l'écriture par le serveur par appel de
la procédure événementielle (gestion
MyGroup_AsyncWriteComplete() des éventuelles erreurs d'écriture,
cycle suivant...)

Cours Supervision – Serveur OPC - Pierre Bonnet 32


SERVEURS OPC
Couches logicielles d ’un serveur OPC Data Access avec serveur distant

Cours Supervision – Serveur OPC - Pierre Bonnet 33


SERVEURS OPC
Architecture logicielle typique OPC Data Access

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 34


SERVEURS OPC
Relations possibles client/serveur OPC

Source: Faweb

Cours Supervision – Serveur OPC - Pierre Bonnet 35


SERVEURS OPC
Comparaison DDE/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).

Cours Supervision – Serveur OPC - Pierre Bonnet 36

Vous aimerez peut-être aussi