Client opc

Résolu
ketsiajulie Messages postés 3 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 3 août 2011 - 29 juil. 2011 à 14:04
ketsiajulie Messages postés 3 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 3 août 2011 - 1 août 2011 à 15:54
bONJOUR A TOUS

j'ai pris quelques codes sur le site et je l'ai adapter a ma situation, mais impossible de créer une liaison entre mon client opc et mon serveur.

Aidez moi s'il vous plait. voici le code
'-----------------------------------------------------------------------------------------
' Configuration de la communication avec Server OPC
' -----------------------------------------------------------------------------------------
Option Explicit
Dim WithEvents OpcFactoryServer As OPCServer 'Interface OPC Automation2 avec Notification
Dim ListOfsGroups As OPCGroups 'Objet pour une liste de groupes
Dim WithEvents Group1 As OPCGroup 'Objet pour un Groupe avec Notification
Dim PremierCollectionItems As OPCItems 'Objet pour une Collection d'Items
Dim Item1 As OPCItem 'Objet pour un Item
Dim automate0_cgms As OPCItem 'Objet pour un Item
Dim ItemName1() As String 'Tableau de Définition des items
Dim HandleClient1() As Long 'Tableau de pointeurs des items Client
Dim HandleServer1() As Long 'Tableau de pointeurs des items Serveur
Dim Erreur1() As Long 'Tableau de codes d'erreur rendus par le Serveur
Dim FinCreation As Boolean 'Flag de signalement de la fin de création

Const ProgID = "Schneider-Aut.OFS" 'Type de Serveur OPC
Dim MONPC As String 'Nom du PC Serveur

' ---------------------------------------------------------------------------------------------
' LANCEMENT DE L'APPLICATION
' ---------------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim NbItem1 As Single
Dim Reponse As Integer

NbItem1 = 10

'Redimentionnement des tableaux en fonction du nombre d'item
ReDim ItemName1(NbItem1) As String
ReDim HandleClient1(NbItem1) As Long
ReDim HandleServer1(NbItem1) As Long
ReDim Erreur1(NbItem1) As Long

'Création des Groupes et items
If Not FinCreation Then
'Initialisation d'un Serveur OPC Automation 2.01
Set OpcFactoryServer = New OPCServer 'Connexion au Serveur OFS
On Error GoTo Label1 ' Si une erreur aller au label 1
OpcFactoryServer.Connect ProgID
OpcFactoryServer.ClientName = "Stage OFS" 'Spécifie le nom du Client OPC
Set ListOfsGroups = OpcFactoryServer.OPCGroups 'Crée une instance de ce Client

'Définit les paramètres par défaut du Groupe
ListOfsGroups.DefaultGroupIsActive = False
ListOfsGroups.DefaultGroupUpdateRate = 500 'ms
ListOfsGroups.DefaultGroupDeadband = 1

'Ajout des groupes dans le Serveur
Set Group1 = ListOfsGroups.Add("Group1")

'Crée des collections d'Items
Set PremierCollectionItems = Group1.OPCItems

'Définit les item en respectant la syntaxe OPC et le Pointeur coté Client (pompe)

ItemName1(1) = "nomItems"
ItemName1(2) = "nomItems"
ItemName1(3) = "nomItems"
ItemName1(4) = "nomItems"
ItemName1(5) = "nomItems"
ItemName1(6) = "nomItems"
ItemName1(7) = "nomItems"
ItemName1(8) = "nomItems"
ItemName1(9) = "nomItems"
ItemName1(10) = "nomItems"
HandleClient1(1) = 1


End If

'Activation de la collection d'items
PremierCollectionItems.DefaultIsActive = True

'Ajoute les items au Groupe et récupère le pointeur coté Serveur et le code Erreur
PremierCollectionItems.AddItems NbItem1, ItemName1, HandleClient1, HandleServer1, Erreur1
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(1))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(2))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(3))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(4))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(5))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(6))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(7))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(8))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(9))
Set Item1 = PremierCollectionItems.GetOPCItem(HandleServer1(10))


'Activation du Groupe (lecture), validation de la notification, mise à 1 du Flag de Création
Group1.IsActive = True
Group1.IsSubscribed = True

FinCreation = True

Exit Sub

Label1:
'Reponse = MsgBox("Erreur dans le nom du Poste Distant !", vbCritical, "Attention !")
Call MsgBox(Err.Description, vbOKOnly)
Resume Next
End Sub

Private Sub CommandButton2_Click()
If Not (OpcFactoryServer Is Nothing) Then
'Supprimer tous les groupes OPC
If Not (ListOfsGroups Is Nothing) Then
Group1.IsSubscribed = True
ListOfsGroups.RemoveAll
Set ListOfsGroups = Nothing
End If
'Deconnecter le Serveur
OpcFactoryServer.Disconnect
Set OpcFactoryServer = Nothing
FinCreation = False
Else
'Vider les groupes, vider le Serveur
Set ListOfsGroups = Nothing
Set OpcFactoryServer = Nothing
End If
End Sub

Private Sub Group1_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)

Dim i As Variant
'Tester la qualité de l'item
i = 1
While i <= 1
If Qualities(i) = 192 Then
'Récupérer la valeur
Range("A2").Value = ItemName1(1)
Range("A3").Value = ItemName1(2)

End If

Wend
End Sub

1 réponse

ketsiajulie Messages postés 3 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 3 août 2011
1 août 2011 à 15:54
aidez moi s'il vous plait!!
3
Rejoignez-nous