Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DIALOGUER AVEC UN AUTOMATE SCHNEIDER À PARTIR D'UN SERVER OPC


Information sur la source

Catégorie :VB.NET Source .NET ( DotNet ) Classé sous : opc, automate, vbnet2003 Niveau : Débutant Date de création : 19/06/2006 Vu : 11 187

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Bonjour,

Je veux essayer de dialoguer avec un automate Premium à partir de VB.net version 2003 par l'intermédiaire d'un server OPC.
Voici le code que j'ai écrit :

 

Source

  • Private WithEvents Server As Opc.Da.IServer = Nothing
  • Private isSubscribe As Boolean = True
  • Private WithEvents mySubscription As Opc.Da.ISubscription
  • Private WithEvents ReadAsync As Opc.Da.ISubscription
  • Private WithEvents WriteAsync As Opc.Da.ISubscription
  • Dim WithEvents ComServer As Opc.Da.Server
  • Dim m_handle As Integer
  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  • 'Déclaration
  • Dim Status As Opc.Da.ServerStatus
  • 'Dim ComServer As Opc.Da.Server
  • Dim Url As Opc.URL = New Opc.URL("opcda://localhost/Schneider-Aut.OFS/{e7675090-9ff9-11d1-ac46-0060978add48}")
  • 'Connexion sur le serveur de la liste deroulante DA20
  • 'Dim Url As Opc.URL = New Opc.URL(cbxOPCSrvDA_20.SelectedItem.ToString)
  • ComServer = New Opc.Da.Server(New OpcCom.Factory, Url)
  • txtSrvStatus.Text = "essai"
  • Try
  • ComServer.Connect()
  • Server = ComServer
  • 'Recuperation du Status du serveur
  • Status = Server.GetStatus
  • txtSrvStatus.Clear()
  • txtSrvStatus.Text = ("Info Vendeur :" & Status.VendorInfo & "Version Produit :" & Status.ProductVersion & "Etat du serveur :" & Status.ServerState.ToString & "Info Status :" & Status.StatusInfo & "Heure démarrage : " & "le " & Status.StartTime.ToLongDateString & " à " & Status.StartTime.ToLongTimeString & "Heure courante :" & Status.CurrentTime.ToLongTimeString & vbCrLf & "Dernier envoi :" & Status.LastUpdateTime.ToLongTimeString)
  • Catch ex As Exception
  • Throw (ex)
  • End Try
  • End Sub
  • Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
  • Dim item As Opc.Da.Item() = New Opc.Da.Item(0) {}
  • item(0) = New Opc.Da.Item
  • item(0).ItemPath = ""
  • item(0).ItemName = txtItem.Text
  • Dim result As Opc.Da.ItemValueResult()
  • Try
  • result = Server.Read(item)
  • If result Is Nothing Then
  • txtValue.Text = "Erreur de Lecture"
  • TxtQuality.Text = "Erreur de Lecture"
  • Else
  • 'If result(0).ResultID = Opc.ResultID.S_OK Then
  • txtValue.Text = CType(result(0).Value, String)
  • ' TxtQuality.Text = result(0).Quality.ToString
  • ' Else
  • ' txtValue.Text = "Erreur de Lecture"
  • ' TxtQuality.Text = "Erreur de Lecture"
  • 'End If
  • End If
  • Catch ex As Exception
  • MsgBox("" & ex.Message)
  • End Try
  • End Sub
  • Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
  • 'Déclaration des variables
  • Dim item As Opc.Da.ItemValue() = New Opc.Da.ItemValue(0) {}
  • item(0) = New Opc.Da.ItemValue
  • item(0).ItemPath = ""
  • item(0).ItemName = txtItem.Text
  • item(0).Value = System.Convert.ChangeType(Me.txtValue.Text, GetType(Object))
  • Dim result As Opc.IdentifiedResult()
  • Try
  • result = Server.Write(item)
  • 'If result Is Nothing Then
  • txtValue.Text = "Erreur d'écriture"
  • TxtQuality.Text = "Erreur d'écriture"
  • 'Else
  • ' If Not (result(0).ResultID = Opc.ResultID.S_OK) Then
  • ' txtValue.Text = "Erreur d'écriture"
  • ' TxtQuality.Text = "Erreur d'écriture"
  • ' End If
  • 'End If
  • Catch ex As Exception
  • MsgBox("" & ex.Message)
  • End Try
  • End Sub
   Private WithEvents Server As Opc.Da.IServer = Nothing
    Private isSubscribe As Boolean = True
    Private WithEvents mySubscription As Opc.Da.ISubscription
    Private WithEvents ReadAsync As Opc.Da.ISubscription
    Private WithEvents WriteAsync As Opc.Da.ISubscription
    Dim WithEvents ComServer As Opc.Da.Server
    Dim m_handle As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Déclaration
        Dim Status As Opc.Da.ServerStatus
        'Dim ComServer As Opc.Da.Server
        Dim Url As Opc.URL = New Opc.URL("opcda://localhost/Schneider-Aut.OFS/{e7675090-9ff9-11d1-ac46-0060978add48}")

        'Connexion sur le serveur de la liste deroulante DA20

        'Dim Url As Opc.URL = New Opc.URL(cbxOPCSrvDA_20.SelectedItem.ToString)
        ComServer = New Opc.Da.Server(New OpcCom.Factory, Url)
        txtSrvStatus.Text = "essai"

        Try
            ComServer.Connect()
            Server = ComServer
            'Recuperation du Status du serveur
            Status = Server.GetStatus
            txtSrvStatus.Clear()
            txtSrvStatus.Text = ("Info Vendeur :" & Status.VendorInfo & "Version Produit :" & Status.ProductVersion & "Etat du serveur :" & Status.ServerState.ToString & "Info Status :" & Status.StatusInfo & "Heure démarrage : " & "le " & Status.StartTime.ToLongDateString & " à " & Status.StartTime.ToLongTimeString & "Heure courante :" & Status.CurrentTime.ToLongTimeString & vbCrLf & "Dernier envoi :" & Status.LastUpdateTime.ToLongTimeString)

        Catch ex As Exception
            Throw (ex)
        End Try
    End Sub

    Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
        Dim item As Opc.Da.Item() = New Opc.Da.Item(0) {}
        item(0) = New Opc.Da.Item
        item(0).ItemPath = ""
        item(0).ItemName = txtItem.Text

        Dim result As Opc.Da.ItemValueResult()
        Try
            result = Server.Read(item)
            If result Is Nothing Then
                txtValue.Text = "Erreur de Lecture"
                TxtQuality.Text = "Erreur de Lecture"
            Else
                'If result(0).ResultID = Opc.ResultID.S_OK Then
                txtValue.Text = CType(result(0).Value, String)
                ' TxtQuality.Text = result(0).Quality.ToString
                ' Else
                '    txtValue.Text = "Erreur de Lecture"
                '    TxtQuality.Text = "Erreur de Lecture"
                'End If
            End If

        Catch ex As Exception
            MsgBox("" & ex.Message)
        End Try
    End Sub


    Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
        'Déclaration des variables
        Dim item As Opc.Da.ItemValue() = New Opc.Da.ItemValue(0) {}
        item(0) = New Opc.Da.ItemValue
        item(0).ItemPath = ""
        item(0).ItemName = txtItem.Text
        item(0).Value = System.Convert.ChangeType(Me.txtValue.Text, GetType(Object))

        Dim result As Opc.IdentifiedResult()
        Try
            result = Server.Write(item)
            'If result Is Nothing Then
            txtValue.Text = "Erreur d'écriture"
            TxtQuality.Text = "Erreur d'écriture"
            'Else
            '    If Not (result(0).ResultID = Opc.ResultID.S_OK) Then
            '        txtValue.Text = "Erreur d'écriture"
            '        TxtQuality.Text = "Erreur d'écriture"
            '    End If
            'End If
        Catch ex As Exception
            MsgBox("" & ex.Message)
        End Try
    End Sub

Conclusion

J'arrive à lire la valeur d'un mot dans l'automate par contre quand j'essai de modifier la valeur du mot l'erreur E-Fail
IOPCSyncIO.Write s'affiche.
Merci pour votre aide
 

Commentaires et avis

signaler à un administrateur
Commentaire de JACKY007 le 20/06/2006 08:59:36

Des codes de ce type (et qui fonctionne) existe déjà dans les codes sources (notamment en VB6).
Des bibliothèques gratuites (avec exemples...) permettent de se connecter via OPC à toute sorte d'Automates (ABB, Siemens ou comme ici Schneider). Donc pas la peine de ré-inventer la roue !

signaler à un administrateur
Commentaire de ludolechinois le 11/06/2007 10:35:52

Bonjour Jacky007,
Je suis interesse par les bibliotheques gratuite avec exemple. Peux tu me donner plus d'information et ou est ce que je peux les telecharger

signaler à un administrateur
Commentaire de oliz3 le 27/06/2007 14:52:16

Bonjour,
vous pouvez demander de l'aide sur la programmation des serveurs Schneider directement chez le fabricant au 0825012999
En plus si vous etes abonnés vous pourrez telecharger et tester le serveur OFS V3.31 compatible .NET.
Salutations


signaler à un administrateur
Commentaire de ahmed29vb6 le 28/11/2008 16:11:35

pouvez vous poster lez projet en entier
pour voir aussi l interface pour pouvoir faire l essai
merci

signaler à un administrateur
Commentaire de oliz3 le 01/12/2008 11:10:13

Bonjour

appel le fabricant du SErveur OFS (OPC de Schneider) ils pourront t'aider.
sinon OPCfoundation.org
@+

Schneider electric Chorus : 0825 012 999

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

dialogue OPC Automate [ par renato56 ] bonjourJe travaille en ce moment sur un dialogue OPC automate dont voici la configuration : PC -->TSXCT serveur OPC distant [ par je2fb ] bonjour,Je developpe actuellement une application Vb.Net qui doit se connecter a un serveur OPC qui est sur une autre machine. Mon serveur est celui d acces données automate twido [ par wasso3 ] Bonjour, Je stock des valeurs dans des mots de mon automate twido.J'aimerai pouvoir lire ces mots et les stocker dans un fichier.Comment faire? OPC [ par mbkmavie ] salut..- je suis a la recherche de la doc en francais sur le systeme OPC- est ce que il n ya pas un logiciel de simulation pour l'OPCMerci serveur OPC [ par mbkmavie ] salut..- comment faire pour lire une base de donnée access (mdb) sur un serveur OPC (matrikon simulateur)- Programmer en vb6 cette base de donnéeMerci Appel de fonction unique? [ par adirand ] Bonjour à tous,Je suis en train de developper une application VB6 communiquant avec un automate en protocol TCP (utilisation de Winsock)Une fois la co mise en place d'une interface opc eg. carte Applicom PCU2000ETH [ par absao ] SOS Dans le cadre de mon stage, je dois dévéloper une apllication qui permet la supervision de matériel de terrain industriel. j'ai réseau industriel additem pour un vlient OPC en vb.net [ par lallia ] Bonjour,je désire utiliser le additems pour ajouter un tableau  d'items en VB.net ,mais il me donne une erreur  de cast ,je ne sais pas tres bien ce q connexion entre des PLC et un opc server [ par ISIcien ] je dispose de trois PLC dont chacun est connecté à un modem. A travers une ligne téléphonique on se connecte à un OPC server (SNPX) qui a pour role de automate omron [ par odinduvaldecie ] j ai besoin d aide pour la programmation et le cablage de cette automate, je sais pas comment faire.merci si vous pouvez m aider je vous donne mon m


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.