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

Langage PHP Discussion :

Envoie de trame de lecture vers automate


Sujet :

Langage PHP

  1. #21
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu écris au moins une ligne de code a partir des indications qu'on t'a fourni ?
    Si tu connais déjà les échanges à produire, il ne devrait plus y avoir de difficulté ; il faut juste valider que ça fonctionne.

  2. #22
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    du code bien sur le voila :
    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
     
    <html>
        <head>
            <title>Trame de Lecture </title>
        </head>
        <body>
            <h1> OUVRAGE 5 POMPES </h1>
            <p> requete lecture de mot dans l'automate :</p>
     
            <?php
    		error_reporting(E_ALL); // Cette fonction dit à PHP d'afficher presque toutes les erreurs.
    		//Temps maximum d'exécution de la page en sec
    				set_time_limit(1);       
    		//Création de ma "passerelle de com" -> socket TCP/IP
    		$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    		if ($socket < 0)
    		 // La fonction "socket_strerror()" permet d'afficher les différentes erreurs possibles liées à la socket 
    		 echo "socket_create() a échoué : raison :  " . socket_strerror ($socket) . "<br />";
    		else
    		 echo "OK.<br />";		 
     
    		//définition adresse IP automate pour s'y connecter, et du port de com
    		$addresse = '192.168.1.82'; $port = 502;
     
    		//Connexion de la socket
    		socket_connect ( $socket , $addresse , $port );
     
    		echo "Essai de connexion à $adresse sur le port '$port'...";
    		$ResultConnex = socket_connect($socket, $adresse, $port);	
    		if ($ResultConnex < 0)
    		 echo "socket_connect() a échoué : raison : ($ResultConnex) " . socket_strerror($ResultConnex) . "<br />";
    		else 
    		 echo "OK.<br />";
     
    		//definition du type des variables du tableau
    		$trame[0] = chr(0);
    		$trame[1] = chr(0);
    	    $trame[2] = chr(0);
    		$trame[3] = chr(0);
    		$trame[4] = chr(0);
    		$trame[5] = chr(6); // longueur donnée ModBus; nombre d'octets qui suivent
    		$trame[6] = chr(255); // numéro de l'esclave
    		$trame[7] = chr(3); // code fonction : 3 = demande de lecture
    		$trame[8] = chr(0); // numéro/adresse du premier mot à lire (PF)
    		$trame[9] = chr(100);  // numéro/adresse du premier mot à lire (Pf)
    		$trame[10] = chr(0); // nombre de mots à lire (PF)
    		$trame[11] = chr(3); // nombre de mots à lire (Pf)
    		//création de mon tableau de trame de lecture
    		$lecture = array($trame[0], $trame[1], $trame[2], $trame[3], $trame[4], $trame[5], $trame[6], $trame[7], $trame[8], $trame[9], $trame[10], $trame[11]);
    		$RepLecture = '';
     
    		// Envoie de la trame de la lecture
    		// La fonction "socket_write()" permet d'écrire le message qu'on veut envoyer dans la socket
    		echo "Envoi de la requête ...";
    		socket_write($socket, $lecture, strlen($lecture));
    		echo "OK"."<br />";
    		/*// on met en écoute la socket en attendant le traitement de la trame par l'automate
    		$ecoute = socket_listen($socket);
    		if(($ecoute = socket_listen($socket)) === true)
    		 echo "L'écoute de la socket OK"."<br /><br />";*/
    		 // on lit la réponse que notre automate a généré
    		 echo "Lecture de la réponse "."<br /><br />";
    		 // "2048" est la longueur maximum de la réponse.
    		 while ($RepLecture = socket_read($socket, 2048))
    		 echo $RepLecture;
     
    		//Fermeture du serveur
    		socket_close($socket);
     
     
            ?>
        </body>
    </html>
    Et maintenant il faut avoir des compétence en modbus et des notions sur le fonctionnement d'un automate pour pouvoir m'aider....
    C'est pourquoi j'avais créé un post...car ce n'est polus vraiment le sujet

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si ton code fonctionne, que tu arrives bien a avoir des envoies/réponses depuis et vers ton automate, as-tu encore un problème PHP ?

  4. #24
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Oui j'ai encore des problèmes car lorsque j'exécute mon programme via wamp, la page reste bloqué en chargement, donc je sais pas vraiment ce qu'il se passe...
    Ensuite via un autre PC j'analyse les echanges sur le réseau (avec wireshark), et il y a bien des envoies de mon PC et un retour de l'automate; mais au lieu d'avoir juste un échange il y en a plusieurs...moi je n'en veux qu'un seul.
    Donc je ne sais pas si mon programme est bien conçu; et j'en suis quasi persuadé .
    Enfin, étant donnée que je ne travail plus du tout avec dreamweaver, mais désormais avec notepadd++ et wampserver 2 ; comment fait on pour que le code que je vous ai donné s'exécute seulement lorsque je clique sur un bouton (besoin du code pour créer le bouton etc...).

  5. #25
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    comment fait on pour que le code que je vous ai donné s'exécute seulement lorsque je clique sur un bouton
    Tu peux faire un bouton de formulaire qui renvoit vers la meme page.
    Ton code est alors conditionné par l'existance de ton bouton dans $_POST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['ton_bouton'])) {
    Mais sinon le code n'est de toute facon executé que lorsque tu appelles ta page.

    Par contre tu as mis une limite de temps de 1s ; c'est surement un peu faible.

  6. #26
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Ok merci...mais je viens de mettre d'insérer ton code, mais le problème c'est que le bouton n'est pas créé, et du coup quand j'exécute ma page rien ne se passe (logique ).
    Donc comment on crée ce fameux bouton?

  7. #27
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est du HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="" method="post">
    <input type="submit" name="ton_bouton" />
    </form>

  8. #28
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    j'ai tout comme tu m'as dit mais, malheureusement, ça ne marche pas...
    (PS: je l'ai intégré au bon endroit; dans le head).
    Peut tu l'intégrer dans le code que j'ai donné stp

    Merci

  9. #29
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut News
    Bonjour,

    Cette discussion est un peu vieille mais avez-vous réussi à discuter avec le Twido en PHP ?

    J'ai un Twido à la maison et j'aimerai bien pouvoir lire ses variables à distance.

    Merci.

Discussions similaires

  1. Lecture et envoie de trames ethernet en python
    Par olivierguzzi dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 19/05/2013, 16h24
  2. Envoi de trame vers une interface
    Par boubajazz dans le forum Linux
    Réponses: 4
    Dernier message: 05/06/2007, 10h23
  3. Réponses: 3
    Dernier message: 28/06/2006, 16h13
  4. Envoi d'info d'Access vers Word avec des signets
    Par Laetis dans le forum Access
    Réponses: 1
    Dernier message: 03/05/2006, 19h04
  5. Problème de récéption ou d'envoi de Trame UDP
    Par sniperseb dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 10/04/2006, 23h11

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