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

Automation Discussion :

collecte des données à travers le serveur OPC


Sujet :

Automation

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 69
    Points
    69
    Par défaut collecte des données à travers le serveur OPC
    slut tous le monde

    je vais concevoir une base des données et dialoguer avec un automate ALLEN BRADLEY à travers un serveur OPC.
    j'ai trouvé sur le forum plusieurs exemples de client OPC mais j'aime avoir les étape et l'outil de développement les plus adéquat .

    svp aidez moi j'aurai une note sur ca aprés quelque semaine
    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 31
    Points
    31
    Par défaut Serveur OPC
    Bonjour,
    Le serveur OPC d'Allen Bradley s'appelle RS LINX.
    Il va te donner les librairies nécessaires pour se connecter aux automates avec n'importe quel client OPC.
    Personnellement, j'utilise Visual Studio pour le développement d'applications.
    Pour les différentes étapes:
    • Connexion de l'automate et du PC en réseau (idéalement par Ethernet)
    • Configuration de Rs Linx
    • Vérification de l'écriture et de la bonne lecture des variables via le client opc intégré
    • Développement de l'applicatif qui fera la liaison entre la BDD et le serveur OPC


    Bon courage

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 69
    Points
    69
    Par défaut serveur opc
    bonjour,

    merci pour votre guidage, mais est ce que le vb.net ou c++ est le meilleur.


    merci

  4. #4
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 104
    Points
    19 104
    Par défaut
    Il n'y a pas de meilleur, prend celui que tu connait le mieux. Tu peux trouver des exemple de client OPC sur le net pour tous les langages possibles. Perso c'est Delphi.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 69
    Points
    69
    Par défaut d'accord
    ok merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 31
    Points
    31
    Par défaut Code de connexion
    Bonjour,
    Suite à nos échanges, voici mon code VB permettant la connexion au serveur OPC RsLinx
    J'ai mis l'ensemble du code, mise à part la classe RapportApplication à supprimer le reste doit être utilisable.
    Les adresses passées en paramètre sont du type [API]N25:1 où API est un nœud OPC déclaré dans RsLinx.
    Quelques fautes d'orthographes dans les commentaires mais le code fonctionne


    Code vb : 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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    Imports System.Net
    Imports System.Configuration
     
     
     
    ''' -----------------------------------------------------------------------------
    ''' Project	 : Client
    ''' Class	 : Opc
    ''' 
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    '''     Classe permettant l'accès au serveur opc distant.
    '''     Nécessite que le serveur opc client soit installé et que l'adresse du serveur opc soit passée soit en paramètre dans le fichier de configuration, soit en paramètre de création de la classe.
    '''     Permet l'ajout des groupes aux serveur et permet d'obtenir l'instance du serveur opc créé.
    ''' </summary>
    ''' <remarks>
    '''     La classe génère un évènement lorsque le serveur opc distant est coupé
    ''' </remarks>
    ''' <history>
    ''' 	[davidc]	22/07/2004	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Public Class OpcRockwell
     
        'Déclaration des variables
        Private adresseIpPcServeurOPC As String
        Private WithEvents svr As RsiOPCAuto.OPCServer
        Private groupes As RsiOPCAuto.OPCGroups
     
        Private logFichierLog As RapportApplication
        Private typeServeur As serveurOpc
        Public Event ServeurClosed(ByVal sender As Object, ByVal e As EventArgs)
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Enumération qui permet de choisir son serveur opc
        ''' </summary>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	29/05/2006	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Enum serveurOpc
            serveurAllenBradley = 1
            serveurAllenBradleyDistant = 2
        End Enum
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Fonction qui renvoie la chaîne de connexion du serveur choisi
        ''' </summary>
        ''' <param name="idServeur">Enumération indiquant le serveur retenu</param>
        ''' <returns></returns>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	29/05/2006	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Private Function getIdentifiantServeur(ByVal idServeur As serveurOpc) As String
            Select Case idServeur
                Case serveurOpc.serveurAllenBradley
                    Return "RSLinx OPC Server"
                Case serveurOpc.serveurAllenBradleyDistant
                    Return "RSLinx Remote OPC Server"
                Case Else
                    Return "RSLinx OPC Server"
            End Select
        End Function
     
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Obtient le fichier de log.
        '''     Si la référence à la classe n'existe pas instanciation
        ''' </summary>
        ''' <value>Retourne un objet de type RapportApplication</value>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	06/08/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Friend ReadOnly Property fichierLog() As RapportApplication
            Get
                If logFichierLog Is Nothing Then
                    logFichierLog = New RapportApplication
                End If
                Return logFichierLog
            End Get
        End Property
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Permet de connecter la classe au serveur opc situé à l'adresse indiquée dans le fichier de configuration.
        ''' </summary>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public Sub Connect()
            Connect(adresseIpPcServeurOPC, typeServeur)
        End Sub
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Permet de se connecter au serveur opc dont l'adresse ip est passée en paramètre. 
        ''' </summary>
        ''' <param name="parAdresseIpServeurOPC"></param>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public Sub Connect(ByVal parAdresseIPServeurOpc As String, ByVal serveurOpc As serveurOpc)
            Try
                svr.Connect(Me.getIdentifiantServeur(serveurOpc), parAdresseIPServeurOpc)
                'Récupération de la collection des groupes
                Try
                    groupes = svr.OPCGroups
                Catch ecast As System.InvalidCastException
                    'Debug.WriteLine("J'ai planté à la récupération des groupes")
                    'Nouvel essai car problème dûs à l'instanciation d'interface
                    groupes = svr.OPCGroups
                End Try
                'Catch eSecusrity As UnauthorizedAccessException
                '    Debug.WriteLine("Le serveur n'est pas connecté, l'application ne pourra pas se connecter aux automates")
            Catch eCast As System.InvalidCastException
                Debug.WriteLine(eCast.ToString)
                fichierLog.AddException(Me, eCast.ToString)
            Catch eCom As System.Runtime.InteropServices.COMException
                Debug.WriteLine(Me.GetType.ToString & " une erreur s'est produite: " & eCom.ToString)
                fichierLog.AddException(Me, eCom.ToString)
            Catch ex As NullReferenceException
                'le serveur n'est pas instancié
                svr = New RsiOPCAuto.OPCServer
                Connect(serveurOpc, parAdresseIPServeurOpc)
                fichierLog.AddException(Me, ex.ToString)
            End Try
        End Sub
     
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Supprime tous les groupes liés au serveur opc puis déconnecte le serveur opc.
        ''' </summary>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public Sub Disconnect()
            Try
                CType(svr.OPCGroups, RsiOPCAuto.OPCGroups).RemoveAll()
            Catch ex As NullReferenceException
            End Try
            Try
                svr.Disconnect()
            Catch e As NullReferenceException
                Debug.WriteLine("Une erreure s'est produite " & e.ToString)
            End Try
        End Sub
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Ajoute un groupe dont le nom est passé en paramètre au serveur opc de la chaîne. 
        ''' </summary>
        ''' <param name="parNomGroupe">Chaîne de caractère représentant le nom du groupe à ajouter</param>
        ''' <returns>
        '''     un objet de type groupe opc 
        ''' </returns>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public Function AddGroup(ByVal parNomGroupe As String) As Object
            Try
                Return CType(groupes, RsiOPCAuto.OPCGroups).Add(parNomGroupe)
                'Return svr.OPCGroups.add(parNomGroupe)
            Catch e As NullReferenceException
                Me.fichierLog.AddException(Me, e.ToString)
                Return Nothing
            End Try
        End Function
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Ajoute un groupe. 
        ''' </summary>
        ''' <returns>
        '''     un objet de type groupe opc 
        ''' </returns>
        ''' <remarks>
        '''     Permet d'ajouter un groupe sans risque de doublons.
        '''     Le serveur opc attribue un nom unique au groupe lors de l'ajout
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	25/11/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        <CLSCompliant(False)> _
        Public Function AddGroup() As RsiOPCAuto.IOPCGroups
            Try
                Return groupes.Add()
            Catch e As NullReferenceException
                Me.fichierLog.AddException(Me, e.ToString)
                Return Nothing
            End Try
        End Function
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Supprime le groupe opc dont le nom est passé en paramètre du serveur.
        ''' </summary>
        ''' <param name="parNomGroupe">Chaîne de caractère représentant le nom du groupe à supprimer</param>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public Sub RemoveGroup(ByVal parNomGroupe As String)
            Try
                groupes.Remove(parNomGroupe)
            Catch ex As NullReferenceException
            Catch eCom As System.Runtime.InteropServices.COMException
                'pas de problème si le groupe n'existe pas il y a des chances qu'il ne soit plus dans le serveur opc
            End Try
        End Sub
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Fonction permettant d'ajouter un tableau d'items au groupe opc représentant l'objet
        ''' </summary>
        ''' <param name="parCheminConnexion">Tableau de chaîne de caractères représentant les adresses automates des items à surveiller</param>
        ''' <param name="parIdentifiant">Tableau d'identifiant représentant les identifiants des items à surveiller</param>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        <CLSCompliant(False)> _
        Public Function AddItem(ByVal GrpOpc As RsiOPCAuto.OPCGroup, ByVal parCheminConnexion() As String, ByVal parIdentifiant() As String) As String(,)
            Dim nbItems As Integer
            'Recherche du nombre d'items
            nbItems = parCheminConnexion.Length
     
            Dim locIdConnexion As Array = Array.CreateInstance(GetType(String), nbItems)
            Dim locClientHandle As Array = Array.CreateInstance(GetType(Int32), nbItems)
            Dim locServerHandle As Array = Array.CreateInstance(GetType(Int32), nbItems)
            Dim locErrors As Array = Array.CreateInstance(GetType(Int32), nbItems)
            Dim i As Int16
            Dim locRequestDataType As Object = Nothing
            Dim locAccessPaths As Object = Nothing
            Dim items As RsiOPCAuto.OPCItems
     
            Dim tableauRetour(,) As String
            ReDim tableauRetour(nbItems, 1)
     
            'Définition des handles clients à passer au serveur
            For i = 0 To nbItems - 1
                locClientHandle(i) = parIdentifiant(i) 'Identifiant * 1000 + hashColIdItems.Count + i
                locIdConnexion(i) = parCheminConnexion(i)
            Next
     
            'Ajouter les items au groupe puis stocker l'identifiant dans la collection en tant que clé
            Try
                Try
                    items = GrpOpc.OPCItems
                Catch castEx As InvalidCastException
                    'Nouvel essai car problème de définition et d'instanciation d'interface
                    items = GrpOpc.OPCItems
                End Try
                'Ajout du tableau d'items
                Call items.AddItems(nbItems - 1, locIdConnexion, locClientHandle, locServerHandle, locErrors, locRequestDataType, locAccessPaths)
     
                'mise en activité du groupe
                GrpOpc.IsActive = True
                GrpOpc.IsSubscribed = True
                Debug.WriteLine(GrpOpc.UpdateRate)
                Debug.WriteLine(GrpOpc.TimeBias)
                'mise en activité du groupe d'items
     
                logFichierLog = New RapportApplication
                Me.logFichierLog.AddText("nombre d'items: " & nbItems - 1)
                Me.logFichierLog.AddText("tailleTableau erreur: " & locErrors.GetLength(0))
     
                For i = 1 To locServerHandle.GetLength(0)
                    Me.logFichierLog.AddText(i & ": server handle: " & locServerHandle(i))
     
                Next
     
                items.SetActive(nbItems - 1, locServerHandle, True, locErrors)
     
                For i = 1 To nbItems - 1
                    tableauRetour(i - 1, 0) = parIdentifiant(i)
                    tableauRetour(i - 1, 1) = locServerHandle(i)
     
                Next
     
                Dim cancelID As Integer
                GrpOpc.AsyncRead(nbItems - 1, locServerHandle, locErrors, 1012, cancelID)
     
                Return tableauRetour
                GrpOpc.AsyncRefresh(RsiOPCAuto.OPCDataSource.OPCCache, 1015, cancelID)
            Catch castEx As InvalidCastException
                Debug.WriteLine(castEx.ToString)
                Me.fichierLog.AddException(Me, castEx.ToString)
                Return Nothing
            Catch nRefExc As NullReferenceException
                Me.fichierLog.AddException(Me, nRefExc.ToString)
                Return Nothing
            End Try
        End Function
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Permet de récupérer un objet item suivant le serverHandle passé en paramètre
        ''' </summary>
        ''' <param name="parServerHandle"></param>
        ''' <returns>Objet opcitem</returns>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	02/06/2006	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        <CLSCompliant(False)> _
        Public Function getItem(ByVal parServerHandle As Integer) As RsiOPCAuto.OPCItem
            Dim i As Integer
            Dim j As Integer
            For i = 1 To groupes.Count
                For j = 1 To groupes.Item(i).OPCItems.Count
                    If groupes.Item(i).OPCItems.Item(j).ServerHandle = parServerHandle Then
                        Return groupes.Item(i).OPCItems.Item(j)
                    End If
                Next
            Next
            Return Nothing
        End Function
     
     
        'Fonction qui retourne l'état du serveur opc
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Propriété qui permet de récupérer l'état du serveur opc (connecté, déconnecté).
        ''' </summary>
        ''' <value></value>
        ''' <remarks>
        '''     Pour le moment les seuls états disponibles sont connectés et déconnectés
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public ReadOnly Property Etat() As String
            Get
                Dim strRetour As String = ""
                'Dim etatPossible As SAOPCAutomation.OPCServerState
                Try
                    Select Case svr.ServerState
                        Case RsiOPCAuto.OPCServerState.OPCRunning
                            strRetour = "Connecté"
                        Case RsiOPCAuto.OPCServerState.OPCDisconnected
                            strRetour = "Déconnecté"
                        Case RsiOPCAuto.OPCServerState.OPCFailed
                            strRetour = "Erreur Fatale"
                        Case RsiOPCAuto.OPCServerState.OPCSuspended
                            strRetour = "Suspendu"
                        Case RsiOPCAuto.OPCServerState.OPCTest
                            strRetour = "En test"
                        Case RsiOPCAuto.OPCServerState.OPCNoconfig
                            strRetour = "Pas de configuration"
                    End Select
                Catch e As NullReferenceException
                    strRetour = e.ToString
                End Try
                Return strRetour
            End Get
        End Property
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Procédure appelée lorsque le serveur opc distant est fermé.
        '''     Permet de prévenir les classes appelantes.
        ''' </summary>
        ''' <param name="Reason"></param>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	22/07/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Private Sub svr_ServerShutDown(ByVal Reason As String)
            Dim evt As Events.OpcEventArgs
     
            evt = New Events.OpcEventArgs(Reason)
            RaiseEvent ServeurClosed(Me, evt)
        End Sub
     
        Protected Overrides Sub Finalize()
            'Dim grp As SAOPCAutomation.OPCGroup
            Try
                'If Not logFichierLog Is Nothing Then
                '    fichierLog.LibereFichier()
                '    logFichierLog = Nothing
                'End If
     
                'Supprime tous les groupes et les items correspondants
                groupes.RemoveAll()
                svr.Disconnect()
                'groupes = Nothing
                'svr = Nothing
            Catch e As NullReferenceException
                'ce n'est pas grave, au pire, on ne peux libérer une ressource qui n'existe pas
            End Try
            MyBase.Finalize()
        End Sub
     
        ''' -----------------------------------------------------------------------------
        ''' <summary>
        '''     Créateur de classe.
        '''     Récupère l'adresse ip du serveur opc contenue dans le fichier de configuration
        '''     Crée une nouvelle instance de l'objet com opc
        '''     Lance la fonction de connexion au serveur
        ''' </summary>
        ''' <remarks>
        '''     En cas d'exception, écrit l'erreur dans le journal de log
        ''' </remarks>
        ''' <history>
        ''' 	[davidc]	06/08/2004	Created
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public Sub New(ByVal parTypeServeur As serveurOpc)
            Try
                typeServeur = parTypeServeur
                'Récupération de l'adresse IP
                adresseIpPcServeurOPC = System.Configuration.ConfigurationManager.AppSettings("adresseIpAutomateAB")
     
                svr = New RsiOPCAuto.OPCServer
                Connect()
            Catch e As System.IO.IOException
                Debug.WriteLine(e.ToString)
                Me.fichierLog.AddException(Me, e.ToString)
            Catch eX As System.Xml.XmlException
                Debug.WriteLine(eX.ToString)
                Me.fichierLog.AddException(Me, eX.ToString)
            Catch eRef As NullReferenceException
                Debug.WriteLine(eRef.ToString)
                Me.fichierLog.AddException(Me, eRef.ToString)
            Catch eC As System.Runtime.InteropServices.COMException
                Debug.WriteLine(eC.ToString)
                Me.fichierLog.AddException(Me, eC.ToString)
                Me.fichierLog.AddText("Une erreur COM s'est produite, essayer de réinstaller le client OPC avec la totalité de ses options")
            End Try
     
        End Sub
     
     
     
        Private Sub svrRockwell_ServerShutDown(ByVal Reason As String) Handles svr.ServerShutDown
            svr_ServerShutDown(Reason)
        End Sub
     
    End Class

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 69
    Points
    69
    Par défaut merci
    merci beaucoup pour ton grand soutien

    mais j'ai de message d'erreur in lr ne connait pas RsiOPCAuto.OPCGroups, RsiOPCAuto.OPCServer... comme étant des types non définit.
    et est ce que cette configuration contienne une interface graphique?
    et comment lire la valeur spécifique d'une sortie ou une entrée ainsi que ecrire on entrée de l'automate?
    dsl mais c'est mon projet de fin d'etude il faut que j'avoir une resultat

    merci

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 31
    Points
    31
    Par défaut
    Bonjour,
    Il faut faire référence à la librairie RsiOPCAuto.dll en ajoutant le composant COM du même nom.
    Ce composant est installé par RsLinx si tu as une version qui contient bien le serveur OPC.
    Par contre je doute que tu puisses lire et écrire Entrées/Sorties directement par l'opc et en plus je le déconseille car tu es tributaire de ton réseau et par conséquent tu ne peux être sûr de la latence de ton système (imagine que tu ne puisse arrêter ton moteur car ton réseau est coupé....)
    Par conséquent si tu souhaites commander des sorties, je te conseillerais plutôt d'écrire des ordres dans l'automate et de vérifier l'état de la liaison en permanence pour effectuer tes ordres de marche (un compteur incrémenté dans ton logiciel et une vérification dans l'automate de l'évolution de ton compteur devrait te permettre de t'assurer une liaison correcte).
    Bon courage pour la suite

  9. #9
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 104
    Points
    19 104
    Par défaut
    Citation Envoyé par sethangel Voir le message
    Ce composant est installé par RsLinx si tu as une version qui contient bien le serveur OPC.
    Je crois me souvenir que la version livrée avec RS500 ou RS5000 ne contient pas le serveur OPC, il faut la version payante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Collecter des données par outlook
    Par MartinFouga dans le forum IHM
    Réponses: 0
    Dernier message: 16/01/2008, 14h25
  2. [Access 2007 - Nouveauté] Collecter des données via Outlook
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 15
    Dernier message: 04/06/2007, 14h31
  3. Collecter des données
    Par mout1234 dans le forum IHM
    Réponses: 9
    Dernier message: 22/02/2007, 19h11
  4. Réponses: 11
    Dernier message: 26/12/2006, 20h05

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