serveurs opc

Transcription

serveurs opc
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
MyGroup.SynchRead()
serveur
Lecture synchrone : le client est
bloqué dans sa tache jusqu'à la fin
de traitement de l'écriture par le
serveur
Call
End
client
serveur
Call
MyGroup.AsyncRead()
End
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_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
Subscribe
MyGroup.IsSubscribed
Notify
MyGroup_DataChange()
Notify
MyGroup_DataChange()
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()
Cours Supervision – Serveur OPC - Pierre Bonnet
31
SERVEURS OPC
Accès aux données d ’un serveur OPC Data Access : écriture
client
MyGroup.SynchWrite()
serveur
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)
Call
End
client
serveur
Call
MyGroup.AsyncWrite()
End
MyGroup_AsyncWriteComplete()
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...)
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