Pragmatic native Rust S7 client (Snap7‑style) for Siemens PLCs.
- Pure Rust, no unsafe code.
- Low latency: ≈ 1ms/PDU.
- Small footprint.
- Strict control of incoming headers.
- Automatic telegram splitting for large reads/writes.
- Connection helpers methods for S71200/1500 and S7300.
use rust7::client::{S7Client};fnmain(){letmut client = S7Client::new();let db_number:u16 = 100;// Must exist into the PLC// Connectionmatch client.connect_s71200_1500("192.168.0.100"){Ok(_) => {println!("Connected to PLC")},Err(e) => {eprintln!("Connection failed: {}", e);return;}}// Reads 64 byte from DB100println!("");println!("Attempt to read 64 byte from DB100");letmut read_buffer = vec![0u8;64];match client.read_db(db_number,0,&mut read_buffer){Ok(_) => {println!("Success!");println!("Job time (ms) : {:.3}", client.last_time);},Err(e) => eprintln!("Read failed: {}", e),}
client.disconnect();}The detailed documentation is here.
For practical examples see the documentation here.
Copyright © 2025 Davide Nardella
Distribuited under MIT License.