IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Communication entre un Automate et un PC via visual basic.net


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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..

  2. #2
    Membre chevronné Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Par défaut
    Citation Envoyé par clemoz Voir le message
    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
    .
    Pour le warning sur le End Function --> tu dois retourner un entier et tu ne l'as pas fait, si tu ne veux rien retourner fais un Sub.

    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
    Tu dois initialiser ta variable avant de la passer par référence.

Discussions similaires

  1. Réponses: 23
    Dernier message: 17/05/2014, 11h08
  2. La communication entre openerp et une interface web via xml-rpc
    Par kaoutar_kawtar dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 28/04/2014, 11h57
  3. Réponses: 0
    Dernier message: 17/05/2010, 00h14
  4. Réponses: 5
    Dernier message: 11/12/2009, 17h25
  5. probleme communication entre getUrl flash et page html via ajax
    Par sooprano dans le forum Intégration
    Réponses: 0
    Dernier message: 08/07/2009, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo