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

WinDev Discussion :

Connexion à des automates


Sujet :

WinDev

  1. #1
    Invité
    Invité(e)
    Par défaut Connexion à des automates
    Bonjour à tous,
    Je suis actuellement en déplacement chez un client pour faire un développement sur site, déjà, j'ai du mal à le commencer...
    Le projet consiste à se connecter par câble réseau sur l'un des 2 automates, je connais leurs adresses ip. A partir de ces adresses ip, je vais devoir interroger des tables.
    Je rencontre déjà le soucis de connexion par adresse ip, je pensais le faire avec les fonctions socket mais je ne vois pas comment je peux interroger les tables...
    Auriez vous des idées à me donner de la méthode à adopter pour réaliser ce projet?
    Pour l'instant, je n'ai pas d'autre informations, si besoin est, je pourrais toujours m'en informer auprès de mon interlocuteur.
    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut
    Bonjour,

    A mon avis, tu vas trouver les infos du côté de la documentation des automates et du site du constructeur.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Bonjour,

    Vous devez également vous rapprocher de la personne ayant réalisé le programme de l'automate afin qu'elle vous indique les protocoles à utiliser pour l'interface.
    D'expérience, ce n'est pas parce qu'un automate propose tel ou tel protocoles que ces derniers ont étés activés et implémentés lors de la programmation.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les automates sur lesquels je travaille sont des Siemens S7 (nouvelle information obtenue).
    J'ai demandé la documentation technique de ces automates à mon interlocuteur, malheureusement, il n'a rien sur la version S7, seulement de la documentation (en quantité) sur la S5 mais elle reste obsolète, elle fait appel à des notions qui n'existent plus maintenant (c'est ce qu'on m'a dit).
    Là, j'ai pu glisser 2-3 mots à mon patron, qui m'a parlé d'une dll à récupérer sur internet qui gère la connexion, ainsi que l'appel aux méthodes.

    Je continue les recherches google de mon côté.

    Edit : j'ai compris qu'il me faut la dll libnodave pour pouvoir travailler sur ce projet, j'ai pu la récupérer à l'aide du projet mis en ligne par VILSON ARANTES dans ce lien.

    Dans un premier temps, je vais me contenter de coder en vb.net, histoire de voir comment ça marche et si mon code peut fonctionner dans le cas où je me retrouve, une fois le bon code trouvé, je vais voir pour la migration en wlangage.
    Dernière modification par Invité ; 07/06/2016 à 17h19.

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'ai pu avancé de mon côté :
    1) j'ai abandonné la librairie libnodave.NET.dll, j'utilise désormais la librairie S7.NET.dll, qui est plus simple à utiliser
    2) j'ai finalement compris que mon pc n'avait pas les droits de se connecter aux automates (que j'essaye avec cette nouvelle librairie, l'erreur remontée dit que l'adresse ip demandée n'as pas été trouvée), du coup, je suis obligé de faire mes tests sur les pc du client.

    Actuellement, je rencontre un autre soucis, assez incompréhensible, où je dois lire des données.
    Je dois faire ma lecture dans la table DB172, je dois récupérer la valeur du DWord 1 (Dword pour dire que je récupère 2 valeurs), la 1ere valeur représente une quantité, la seconde est soit 0 ou 1.

    En faisant mon test avec read("DB072.DBW1"), je récupère 12, puis en faisant mon test sur le Dword 2, j'ai comme résultat 3073...

    Auriez-vous des idées à me suggérer?
    Pour l'instant, je n'ai pas de code en wlangage disponible, je fais mes tests en vb.net avant de migrer le tout en wlangage.
    De plus, quand je demande le type de valeur retournée, je trouve qu'il s'agit d'un UInt16

  6. #6
    Membre actif
    Homme Profil pro
    Ingé Indus
    Inscrit en
    Juillet 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingé Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 107
    Points : 241
    Points
    241
    Par défaut
    Je dois faire ma lecture dans la table DB172, je dois récupérer la valeur du DWord 1 (Dword pour dire que je récupère 2 valeurs), la 1ere valeur représente une quantité, la seconde est soit 0 ou 1.

    En faisant mon test avec read("DB072.DBW1"), je récupère 12, puis en faisant mon test sur le Dword 2, j'ai comme résultat 3073...
    Il faudrait tu sache plus correctement ce que tu doit lire (bool, int, uint, float ...)

    Db = Data Block
    En gros c'est une structure.
    Mais il y a 0 controle sur ce que tu demande de lire. D'ou l'importance de savoir ce que tu veut lire.
    Dans la fonction read tu indique a partir de quelle "adresse" mémoire tu veut lire et sur quel taille.

    Pour un rappel / explication:




    Source des images

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour et merci pour cette réponse yoshi, j'ai pu avancer sur le projet en version .NET, j'ai pu récupérer des valeurs qui sont correctes (avec la syntaxe DBx.DBBy).

    Maintenant, je commence à réecrire mon code en windev où je rencontre déjà quelques soucis.

    J'ai instancié un objet de type S7.Net.Plc en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gf_PLC est un S7.net.Plc dynamique
    Là, j'aimerais établir une connexion avec un automate, pour cela, je dois faire à un constructeur avec la signature suivante :
    PLC(CpuType _type, chaine _ip, entier _rack, entier _slot)
    où :
    _type : constante provenant d'un énuméré
    _ip : adresse ip de l'automate
    _rack : rack
    _slot : slot

    Ma question est de savoir comment récupéré la valeur d'un énuméré provenant d'une classe .NET, sachant que quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    l_CpuType est un entier=S7.Net.CpuType.S7300
    S7 est écrit en rouge avec le message d'erreur qu'il y a une erreur de syntaxe.
    Voici la librairie que j'utilise.

    En .NET, quand je survole avec la souris la constante CpuType.S7300, la valeur 10 est affichée, devrais-je plutôt gérer ce genre de valeur à la place?

  8. #8
    Membre actif
    Homme Profil pro
    Ingé Indus
    Inscrit en
    Juillet 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingé Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 107
    Points : 241
    Points
    241
    Par défaut
    je vois 3 points de confusions:

    1-
    Le nom de l'assemblage S7.net
    avec le [.] Windev l'interprète comme un accès a une méhode de l'objet/classe S7 qui n'existe pas.
    Sur la declaration de l'objet gf_PLC, il ne rale pas, mais je ne sais pas vraiment pourquoi.
    Donc pour éviter ce problème il faut écrire
    2-Dans les fait, il n'est pas obligatoirr de préfixer par 'S7.Net'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gf_PLC est un Plc dynamique  // fonctionne directement
    gf_PLC2 est un 'S7.net'.Plc dynamique // permet de lever l’ambiguïté si il existe une autre classe Plc dans le projet
    3-
    CpuType _type
    La variable attendu est a priori un CpuType.
    Est-tu sur que cela marche avec une constante ?
    sinon: CpuType.S7300

  9. #9
    Invité
    Invité(e)
    Par défaut
    Merci Yoshi pour ces informations, je ne maitrise pas vraiment l'appel de dll .NET en windev, je me contentais juste de faire des copier coller avec le code en vb.net.

    Du coup, comme je suis vraiment en retard sur le projet (j'ai passé la journée à me faire 2 écrans de paramétrages + 1 de connexion au PLC), je me suis fais en suivant une librairie .NET qui inclue cette librairie S7.Net, tout ce que je peux dire pour l'instant, c'est que c'est bon signe, quand je teste la connexion, on me dit "erreur de connexion au PLC" ce qui est normal depuis mon pc personnel, il n'est pas reconnu par l'automate x_x je fais le test sur un pc qui est reconnu par l'automate, et si tout se passe à merveille, je pense continuer sur cette voie là, qui sera vraiment plus simple à gérer

  10. #10
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    je n'ai pas d'erreur avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gf_PLC = allouer un PLC(CPU_Type::S7400,"xxx.xxx.x.x", 0, 3)
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    je n'ai pas d'erreur avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gf_PLC = allouer un PLC(CPU_Type::S7400,"xxx.xxx.x.x", 0, 3)
    Ami calmant, J.P
    Bonsoir,
    2 choses que je n'arrive pas vraiment à comprendre :
    1) en faisant pareil, j'ai le message d'erreur "mauvais paramètre pour le constructeur de la classe PLC (cf point 2)
    2) quand on regarde la signature du constructeur par recopie en windev, il est clair qu'il faut renseigner 6 paramètres et non 4, alors que quand on regarde la doc sous visual studio, les paramètres 5 et 6 ont clairement été définis comme étant optionnels, ce qui assez étrange

  12. #12
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    tu as quelle version de S7.net.dll ? moi j'ai la version 1.0.0 du 4/10/2009.
    quelle version de windev utilises-tu ? moi c'est windev 16
    Sous quel O.S es-tu ? et la compilation (32 ou 64 bits ) ? moi je suis sous windows 7 .
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  13. #13
    Invité
    Invité(e)
    Par défaut
    j'ai la version 1.0.0 de la dll, bizarrement, ça me dit qu'elle a été modifiée le 08/06/2016, je ne sais pas comment ...
    Je fais appel à windev 21, version 59n (version de base) sous windows server 2012, mon projet est en 32 bits (la totalité de mes développements se font en 32 bits).

  14. #14
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    si je regarde dans les sources de l'assemblage , dans le fichier PLC.cs il y a deux constructeurs possibles, un à 4 paramètres, un à 6 paramètres :
    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
          public PLC(CPU_Type cpu, string ip, Int16 rack, Int16 slot)
            {
                IP = ip;
                CPU = cpu;
                Rack = rack;
                Slot = slot;
            }
     
            public PLC(CPU_Type cpu, string ip, Int16 rack, Int16 slot, string name, object tag)
            {
                IP = ip;
                CPU = cpu;
                Rack = rack;
                Slot = slot;
                Name = name;
                Tag = tag;
            }
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  15. #15
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    voilà ce que j'ai dans l'explorateur de projet sous windev 16 concernant l'assemblage S7.net :
    Nom : S7.net.png
Affichages : 1356
Taille : 12,2 Ko
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/05/2011, 06h33
  2. Proftpd : Connexion des utilisateurs système
    Par grunk dans le forum Administration système
    Réponses: 3
    Dernier message: 16/08/2007, 19h43
  3. [MySQL] Connexion des membres
    Par webeuros dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/07/2007, 09h08
  4. Réponses: 7
    Dernier message: 13/10/2006, 00h45

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