Automate et vb

Résolu
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011 - 28 mai 2008 à 15:18
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011 - 6 juin 2008 à 10:27
AU SECOURS!!
Je suis en alternance et ne connait rien sur vb.J'aurai besoin de récupérer des données automates (shneider) via un serveur OPC;et de les mettres dans des textbox.Puis ensuite creer un tableau sur cette fenetre VB pour y mettre des données automates.Javascript:Insert_Emoticon('/imgs2/smile_shy.gif');$
Mais tout sa c'est du charabia pour moi..Alors si quelqu'un a la bonté d'âme de me répondre,je serais ravi de le remercier..

11 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
28 mai 2008 à 16:20
Salut,

   1) c'est quoi ton automate ?

   2) pour récupérer des données via un serveur OPC en vb.net il te faut un client OPC
      voilà celui que j'utilise : http://www.kineticart.co.uk/KineticaRTOPC.asp

   3) ensuite il faut paramétrer ton serveur OPC, créer un alias, définir le protocole de communication entre ton serveur OPC (ordinateur) et l'automate (Unitelway, modbus serial, modbus IP....), indiquer à ton serveur OPC la liste des variables que tu as récupérer.

   4) Faire du code VB.net pour communiquer avec ton sereur OPC et être client.

@+
LIM
3
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011
29 mai 2008 à 10:14
L'automate est un tsx3710.Et j'ai déjà une licence opc.Le client ofs est bien configuré.il ne me reste plus qu'à développer le programme en vb.J'ai commencé,en faisant Form.vb [design](avec les cases et le texte).Et donc maintenant,je cherche a récupéré toutes les données automates et les mettre dans ces cases.

Merci.
@+
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
29 mai 2008 à 10:27
Salut,

   Ok, donc maintenant il faut que tu développes un client OPC.

   Quelle est la version que tu possèdes de OFS ?
   Si c'est la version 3.3, Schneider à inclus la librairie OPC .Net, donc avec çà tu devrais pouvoir y arriver. Personnelement je ne l'ai jamais utilisé.

   Moi je n'ais pas cette librairie (j'ai OFS V2.5) donc j'en ai achjeté une autre, http://www.kineticart.co.uk/KineticaRTOPC.asp, la licence coute 20€. Et j'utilise cette librairie pour me connecter à mon serveur OPC.

@+
LIM
0
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011
29 mai 2008 à 11:23
J'ai bien la version 3.3 de OFS.Par contre je vois pas ce que je dois faire.
Merci d'avoir répondu aussi vite.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
29 mai 2008 à 11:39
Re

   1) il faut ajouter les références à l'API.net, cette API va te permettre d'incorporer à ton projet des DLL qui te permettront d'utiliser des fonctions pour  : te connecter à ton serveur, écrire une variable....
   Pour ajouter les références : Projet | Ajouter Référence | Parcourir  |  il faut aller chercher les dll dans C:\Program Files\Schneider Electric\OFS\OPC Foundation Net API (si c'est là que tu as installé le serveur)
   Tu trouveras aussi dans ce répertoire le fichier d'aide pour utiliser l'API

   2) il faut ensuite créer les objets nécessaire pour utiliser l'API
      un objet OPC.Serveur, un objet OPC.Item (ici ceux sont des exemples, je ne connait pas la syntaxe)

   3) Ensuite pour te connecter à ton serveur OPC il te faut lui donner quel serveur : Schneider-Aut.OFS
      Il faut ajouter un Groupe, ajouter les items (tes variables), se connecter au serveur

   4) Après il faut lire les varialbes avec par exemple : Item.Read()

   Comme je ne connais pas la syntaxe de l'API jene peux pas te donner tout ce que tu dois taper comme code, je vais essayer de voir si j'ai le temps de regarder la doc de l'API. 

   Une question : est-ce que tu sais comment marche un serveur OPC et ce que c'est ou pas ?

      

   

@+
LIM
0
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011
29 mai 2008 à 11:54
A vrai dire je vois à peu prés le fonctionnement.Je sais creer un groupe dans un client et y ajouter des items.et sa a l'air de fonctionner puisque quand je clic sur les item du client la valeur est la bonne.J'ai également ajouter les dll comme tu me l'a expliqué.Maintenant,si j'ai bien compris,il n'y a plus que du code à écrire?J'ai trouvé un morceau de code sur le net mas je ne sais ou l'implanter.
C'est super sympa de m'aider.Merci beaucoup.

Voilà ce que j'ai trouvé en cherchant sur le net:
' -----------------------------------------------------------------------------------------
' 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 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 NomDuPoste                    As String     'Nom du PC Serveur
 
 
' ---------------------------------------------------------------------------------------------
'                       LANCEMENT DE L'APPLICATION
' ---------------------------------------------------------------------------------------------
Public Sub Start() ' Bouton start
 
    Dim NbItem1 As Single
    Dim Reponse As Integer
        
    NbItem1 = 1
    
    '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)
        
'Vous devez créer un fichier *.csv dans lequel vous définissez les noms et adresses de l'automate.
'Vous l'ajoutez ensuite avec le configurateur OFS.
'Dans le code VBA, vous y accédez avec le nom du fichier (NomAlias) et le nom associé à l'adresse automate (NomAdresse).


        ItemName1(1) = "NomAlias" & "!" & "NomAdresse" 
        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))
    
    '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
 
' ---------------------------------------------------------------------------------------------
'                       ARRET DE L'APPLICATION
' ---------------------------------------------------------------------------------------------
 
Public Sub Arret()  ' Bouton stop
    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
 
' ---------------------------------------------------------------------------------------------
'                   RECUPERATION DES DONNEES DU GROUPE 1
' ---------------------------------------------------------------------------------------------
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 ind As Long
    'Tester la qualité de l'item
    ind = 1
    While ind <= NumItems
        If Qualities(ind) = 192 Then
            'Récupérer la valeur
            Sheets("essai").Cells(1, 1) = ItemValues(ind)
        Else
            Sheets("essai").Cells(1, 1) = " ERREUR !"
        End If
        ind = ind + 1
    Wend
    
End Sub
 
 
' ---------------------------------------------------------------------------------------------
'                       ECRITURE
' ---------------------------------------------------------------------------------------------
Public Sub ecrire()
    Item1.Write (10)
End Sub
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
29 mai 2008 à 12:08
Re

   Le problème de ce code est qu'ilne marche pas avec VB 2005 il marchait avec le VB2002,
   
   J'ai trouvé çà:
'Objet OPC.Factory
Dim
OPCFact AsNew OpcCom.Factory()
'URL de l'OPC (recopie celui que te donne l'exemple OPC .Net Sample Data Access fourni avec OFS3.3
Dim OPCUrl AsNew Opc.URL("opcda://localhost/Schneider-Aut.OFS/{e7675090-9ff9-11d1-ac46-0060978add48}")
'Creation du client
Dim Opc AsNew Opc.Server(OPCFact, OPCUrl)
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Try
'Connection au serveur
Opc.Connect()
Catch ex As Exception
MsgBox(ex.ToString)
EndTry
EndSub

Ce code fais que jeme connecte au serveur OFS par contre il manque deux référence qui se touve dans le réperoire de l'exemple OPC .net Sample Data Access. Ces deux références il faut les rajouter.

Après je ne sais pas comment ajouter le groupe et les items à mon client, la je sèche

@+
LIM
0
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011
29 mai 2008 à 12:40
ok ba merci quand meme
si jamai j'avance je te tiens au courant..
bonne continuation
@+
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
29 mai 2008 à 14:31
Bon courage, si je peux chercher un peu plus je te ferais signe.

@+
LIM
0
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011
5 juin 2008 à 15:23
Des étudiants de Crown
0
crownstud Messages postés 16 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 29 juin 2011
6 juin 2008 à 10:27
Salut LIM.
J'ai réussi à trouver un programme qui se connecte et récupère des données automate.
Mais je vois pas ce que je dois prendre de ce programme pour récupéré les données.
Sur mon programme à moi j'arrive à me connecter (grace a toi).
Je peux t'envoyer tout le programme si sa t'interesse.
Il fait 27 ou 28 pages donc je te donne mon adresse msn.
Si tu peux m'aider...
D'avance merci.                                    [mailto:billybeg@hotmail.fr billybeg@hotmail.fr]
0
Rejoignez-nous