Communication entre un Automate et un PC via visual basic.net
Bonjour, je vous expose mon problème.
Je dois réaliser la communication entre un automate ELAU C600 et un PC afin de pouvoir lire et écrire sur des variables de l'automate en passant par visual basic.net.
J'ai fais pas mal de recherche et ais élaboré un programme, cependant j'ai quelques erreurs qui me bloque et j'ai également besoin d'éclairement sur certaines fonction de mon programme.
Voici mon programme, Mes interrogations, warning et Erreurs sont en commentaire. Je cherche donc a faire une connexion à distance et la seul et unique commande que j'ai trouvé correspond à une connexion en local..
>>>
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
Imports OPCAutomation
Module Module1
Dim ConnectedOPCServer As OPCServer
Dim ConnectedServerGroup As OPCGroups
Dim ConnectedGroup As OPCGroup
Dim OPCItemCollection As OPCItems
Dim giValue1 As OPCItem
Dim ItemCount As Long
Dim OPCItemIDs(10) As Long
Dim ItemServerHandles As Long
Dim ItemServerErrors As Long
Dim ClientHandles As Long
'==================================================================================================================
' Permet d'importer la librairie qui nous permet d'utiliser les fonctions "OPCServer"
' On doit ajouter en référence le librairie annexe qui fait le lien avec OPCAAuto du nom de "Interop.OPCAutomation"
'==================================================================================================================
Sub Main()
Dim ConnectedServerName As String
ConnectedOPCServer = New OPCServer 'Créer un nouvel item Serveur OPC
ConnectedServerName = "CoDeSys.OPC.02" 'Charge le nom du serveur sélectionné pour démarrer l'interface
ConnectedOPCServer.Connect(ConnectedServerName) 'Tentative de connexion avec le serveur ( local seulement dans cet exemple alors que je cherche du distant.. )
ConnectedServerGroup = ConnectedOPCServer.OPCGroups ' Ajout d'un groupe à lOPC serveur
ConnectedServerGroup.DefaultGroupIsActive = True ' Definit l'etat du groupe comme actif
ConnectedGroup = ConnectedServerGroup.Add("Test") ' ici mon groupe n'ai pas crée dans les variables de l'automates
OPCItemCollection = ConnectedGroup.OPCItems
giValue1 = OPCItemCollection.AddItem("Station1.iValue1", 0) ' Une erreur HRESULT E_FAIL a été retournée à partir d'un appel à un composant COM. lorsque je lance la compilation
' ConnectedGroup.UpdateRate = 100 ' Définit le taux de rafraichissement du groupe
' ConnectedGroup.IsSubscribed = True ' without it you won't be subscribed to the server and DataChange events will not fire
End Sub
Public Function ECRITURE_PT_CIMP(ByVal PtId As String, ByVal Value As Object) As Integer
Dim gOPCWriteItem As OPCItem
Dim ItemServerHandles() As Long
Dim ClientHandles(1) As Long
Dim OPCItemIDs(1) As String
Dim Errors() As Long
ClientHandles(1) = 1
PtId = "Station1.iValue1" ' << est-ce que c'est bien ici que je dois écrire le nom de ma variable ou je dois ecrire sur l'automate ?
OPCItemIDs(1) = PtId
OPCItemCollection.AddItems(1, OPCItemIDs, ClientHandles, ItemServerHandles, Errors) ' Warning : variable errors est passé par référence avant qu'une valeur de lui ait été assigné. Une expecption de ref peut ce produire
gOPCWriteItem = OPCItemCollection.GetOPCItem(ItemServerHandles(1))
gOPCWriteItem.Write(5) ' La valeur entrée dans les parenthèses correspond à la valeur donnée à la variable en question
End Function ' warning aucun return , est-ce grave ?
End Module |
Je suis quelque peu perdu si vous pourriez m'aider.. :-) Je suis ouvert à toutes propositions et critiques éventuelles.
Ps: Je suis déjà allé voir sur opcfondation ect..