TP liaison OPC
Transcription
TP liaison OPC
4 Liaison OPC MASTER Pro SII 2009-2010 TP Programmation VBA Exercice 7: Connexion au serveur OPC Kepware établir le dialogue avec la carte Modbus au travers d'un serveur OPC (Kepware). Les éléments du dialogue seront visualisés par des contrôles adaptés au monde industriel (bouton pour actionner les sorties, voyants pour signaler les valeurs des entrées, graphique pour les valeurs des registres de comptage). On suppose que la configuration du serveur OPC a été faite préalablement. Cahier des charges: Création de l'application On rappelle qu'un programme VBA doit utiliser le "wrapper" OPCDAAuto pour accéder au serveur OPC (classe permettant un accès sans pointeur à l'interface du serveur). Ouvrir un nouveau classeur Excel, puis le Visual Studio VBA. Associer au projet le wrapper pour disposer des outils du wrapper OPCDAAuto. Explorer les classes disponibles dont la hiérarchie est la suivante: OPC Server Object OPC Groups Collection --> OPC Group Object(s) OPC Items Collection --> OPC Item Object(s) Note : une collection est un ensemble d'objets. Les OPC Item Object(s) sont les variables de la carte Modbus à lire ou écrire. On utilisera l'Option Explicit pour l'application, afin de limiter les erreurs sur les noms des objets ou variables utilisées. Connexion au serveur OPC Créer un nouvel objet du type OPCserver par set MyServeur = New OPCserver puis se connecter au serveur Kepware (nom exact : "KEPware.KEPServerEx.V4") par la méthode connect Déconnexion du serveur MyServer.Disconnect Set MyServer = Nothing suppression de l'objet Création d'un Groupe d'Items La méthode exposée propose de créer directement un Groupe, sans attribuer de propriétés spécifiques à l'ensemble des Groupes du serveur (collection). Les propriétés seront fixées pour chacun des groupes créés. Set MyGroup1 = MyServer.OPCGroups.Add("MonGroupe1") Attribuer des propriétés au groupe: bande morte et rafraîchissement MyGroup1.DeadBand = 0 valeur exprimée en % de la pleine échelle MyGroup1.UpdateRate = 1000 rafraîchissement exprimé en ms Ces notions sont utiles pour une application évoluée en mode asynchrone. USTL – Master SII. – 2009-2010 Liaison OPC 5 Après usage d'un groupe, il est nécessaire de le détruire (sinon, impossibilité de le recréer avec le même nom pour le même client) MyServer.OPCGroups.RemoveAll Set MyGroup1 = Nothing suppression de l'objet Ajouter les Items un par un (méthode plus simple que la création d'une collection d'Items): Set MyItem1 = MyGroup1.OPCItems.AddItem("nom_Item1", handle1) Le nom de l'Item est celui défini dans le serveur (dépend de la configuration branches/sousbranche) et des vocabulaires utilisés. Le handle est un n° attribué à l'Item, utilisable pour certaines fonctions. Lecture synchrone d'un Item La méthode proposée est la lecture simple d'un Item en mode synchrone ( le client est bloqué pendant la requête au serveur jusqu'à l'obtention du résultat - peu performant!). MyItem1.Read OPCDataSource La source est soit le cache du serveur OPCCache soit la carte elle-même OPCDevice . Dans ce deuxième cas, l'accès force la relecture physique, indépendamment du paramétrage du serveur. L'accès aux propriétés de l'objet Item est direct pour la valeur (MyItem1.Value), l'horodatage (TimeStamp) ou la qualité (Quality) La lecture asynchrone nécessite la création d'une collection d'Items (voir documentation OPC) Ecriture synchrone d'un Item La méthode proposée est l'écriture simple d'un Item en mode synchrone. MyItem1.Write (value) USTL – Master SII. – 2009-2010