Un outil de debug pour Modbus

Un outil de debug pour Modbus

Il faut bien reconnaître que travailler avec des périphériques Modbus est un peu pénible: Les données sont souvent encodées en binaire, et toutes les transactions sont validées avec un checksum, ce qui oblige à écrire un peu de code avant de pouvoir obtenir le moindre résultat. Alors, cette semaine, on a un petit cadeau pour les clients qui utilisent des modules Yoctopuce pour piloter des périphériques Modbus.



C'est une petite application écrite en C# qui va vous permettre de faire des expériences impliquant le protocole Modbus. Pour le nom, on ne s'est pas trop cassé la tête: elle s'appelle Modbus-tool. Elle est compatible avec tous les modules Yoctopuce disposant d'une fonction YSerialPort supportant le protocole Modbus. C'est-à-dire le Yocto-RS485-V2 mais aussi le Yocto-Serial et le Yocto-RS232.

Cette application est un simple exécutable Windows accompagné des DLL Yapi 32 et 64 bits. Au démarrage, elle utilise automatiquement le VirtualHub si elle le détecte sur l'adresse locale 127.0.0.1:444, sinon elle essaye d'utiliser le mode USB natif.

L'interface de l'application Modbus-tool
L'interface de l'application Modbus-tool


L'interface de Modbus-tool n'a qu'une seule fenêtre divisée en trois sections.

Choix du module d'interface

Sélection du module host
Sélection du module host


La première section sert à choisir la fonction serialPort que vous comptez utiliser pour communiquer avec vos périphériques. Sont proposées toutes les fonctions YSerialPort qui auront préalablement été configurées avec un protocole Modbus, c'est-à-dire Modbus-RTU ou Modbus-ASCII. L'interface permet de configurer le protocole, la vitesse et la parité des communications. Notez que les modifications de ces paramètres de communication sont appliquées en temps réel, mais elles ne sont pas sauvées dans le module.

Saisie de l'adresse du périphérique Modbus

Une fois la communication configurée, vous pouvez passer à la deuxième partie de l'interface où il vous faut entrer l'adresse du périphérique auquel vous souhaitez vous adresser. Cette adresse est un entier entre 1 et 247. Si vous ne connaissez pas cette adresse, soit parce que vous avez perdu la doc de votre périphérique, soit parce que cette adresse a été changée, l'application peut scanner le bus pour voir si quelqu'un répond. Ce scan est réalisé en essayant d'interroger le holding register n°0 de chaque adresse.

Sélection de l'adresse
Sélection de l'adresse


Accéder aux données du périphérique

Une fois que tout est prêt, vous pouvez utiliser la troisième partie de l'interface pour lire ou écrire les coils, input bits, input registers et holding registers du périphérique. Il vous suffit d'entrer les valeurs et de cliquer sur les boutons read et write correspondants. Toutes les valeurs peuvent être entrées en décimal ou en hexadécimal (préfixe "0x"). Pour rappel, en Modbus, les input bits, input registers sont en lecture seule.

Manipulation des coils, input bits, input registers et holding registers
Manipulation des coils, input bits, input registers et holding registers


Vous pouvez aussi demander à l'application de scanner toutes les positions possibles de chacun des quatre types de données. Le contenu des positions valides vous sera présenté sous la forme d'une grille. C'est assez pratique pour avoir une vue globale du contenu de la mémoire d'un périphérique.

Les logs

L'onglet logs vous affiche les logs de l'API Yoctopuce et vous décrit les appels qui sont faits à chaque fois que vous cliquez sur un bouton read ou write.

Conclusion

Cette application devrait vous permettre de gagner pas mal de temps dès lors qu'il s'agit tester ou de configurer un périphérique Modbus. Vous pouvez la télécharger ici, ce fichier zip contient les sources de tout le projet VisualStudio. L'exécutable pré-compilé se trouve dans le répertoire bin/release. Comme toujours, n'hésitez pas à nous signaler toute difficulté que vous pourriez rencontrer en l'utilisant.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.