Skip to content

Repository files navigation

Rust7 - Native Rust S7Client

Pragmatic native Rust S7 client (Snap7‑style) for Siemens PLCs.


Features

  • 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.

Quick start

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();}

Documentation

The detailed documentation is here.

Examples

For practical examples see the documentation here.


License

Copyright © 2025 Davide Nardella

Distribuited under MIT License.

About

Pragmatic native Rust S7 client (Snap7‑style) for Siemens PLCs.

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages