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

C# Discussion :

Automates Siemens S7 - librairie libnodave.net.dll


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut Automates Siemens S7 - librairie libnodave.net.dll
    Bonjour,

    Je suis actuellement en déplacement afin de réaliser un développement sur place.
    Après avoir perdu du temps afin d'avoir le strict minimum d'outils pour pouvoir travailler, j'ai finalement pu me procurer (sur internet) les fichiers libnodave.dll et libnodave.net.dll
    J'ai ajouté le fichier libnodave.dll dans c:\Windows\System32 et j'ai ajouté dans mon projet la librairie libnodave.net.dll

    Dans mon projet, je dois me connecter sur l'un des 2 automates présents sur place, je connais leurs adresses ip, le numéro rack (dans mon cas, 0) et le slot (qui est de 3)

    J'ai voulu faire un test de connexion et récupération d'une donnée à l'aide du code suivant :
    Code C# : 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
           public static libnodave.daveOSserialType fds; 
            public static libnodave.daveInterface di; 
            public static libnodave.daveConnection dc; 
            public static int res;
            public static byte plcValue; 
            public static int memoryRes; 
            public static byte[] memoryBuffer = new byte[16]; 
     
            public static void connectTo()
            {
                //fds.rfd = libnodave.openSocket(102, "192.168.X.X"); 
                fds.rfd = libnodave.openSocket(0, "192.168.X.X"); 
     
                fds.wfd = fds.rfd;
                di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
                res = di.initAdapter();
                dc = new libnodave.daveConnection(di, 0, 0, 3);
                res = dc.connectPLC();
                if (res==-1)
                {
                    System.Windows.Forms.MessageBox.Show("Erreur de connexion");
                }
                else
                {
                //memoryRes = dc.readBytes(libnodave.daveFlags, 0, 0, 1, memoryBuffer); 
                memoryRes = dc.readBytes(libnodave.daveFlags, 172, 0, 1, memoryBuffer); 
                plcValue = memoryBuffer[0]; 
                }
     
                dc.disconnectPLC(); 
                di.disconnectAdapter(); 
                libnodave.closePort(fds.rfd);

    Je me suis inspiré du code présent sur cette page.

    Concernant les informations complémentaires que je pourrais apporter, concernant la méthode readBytes :
    - j'interroge la db 172 afin de connaitre la quantité, ainsi que la disponibilité (cela se fait en traduisant en hexadécimal la valeur de la variable plcValue, pour moi, le numéro de db se fait à l'aide du second paramètre de la méthode), lé numéro de DW va de 1 à 17 (pour l'instant, je ne sais pas comment donner cette information, je dirais que chaque position se retrouve dans la variable memoryBuffer).

    Pour l'instant, je ne connais pas le numéro de port à utiliser, de ce fait, la connexion ne peut pas se faire.
    Est-ce que l'un de vous serait assez affuté sur le sujet pour me guider?

    Merci

    EDIT : en faisant un balayage des numéros de port (de 1 à 9999 à l'aide d'une boucle), j'ai pu trouver le bon port.
    Par contre, je bloque à ce passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dc = new libnodave.daveConnection(di, 0, 0, 3);
    res = dc.ConnectPLC();
    où res prend la valeur -1

    D'après cette page, il faut que res prenne la valeur 0 ... je suis paumé là, alors qu'on m'a donné les bons paramètres rack et slot ....
    Dernière modification par Invité ; 08/06/2016 à 17h11.

Discussions similaires

  1. Interop .NET DLL appelée en C
    Par MatteX dans le forum C#
    Réponses: 2
    Dernier message: 29/03/2007, 21h54
  2. [Vb.Net] Dll dans un répertoire différent
    Par Kiboumz dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/03/2007, 13h34
  3. [VB.NET] DLL
    Par FeaR dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/04/2006, 08h10
  4. [Librairie] Charger une DLL delphi
    Par yanis97 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/03/2006, 11h56
  5. Recherche de documentation sur les automates Siemens avec Delphi
    Par ****** dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 22/10/2005, 22h25

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