ModbusEsclaveSimulation
Application Windows autonome prenant en charge les protocoles Modbus RTU, TCP, UDP et ASCIIoverRTU pour la simulation.
Sont également incluses ses versions Mono pour Linux et Mac OS X, ce sont des versions VB Net donc :
- Pour Linux, vous devrez installer les packages
mono-complete
et mono-vbnc
- Mac peut être différent selon la version d'OS X, installez peut-être des packages
mono
et mono-basic
Si un pare-feu est activé, il peut vous demander d'autoriser cette application à communiquer sur le réseau :
- Normalement, il devrait être autorisé à communiquer sur le réseau privé, sinon il pourrait ne pas fonctionner correctement.
- N'autorisez pas l'accès public à moins que vous sachiez ce que vous faites
- Une fois le test terminé, n'oubliez pas de supprimer cette application de la liste des applications autorisées du pare-feu.
L'application est conçue pour permettre d'exécuter plusieurs instances de l'application en même temps, par exemple :
- Utilisez le même protocole pour chaque instance mais avec des numéros de port différents, semblables à :
- IP 127.0.0.1 Port TCP 501 et IP 127.0.0.1 Port TCP 502
- Utilisez un mélange de différents protocoles à l'aide d'autres outils (comme com0com pour le protocole RTU sous Windows)
L'application doit répondre aux demandes pour tout ID d'esclave Modbus valide.
Tout cela est basé sur les bibliothèques nModbus .NET 3.5 modifiées, Copyright (c) 2006 Scott Alexander :
- Ceux-ci sont inclus en tant que ressource pour la version Windows mais sont distincts pour la version Mono
Destiné à être utilisé comme un outil de test rapide :
- Peut être testé avec son homologue ModbusMaster (voir la vidéo ci-dessous)
- Ou peut-être utilisez-vous plutôt le logiciel AdvancedHMI car il est hautement fonctionnel et gratuit.
Capture d'écran
Fonctionnalité
- Toutes les valeurs peuvent être définies avant que la connexion ne soit établie : bobines, entrées discrètes, registres d'entrée, registres de maintien.
- La vue Grille de données est configurée pour afficher initialement 20 lignes d'adresses, mais peut être modifiée dans la liste déroulante
Row Count
pour afficher plus ou toutes les lignes si nécessaire. - Dans la vue Grille de données, sélectionnée dans la liste déroulante
I/O Address Range
, double-cliquez sur la valeur pour la modifier :- Les valeurs booléennes basculeront entre 0 et 1
- Les valeurs Uint16 nécessitent une valeur entière non signée comprise entre 0 et 65535
- Les entrées discrètes et les registres d'entrée fournissent un accès
read-only
à l'application maître :- Le périphérique MODBUS désigné comme
Master
peut UNIQUEMENT envoyer des requêtes pour lire ces valeurs - Ces valeurs doivent être manipulées par l'utilisateur directement dans le simulateur, sinon elles ne changeront pas.
- Les bobines et les registres de maintien fournissent un accès
read/write
à l'application maître :- Le périphérique MODBUS désigné comme
Master
peut envoyer des demandes de lecture de ces valeurs ainsi que des demandes de modification de ces valeurs. - Ces valeurs peuvent également être manipulées par l'utilisateur directement dans le simulateur si nécessaire
- Pour les protocoles
RTU
et ASCIIoverRTU
, sur un seul PC, ce simulateur peut s'aider de :- Programme com0com pour Windows pour fournir des paires de ports série virtuels
- Programme tty0tty pour Linux pour fournir des paires de ports série virtuels
- Une TextBox supplémentaire permet la saisie manuelle du port série :
- Principalement destiné à Linux afin que ces paires de ports virtuels
tty0tty
, comme /dev/tnt0
<=> /dev/tnt1
, soient accessibles - Cette case a été supprimée dans la version Mac Mono
- La bibliothèque prend également en charge l'écriture de bits masqués, code de fonction 22 (0x16H ou FC22).
Usage
-> Pour Windows
- Utilisez les fichiers exécutables Windows du dossier
exe
ou suivez les instructions ci-dessous pour le créer vous-même :- Téléchargez et installez l'édition communautaire de Visual Studio (idéalement 2019).
- Téléchargez et extrayez le fichier zip de ce projet.
- Ouvrez-le en tant que projet existant dans Visual Studio et, dans le menu, effectuez :
- Créer/Créer une solution (ou appuyez sur Ctrl-Maj-B).
- Déboguer/Démarrer le débogage (ou appuyez sur F5) pour exécuter l’application.
- Localisez le fichier EXE créé dans le dossier
/bin/Debug
et copiez-le dans votre dossier préféré ou sur votre bureau.
- Pour tester les protocoles RTU, utilisez com0com pour créer des ports série virtuels
-> Pour Mono
- Assurez-vous que Mono est installé sur votre ordinateur :
- Packages
mono-complete
et mono-vbnc
pour Linux - Pour Mac, vous devrez peut-être expérimenter, peut-être des packages
mono
et mono-basic
- Téléchargez et extrayez le fichier zip de ce projet et localisez l'archive Mono dans le dossier
Mono
. - Extrayez 4 fichiers et renommez éventuellement le dossier et/ou le fichier exe nouvellement créé en quelque chose de plus court si vous le souhaitez (juste pour accélérer la navigation dans le terminal).
- Ouvrez le terminal, accédez au dossier et tapez :
sudo mono ModbusSlaveSimulation.exe
:- Sur Mac, vous devrez peut-être passer au compte superutilisateur
su
- Pour tester les protocoles RTU, sous Linux, vous pouvez éventuellement installer et utiliser des ports virtuels tty0tty tandis que sur Mac, les versions ultérieures d'OS X semblent avoir des pseudo-terminaux - des paires de périphériques tels que
/dev/ptyp3
et /dev/ttyp3
.
Remarque pour les utilisateurs Mac : cela a été testé sur un ancien ordinateur iMac G5 PowerPC avec Mono v2.10.2. Un comportement étrange était présent dans le sens où l'application perdait le focus, perturbant ainsi la communication TCP continue. Il y a une zone de texte avec un X rouge sur laquelle vous pouvez cliquer pour essayer de rester concentré (si vous faites autre chose par la suite, cliquez à nouveau dessus). Comme je ne peux pas le tester d’une autre manière, il vous reste à expérimenter.
Vidéo
Modbus.TCP.Communication.mp4
Licence
Sous licence MIT - voir également le fichier README.txt dans le dossier Ressources.
Marques déposées
Toutes les marques, directement ou indirectement mentionnées dans ce projet, appartiennent à leurs propriétaires respectifs.
Ressources utiles
Le forum du site Web AdvancedHMI, qui est un autre projet open source.