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

Documents pareils