Outils pour travailler avec le protocole Modbus optimisé par Rust/Tokio. Les applications sont disponibles en ligne. Voir ici pour plus de détails.
Émulateur esclave qui génère des réponses aléatoires aux demandes de lecture et accuse réception positivement des commandes d'écriture. Utile pour une vérification rapide des maîtres Modbus tels que les systèmes SCADA, les implémentations de clients personnalisés, etc.
Le moyen le plus simple est de créer et d’exécuter via Cargo. Par défaut, Modbus TCP utilise le port 502 qui, dans la plupart des cas, nécessite les privilèges root. Tous les exemples sont donc présentés sur le port 1502.
cargo run --bin slave-rnd tcp:0.0.0.0:1502
..
[2022-07-08T14:49:25Z INFO slave_rnd] start server 0.0.0.0:1502
[2022-07-08T14:49:25Z INFO slave_rnd] start message processor
[2022-07-08T14:49:25Z INFO slave_rnd] press Ctrl+C to exit
[2022-07-08T14:49:27Z INFO transport::tcp::server] 127.0.0.1:44544 connected
[2022-07-08T14:49:30Z INFO transport::tcp::server] 127.0.0.1:44548 connected
Exécutez avec une sortie détaillée.
RUST_LOG=trace cargo run --bin slave-rnd tcp:0.0.0.0:1502
...
[2022-07-08T14:50:16Z INFO slave_rnd] start server 0.0.0.0:1502
[2022-07-08T14:50:16Z INFO slave_rnd] start message processor
[2022-07-08T14:50:16Z INFO slave_rnd] press Ctrl+C to exit
[2022-07-08T14:50:16Z INFO transport::tcp::server] 127.0.0.1:56896 connected
[2022-07-08T14:50:17Z DEBUG codec::net::default] 127.0.0.1:56896 unpack [0, 197, 0, 0, 0, 6, 1, 3, 0, 0, 0, 10]
[2022-07-08T14:50:17Z DEBUG transport::tcp::server] 127.0.0.1:56896 RequestFrame { id: Some(197), slave: 1, pdu: ReadHoldingRegisters { address: 0, nobjs: 10 } }
[2022-07-08T14:50:17Z DEBUG transport::tcp::server] 127.0.0.1:56896 ResponseFrame { id: Some(197), slave: 1, pdu: ReadHoldingRegisters { nobjs: 10, data: Data { buffer: [145, 4, 173, 2, 122, 70, 61, 128, 56, 198, 89, 37, 62, 72, 5, 186, 233, 123, 79, 21] } } }
[2022-07-08T14:50:17Z DEBUG codec::net::default] 127.0.0.1:56896 pack [0, 197, 0, 0, 0, 23, 1, 3, 20, 4, 145, 2, 173, 70, 122, 128, 61, 198, 56, 37, 89, 72, 62, 186, 5, 123, 233, 21, 79]
[2022-07-08T14:50:17Z DEBUG codec::net::default] 127.0.0.1:56896 unpack [0, 198, 0, 0, 0, 6, 1, 3, 0, 0, 0, 10]
..
Exécuter en mode série.
cargo run --bin slave-rnd serial:/dev/ttyUSB0:38400-8-N-1
Un émulateur d'esclave permet de connecter N maîtres. Certains maîtres peuvent écrire dans des registres et d'autres peuvent lire. L'utilisation typique est le stockage temporaire pour connecter différents composants d'un système.
En cours d'exécution:
cargo run --bin slave-exchange tcp:0.0.0.0:1502 udp:0.0.0.0:1502 serial:/dev/ttyUSB0:9600-8-N-1
..
[2022-12-07T19:43:18Z INFO transport::builder] start tcp server 0.0.0.0:1502
[2022-12-07T19:43:18Z INFO transport::builder] start udp server 0.0.0.0:1502
[2022-12-07T19:43:18Z INFO transport::builder] start rtu slave /dev/ttyUSB0:9600-8-N-1
[2022-12-07T19:43:18Z INFO slave_exchange] press Ctrl+C to exit
Modes pris en charge :
Transport pris en charge :
Fonctions prises en charge :
Les binaires ARMv7 pourraient être exécutés, par exemple, sur Raspperry PI (32 bits) ou iMX6UL.
cargo build --target=armv7-unknown-linux-gnueabihf
cargo build --release --target=x86_64-pc-windows-gnu
esclave-rnd - 194.60.201.127:502. Le transport TCP et UDP est activé.
échange d'esclaves - 194.60.201.127:1502. Le transport TCP et UDP est activé.