Herramientas para trabajar con protocolo Modbus con tecnología de Rust/Tokio. Las aplicaciones están disponibles en línea. Consulte aquí para obtener más detalles.
Emulador esclavo que genera respuestas aleatorias a solicitudes de lectura y reconoce positivamente los comandos de escritura. Útil para una verificación rápida de maestros Modbus como sistemas SCADA, implementaciones de clientes personalizados, etc.
La forma más sencilla es compilar y ejecutar a través de Cargo. De forma predeterminada, Modbus TCP utiliza el puerto 502 que, en la mayoría de los casos, requiere privilegios de root. Por lo tanto, todos los ejemplos se presentan en el puerto 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
Ejecutar con salida detallada.
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]
..
Ejecutar en modo serie.
cargo run --bin slave-rnd serial:/dev/ttyUSB0:38400-8-N-1
Un emulador de esclavos permite conectar N maestros. Algunos maestros pueden escribir en registros y otros pueden leer. El uso típico es el almacenamiento temporal para conectar diferentes componentes de un sistema.
Correr:
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
Modos admitidos:
Transporte soportado:
Funciones soportadas:
Los binarios ARMv7 se podrían ejecutar, por ejemplo, en Raspperry PI (32 bits) o iMX6UL.
cargo build --target=armv7-unknown-linux-gnueabihf
cargo build --release --target=x86_64-pc-windows-gnu
esclavo-rnd - 194.60.201.127:502. El transporte TCP y UDP está habilitado.
intercambio de esclavos - 194.60.201.127:1502. El transporte TCP y UDP está habilitado.