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