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

VB.NET Discussion :

[libnodave] aide sur une librairie


Sujet :

VB.NET

  1. #1
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut [libnodave] aide sur une librairie
    Bonjour,

    Je vient de trouver la librairie Libnodave, qui va me permettre de communiquer avec mon automate, seulement je n'arrive pas à m'en servir ...

    comment l'importer?
    comment déclarer ma connexion?

    *bref je ne m'en sort pas ...*

    J'essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Imports libnodave
     
     
    Public Class Form1
     
        Dim Test_lib_connect As libnodave
     
     
        Private Sub btConnexion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConnexion.Click
     
     
        End Sub
    End Class
    mais aprés je vois pas ...

  2. #2
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Après avoir mis la main sur une source Portugaise *aie la langue que je connais pas du tout*
    J'ai fini par développer un module devrait communiquer avec mon automate
    (pas encore testé)

    Code : 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
    ' IMPORTANT -> Ne pas oublier d'inclure dans les références -> libnodave.net.dll de Libnodave
     
    ' Module sur les paramètres de la communication avec le libraire Libnodave
    ' Com S7-200 via porta Série
    ' Com S7-200 via ethernet CP243
     
    Module mdlLibnodave
     
     
     
        ' Deux types de communication possible
        Enum Communication
            Serie
            Ethernet
        End Enum
     
     
        Private Sub Comms()
            Dim TypeComm As Communication
     
            Dim localMPI As Integer = 0 'Configuration des adresses PPI / MPI du PC (normalement à 0)
            Dim plcMPI As Integer = 2 ' Configuration des adresses PPI / MPI de l'automate (normalement à 2)
            Dim IP_Adress As String = "192.168.1.30" ' Configuration de l'adresse IP de la carte CP243
     
            Dim fds As libnodave.daveOSserialType
            Dim di As libnodave.daveInterface
            Dim dc As libnodave.daveConnection
            Dim res As Integer
            Dim buf(1000) As Byte
            Dim inputsRes As Integer
            Dim InputBuffer(1000) As Byte ' Buffer pour lire / écrire des entrées
            Dim Inputs(6 * 8) As Integer  ' Entrées de l'automate -> 6 octets IB0 .. IB5
            Dim outputsRes As Integer
            Dim OutputBuffer(1000) As Byte ' Buffer pour lire / écrire les sorties
            Dim Outputs(6 * 8) As Integer  ' Sorties de l'automate -> 6 octets QB0 .. QB5
            Dim memoryRes As Integer
            Dim MemoryBuffer(1000) As Byte ' Buffer pour lire / écrire des mémoires M
            Dim Memory(15 * 8) As Integer ' Memoire M de l'automate -> 15 octets MB0 .. MB14
            Dim XMTBuffer(100) As Byte ' Buffer de données transmises à l'automate
     
     
            If TypeComm = Communication.Serie Then
                ' Ouverture du port COM en mode lecture
                fds.rfd = libnodave.setPort("com1", "19200", AscW("E")) ' Port=COM1, BaudRate=19200, Parité= Pair
            ElseIf TypeComm = Communication.Ethernet Then
                ' Ouverture du Socket en mode lecture
                fds.rfd = libnodave.openSocket(102, IP_Adress)
            Else
                ' génération d'une erreur
                fds.rfd = -10000
            End If
     
            ' Ouverture de la communication en mode écriture
            fds.wfd = fds.rfd
     
            'S'il n'y a pas d'erreur sur l'ouverture du port de communication
            If fds.rfd > 0 Then
                ' Création d'une nouvelle interface
                If TypeComm = Communication.Serie Then
                    ' daveProtoMPI3 '  MPI pour S7 300/400, Step 7 Version
                    ' vitesse fixé au hasard
                    di = New libnodave.daveInterface(fds, "My Interface 1", localMPI, libnodave.daveProtoMPI3, libnodave.daveSpeed500k) ' Importante, caso não estejamos a usar PPI, devemos alterar o daveProtoPPI, e caso o baudrate seja diferente, também devemos alterar
                ElseIf TypeComm = Communication.Ethernet Then
                    ' 
                    di = New libnodave.daveInterface(fds, "IF1", localMPI, libnodave.daveProtoISOTCP243, libnodave.daveSpeed187k)
                End If
                di.setTimeout(100000)  ' S'il y a trop d'erreur de reception augemetez la valeur
                res = di.initAdapter ' Début de l'adaptation
     
                If res = 0 Then
                    ' Si l'adaptation c'est bien passé
                    dc = New libnodave.daveConnection(di, plcMPI, 0, 2)  ' créer une nouvelle connexion, Note: le support MPI et l'emplacement ne sont pas importants
                    res = dc.connectPLC() ' On appel l'automate
                    If res = 0 Then
                        ' Si l'appel c'est bien passé
                        inputsRes = dc.readBytes(libnodave.daveInputs, 0, 0, 6, InputBuffer) ' Lecture des entrées
                        outputsRes = dc.readBytes(libnodave.daveOutputs, 0, 0, 6, OutputBuffer) ' Lecture des sorties
                        memoryRes = dc.readBytes(libnodave.daveFlags, 0, 0, 16, MemoryBuffer) ' Lecture des mémoires
                        ' A chaque lecture on prend du temps/performances
                        ' Il est préférable de lire un grand nombre de données et de les utiliser quand on en a besoin 
     
                        If inputsRes = 0 And outputsRes = 0 And memoryRes = 0 Then
                            ' Si la lecture c'est bien passée
                            Dim h As Integer = 0
                            ' Dans cet exemple, nous avons reçu octets, mais nous voulons bits, il est nécessaire de convertir
                            For i As Integer = 0 To 5
                                For j As Integer = i * 8 To (i * 8 + 7)
                                    Inputs(j) = InputBuffer(i) And (2 ^ h)
                                    Outputs(j) = OutputBuffer(i) And (2 ^ h)
                                    Memory(j) = MemoryBuffer(i) And (2 ^ h)
                                    If Inputs(j) > 1 Then Inputs(j) = 1
                                    If Outputs(j) > 1 Then Outputs(j) = 1
                                    If Memory(j) > 1 Then Memory(j) = 1
                                    h += 1
                                Next
                                h = 0
                            Next
                            ' On récupére toutes les valeurs des entrées/sorties/memoires en décimale
     
                            If Inputs(0) = 0 Then
                                ' fazer código para ZERO
                            Else
                                ' fazer código para UM
                            End If
                            ' Fazer o mesmo ou equivalente para os restantes valores
                            ' Não esquecer que agora os bits estão todos seguidos e não agrupados em bytes, ou seja:
                            ' I0.0 corresponde a Inputs(0), I1.0 corresponde a Inputs(8), I2.0 correspondente a Inputs(16), etc...
     
                            ' Organizar os valores e metê-los no array XMTBuffer para serem enviados para o autómato
     
                            ' Escreve nas memórias V
                            If dc.writeBytes(libnodave.daveDB, 1, 1020, 16, XMTBuffer) <> 0 Then
                                ' Se o resultado for diferente de ZERO, então houve um erro
                                MsgBox(TimeOfDay & " - Erro na escrita de Ordens VB1020 -> " & res & vbCrLf) ' " <> " & libnodave.daveStrerror(res) & vbCrLf)
                            End If
                        Else
                            ' Erreur de lecture des valeurs
                            MsgBox("Error {0:d}={1:s} in readBytes.res = " & res & vbCrLf)
                        End If
                        dc.disconnectPLC() ' Déconnexion de l'automate
                    Else
                        ' Erreur de connexion avec la carte
                        MsgBox("Error {0:d}={1:s} in connectPLC.res = " & res & vbCrLf)
                    End If
                    di.disconnectAdapter()  ' Deconnexion de la carte
                Else
                    ' Erreur dans la carte
                    MsgBox("Error {0:d}={1:s} in initAdapter.res = " & res & vbCrLf)
                End If
                ' Fermeture du PORT
                libnodave.closePort(fds.rfd)    ' Clean up
            Else
                ' Erreur à l'ouverture du PORT
                MsgBox("Erro ao abrir a porta de comunicação!" & vbCrLf)
            End If
     
     
        End Sub
     
     
     
    End Module
    La encore si il y a des amateurs,
    je suis tout ouïe sur des suggestions

  3. #3
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    il y a des exemples, délivré avec la librairie (en VB et VB.net)
    tu les a vu ?
    Tout est documenté en anglais, c'est déjà mieux

    Malheureusement, je n'ai jamais essayé de me connecté autrement que par Step7 et je n'ai rien sous la main pour tester ...

  4. #4
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Les exemples sont très succins je trouve, aussi bien en code que en commentaires

    c'est sur, il m'a fallu traduire le portugais, mais leur source était complète,
    je fais les essaies demain,
    je te tien au courant et je mettrais le détail de mes sources de manière a ce que ça serve au prochain qui en aura besoin

  5. #5
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Me revoilà

    donc c'est bon, la librairie Libnodave fonctionne !!!
    les détails étant plus proche de l'automatisme que du vb.net,
    je met les explications sur mon autre topic


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

Discussions similaires

  1. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 11h42
  2. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 10h26
  3. aide sur une image
    Par laetus dans le forum IHM
    Réponses: 5
    Dernier message: 04/10/2004, 14h54
  4. Aide sur une requete de sélection
    Par stephdiplo150 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2004, 10h40
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

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