Communication entre deux S7-1200
Communication entre deux S7-1200
Bonjour à tous,
j'explique mon projet et mon problème.
Je veux lire des variables (dans un DB) d'un automate S7-1200 avec un autre automate S7-1200.
J'ai testé la boite GET et PUT mais sans succès (possible erreur de ma part).
Je viens vers vous si vous avez la solution, exemple pour m'aider a réaliser cela.
Merci d'avance
Johnny
j'explique mon projet et mon problème.
Je veux lire des variables (dans un DB) d'un automate S7-1200 avec un autre automate S7-1200.
J'ai testé la boite GET et PUT mais sans succès (possible erreur de ma part).
Je viens vers vous si vous avez la solution, exemple pour m'aider a réaliser cela.
Merci d'avance
Johnny
Re: Communication entre deux S7-1200
Salut,
La communication c'est via les port Ethernet Intégré j'imagine ?
Sinon GET et PUT se sont les bons blocs pour les faire communiquer, il doit y avoir un problème dans ton paramétrage, met nous un imprime écran que l'on puisse t'aider
La communication c'est via les port Ethernet Intégré j'imagine ?
Sinon GET et PUT se sont les bons blocs pour les faire communiquer, il doit y avoir un problème dans ton paramétrage, met nous un imprime écran que l'on puisse t'aider
Re: Communication entre deux S7-1200
Bonjour,
merci de la réponse. Oui c'est en profinet (ethernet).
J'ai créer la boite GET dans une CPU et mon autre CPU est dans un autre projet (aucune boite dans ce projet la)
voici des photos :
http://www.hostingpics.net/viewer.php?id=915181PLC.jpg
http://www.hostingpics.net/viewer.php?id=758727PRG.jpg
Le système est très simple dans un premier temps, je veux juste lire un bool. J'ai forcé le bool dans la CPU distante sur true "DB6.DBX0.2" mais dans ma variable de réception rien ne change, elle reste sur false.
par moment j'ai un code erreur mais très très rapide, dur a voir, il me semble lire le code : 16#0019
Merci
Johnny
merci de la réponse. Oui c'est en profinet (ethernet).
J'ai créer la boite GET dans une CPU et mon autre CPU est dans un autre projet (aucune boite dans ce projet la)
voici des photos :
http://www.hostingpics.net/viewer.php?id=915181PLC.jpg
http://www.hostingpics.net/viewer.php?id=758727PRG.jpg
Le système est très simple dans un premier temps, je veux juste lire un bool. J'ai forcé le bool dans la CPU distante sur true "DB6.DBX0.2" mais dans ma variable de réception rien ne change, elle reste sur false.
par moment j'ai un code erreur mais très très rapide, dur a voir, il me semble lire le code : 16#0019
Merci
Johnny
Re: Communication entre deux S7-1200
bonjour,
il me semble que la fréquence est grande une requête tous les 100ms ça fait beaucoup si tu n'en a pas besoin. surtout que dans ton code tu ne t'assure pas que la première requête est parti.
teste de mettre un bit sur Req que tu Set pour le moment et qui est remis a 0 par le NDR.
Tu t'assures comme ça que ta com est en place.
j'ai déjà fait des com entre 1200 ( 3 cpu) mais jamais sans déclarer la liaison dans le projet ...
bon courage.
il me semble que la fréquence est grande une requête tous les 100ms ça fait beaucoup si tu n'en a pas besoin. surtout que dans ton code tu ne t'assure pas que la première requête est parti.
teste de mettre un bit sur Req que tu Set pour le moment et qui est remis a 0 par le NDR.
Tu t'assures comme ça que ta com est en place.
j'ai déjà fait des com entre 1200 ( 3 cpu) mais jamais sans déclarer la liaison dans le projet ...
bon courage.
Tout seul on va plus vite, ensemble on va plus loin !
Re: Communication entre deux S7-1200
Comme dit bidouille, normalement il faut configurer la liaison S7 dans Devices & Network et récupérer l'ID de la connexion local, aussi il ne faut en aucun cas relancer une requête tant que la précédente n'est pas fini, le bit NDR permet de tester l'échange.
Pour tester les erreurs, lorsque le bit Error monte à 1 copier la sortie STATUS dans une variable pour pouvoir lire le code, aussi j'ai jamais fait en interrogeant un bool au milieux du tableau. En général on interroge une suite d'octet, je ne sais pas si cela peux avoir une incidence sur le fonctionnement.
Pour tester les erreurs, lorsque le bit Error monte à 1 copier la sortie STATUS dans une variable pour pouvoir lire le code, aussi j'ai jamais fait en interrogeant un bool au milieux du tableau. En général on interroge une suite d'octet, je ne sais pas si cela peux avoir une incidence sur le fonctionnement.
Re: Communication entre deux S7-1200
Salut,
je n'ai jamais fait de com sur S7-1200, mais en S7-300 ou 400, je déclare d'abord mes liaisons en "Protocole S7", et ensuite je programme mes blocs.
Avant même de programmer, vérifier l'état des liaisons, si elles ne sont pas établi, ce n'est pas la peine d'aller plus loin.
Sur les blocs GET ou PUT, tu doit obligatoirement déclarer l'ID de la liaison, sinon ça ne fonctionne pas.
Bloc l'envoi des requêtes avec le bit NDR.
Et l'envoi de requête à 100ms ne pose pas de souci.
@+
je n'ai jamais fait de com sur S7-1200, mais en S7-300 ou 400, je déclare d'abord mes liaisons en "Protocole S7", et ensuite je programme mes blocs.
Avant même de programmer, vérifier l'état des liaisons, si elles ne sont pas établi, ce n'est pas la peine d'aller plus loin.
Sur les blocs GET ou PUT, tu doit obligatoirement déclarer l'ID de la liaison, sinon ça ne fonctionne pas.
Bloc l'envoi des requêtes avec le bit NDR.
Et l'envoi de requête à 100ms ne pose pas de souci.
@+
Re: Communication entre deux S7-1200
Donc si j'ai bien compris il faut que les CPU soient dans le même projet ?
Dans mon cas c'est des projets différents, la solution du GET et PUT n'est peut-être pas la bonne. J'avais également vu le Modbus TCP
Dans mon cas c'est des projets différents, la solution du GET et PUT n'est peut-être pas la bonne. J'avais également vu le Modbus TCP
Re: Communication entre deux S7-1200
Salut,
non, tu n'est pas obliger d'avoir les deux cpu dans le même projet, car tu peux déclarer un partenaire distant en renseignent son adresse IP.
Attention à la CPU qui initialise la liaison. Une seule CPU, pas les deux.
L'état des liaisons fonctionne même avec des CPU dans un autre projet.
non, tu n'est pas obliger d'avoir les deux cpu dans le même projet, car tu peux déclarer un partenaire distant en renseignent son adresse IP.
Attention à la CPU qui initialise la liaison. Une seule CPU, pas les deux.
L'état des liaisons fonctionne même avec des CPU dans un autre projet.
Re: Communication entre deux S7-1200
salut,
je viens de tester avec les 2 cpu dans le même projet et j'ai le même problème. J'ai en status cela : 16#0019
Le ndr reste sur false
Je test toujour avec variable en bool
je viens de tester avec les 2 cpu dans le même projet et j'ai le même problème. J'ai en status cela : 16#0019
Le ndr reste sur false
Je test toujour avec variable en bool
- JC87
- Mi homme - Mi automate

- Messages : 2230
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: Communication entre deux S7-1200
Bonjour,
Tu devrai regarder les FAQ sur le site de Siemens en cherchant "communication entre deux 2 S7-1200" tu trouvera plusieurs méthodes y compris en Modbus, avec ce protocole je suis un peu sceptique mais peut être ont ils fait des progrès depuis la gamme 300/400.
JC
Tu devrai regarder les FAQ sur le site de Siemens en cherchant "communication entre deux 2 S7-1200" tu trouvera plusieurs méthodes y compris en Modbus, avec ce protocole je suis un peu sceptique mais peut être ont ils fait des progrès depuis la gamme 300/400.
JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."



