Projet BTS - Wago 750-881
Projet BTS - Wago 750-881
Bonjour,
Je suis actuellement en BTS Systèmes Numériques et mon projet de fin d'année consiste à contrôler une barrière de parking via un programme écrit en C++ en utilisant le protocole Modbus TCP, la barrière nous a été livrée avec un programme Codesys fonctionnel, je dois donc le reproduire en C++.
La barrière est composée d'un Wago 750-881, j'ai bien lu la doc et j'ai trouvé les variables internes ainsi que leurs adresses, maintenant il me faudrait envoyer les bonnes trames pour pouvoir les modifier et donc contrôler la barrière.
Malheureusement je ne trouve pas de quel format doit-être la trame, j'ai déjà fait un programme en reprenant le format de trame Modbus TCP mais je n'arrive pas à agir dessus.
Je suis donc à la recherche d'un modèle de trame Modbus me permettant de communiquer avec mon Wago.
Merci d'avance !
Je suis actuellement en BTS Systèmes Numériques et mon projet de fin d'année consiste à contrôler une barrière de parking via un programme écrit en C++ en utilisant le protocole Modbus TCP, la barrière nous a été livrée avec un programme Codesys fonctionnel, je dois donc le reproduire en C++.
La barrière est composée d'un Wago 750-881, j'ai bien lu la doc et j'ai trouvé les variables internes ainsi que leurs adresses, maintenant il me faudrait envoyer les bonnes trames pour pouvoir les modifier et donc contrôler la barrière.
Malheureusement je ne trouve pas de quel format doit-être la trame, j'ai déjà fait un programme en reprenant le format de trame Modbus TCP mais je n'arrive pas à agir dessus.
Je suis donc à la recherche d'un modèle de trame Modbus me permettant de communiquer avec mon Wago.
Merci d'avance !
- Bernardo59
- Mi homme - Mi automate

- Messages : 1054
- Enregistré le : 20 oct. 2015, 05:48
- Localisation : Nimes
- Contact :
Re: Projet BTS - Wago 750-881
Bonjour,
Je pense que pour toi, il serait plus simple d'utiliser une DLL "toute prête" pour utiliser le protocole MODBUS TCP.
Je pense que pour toi, il serait plus simple d'utiliser une DLL "toute prête" pour utiliser le protocole MODBUS TCP.
Re: Projet BTS - Wago 750-881
Hello
+1 avec Bernardo.
J'eut eu a faire un jour le calcul d'un CRC en C++ pour des trames Modbus, ça se fait mais c'est pas simple...
Pour une trame Modbus, tu veux faire quoi? Ecriture? Lecture? 1 seul mot ou bit? ou plusieurs mots ou bits?
Bon courage.
+1 avec Bernardo.
J'eut eu a faire un jour le calcul d'un CRC en C++ pour des trames Modbus, ça se fait mais c'est pas simple...
Pour une trame Modbus, tu veux faire quoi? Ecriture? Lecture? 1 seul mot ou bit? ou plusieurs mots ou bits?
Bon courage.
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Re: Projet BTS - Wago 750-881
Oui j'ai vu la librairie libmodbus qui avait l'air de correspondre à mes besoins mais je n'ai pas réussi à la faire marcher avec QTBernardo59 a écrit :Bonjour,
Je pense que pour toi, il serait plus simple d'utiliser une DLL "toute prête" pour utiliser le protocole MODBUS TCP.
Pour le CRC en C++ ça a été le sujet d'un TP que j'ai déjà fait en cours donc pas de soucis là dessus, cependant pour communiquer avec le wago j'utilise du Modbus TCP et le CRC n'est utilisé qu'en Modbus RTU donc je n'ai pas à m'en soucier.Mantysse a écrit :Hello
+1 avec Bernardo.
J'eut eu a faire un jour le calcul d'un CRC en C++ pour des trames Modbus, ça se fait mais c'est pas simple...
Pour une trame Modbus, tu veux faire quoi? Ecriture? Lecture? 1 seul mot ou bit? ou plusieurs mots ou bits?
Bon courage.
Voici la liste des variables que j'ai à ma disposition pour interagir avec la barrière :

On peut donc voir que les variables sont représenter par des bits qu'il faut mettre à 0 ou 1 selon l'action que l'on veut faire, mon objectif est donc de pouvoir modifier la valeur de ces bits.
- Bernardo59
- Mi homme - Mi automate

- Messages : 1054
- Enregistré le : 20 oct. 2015, 05:48
- Localisation : Nimes
- Contact :
Re: Projet BTS - Wago 750-881
Bonjour,
J'ai une .dll en C# si ça t’intéresse. Je m'en suis servis pour développer une simulation d'un programme automate.
Envoie moi un mail et je te la donnerai.
Amicalement,
Benoit
J'ai une .dll en C# si ça t’intéresse. Je m'en suis servis pour développer une simulation d'un programme automate.
Envoie moi un mail et je te la donnerai.
Amicalement,
Benoit
Re: Projet BTS - Wago 750-881
Bonjour,Bernardo59 a écrit :Bonjour,
J'ai une .dll en C# si ça t’intéresse. Je m'en suis servis pour développer une simulation d'un programme automate.
Envoie moi un mail et je te la donnerai.
Amicalement,
Benoit
Malheureusement je n'ai jamais développé en C# ni utilisé de .dll quand bien même j'arriverai à faire marcher mon projet je préfère utiliser les outils que j'ai appris durant mes 2 ans d'études et donc rester en C++.
Par contre j'ai avancé un peu sur mon problème de trame, j'ai utiliser le logiciel Wireshark pour analyser le trafic entre mon PC et le Wago, j'ai créer un programme Codesys qui ne fait qu'allumer un feu clignotant de sécurité qui est sur la barrière.
J'espérais pouvoir récupérer la trame qui fait allumer le feu pour analyser son format, le problème c'est que Wireshark affiche des centaines de trames à la minute comme si le Wago et le PC n'arrêtaient pas de communiquer (alors que je n'ai fait qu'envoyer un signal), savez vous d'où proviennent ces trames et s'il y a moyen de les supprimer pour n'avoir que la trame qui m'intéresse ?
Capture d'écran de Wireshark :

Merci pour votre aide et l'attention que vous portez à mon problème
Re: Projet BTS - Wago 750-881
J'ai réussi !
Après plusieurs analyses du trafic j'ai remarqué qu'une trame se différenciait des autres et revenait seulement lorsque j'actionnai le feu de signalement via mon programme Codesys.
J'ai reproduit la trame avec mon programme C++ et je peux désormais le contrôler avec mon interface QT, j'ai encore quelques soucis de connexion par contre
Merci pour votre aide, je vais continuer mon projet, je reviendrais vers vous si j'ai besoin d'aide ou pour vous tenir au courant
Après plusieurs analyses du trafic j'ai remarqué qu'une trame se différenciait des autres et revenait seulement lorsque j'actionnai le feu de signalement via mon programme Codesys.
J'ai reproduit la trame avec mon programme C++ et je peux désormais le contrôler avec mon interface QT, j'ai encore quelques soucis de connexion par contre
Merci pour votre aide, je vais continuer mon projet, je reviendrais vers vous si j'ai besoin d'aide ou pour vous tenir au courant
- djé
- Dieu du process

- Messages : 864
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
- Contact :
Re: Projet BTS - Wago 750-881
Salut,
Sur Wireshark tu devrais filtrer sur le port 501 uniquement, tu n'auras que le ModBus/TCP
Edit: c'est le port 502
Sur Wireshark tu devrais filtrer sur le port 501 uniquement, tu n'auras que le ModBus/TCP
Edit: c'est le port 502
Modifié en dernier par djé le 16 mars 2016, 11:55, modifié 1 fois.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
- Bernardo59
- Mi homme - Mi automate

- Messages : 1054
- Enregistré le : 20 oct. 2015, 05:48
- Localisation : Nimes
- Contact :
Re: Projet BTS - Wago 750-881
C'est pas le port 502 pour du Modbus TCP ?
- djé
- Dieu du process

- Messages : 864
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
- Contact :
Re: Projet BTS - Wago 750-881
Oups
502 !
Je pensais au port du Levi's®.
502 !
Je pensais au port du Levi's®.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
