Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Automation
Automation Forum d'entraide sur l'automatisme, la robotique et l'informatique industrielle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 19/02/2010, 10h34   #1
Membre à l'essai
 
Inscription : mars 2008
Messages : 94
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 94
Points : 22
Points : 22
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
fishingman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 14h01   #2
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : juin 2007
Messages : 24
Points : 28
Points : 28
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

Dernière modification par sethangel ; 19/02/2010 à 14h05. Motif: Ajout des étapes
sethangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 19h50   #3
Membre à l'essai
 
Inscription : mars 2008
Messages : 94
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 94
Points : 22
Points : 22
Par défaut serveur opc

bonjour,

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


merci
fishingman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 17h47   #4
Responsable outils internes
 
Avatar de Nono40
 
Homme Bruno Guérangé
Ingénieur développement logiciels
Inscription : mai 2002
Messages : 7 605
Détails du profil
Informations personnelles :
Nom : Homme Bruno Guérangé
Âge : 44
Localisation : France, Loir et Cher (Centre)

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

Informations forums :
Inscription : mai 2002
Messages : 7 605
Points : 11 267
Points : 11 267
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.
__________________
Delphi :
La F.A.Q. , 877 réponses à vos questions !
264 sources à consulter/télécharger !
Nono40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2010, 11h21   #5
Membre à l'essai
 
Inscription : mars 2008
Messages : 94
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 94
Points : 22
Points : 22
Par défaut d'accord

ok merci
fishingman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2010, 08h23   #6
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : juin 2007
Messages : 24
Points : 28
Points : 28
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 :
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

Dernière modification par bbil ; 22/02/2010 à 09h32.
sethangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2010, 20h08   #7
Membre à l'essai
 
Inscription : mars 2008
Messages : 94
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 94
Points : 22
Points : 22
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
fishingman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 08h09   #8
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : juin 2007
Messages : 24
Points : 28
Points : 28
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
sethangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2010, 22h21   #9
Responsable outils internes
 
Avatar de Nono40
 
Homme Bruno Guérangé
Ingénieur développement logiciels
Inscription : mai 2002
Messages : 7 605
Détails du profil
Informations personnelles :
Nom : Homme Bruno Guérangé
Âge : 44
Localisation : France, Loir et Cher (Centre)

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

Informations forums :
Inscription : mai 2002
Messages : 7 605
Points : 11 267
Points : 11 267
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.
__________________
Delphi :
La F.A.Q. , 877 réponses à vos questions !
264 sources à consulter/télécharger !
Nono40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 03h49.


 
 
 
 
Partenaires

Hébergement Web