rust7

Crates.iorust7
lib.rsrust7
version0.1.2
created_at2025-08-14 09:02:44.926591+00
updated_at2025-08-15 11:34:58.813552+00
descriptionNative Rust S7 client (Snap7-style) for Siemens PLCs.
homepagehttps://github.com/davenardella/rust7
repositoryhttps://github.com/davenardella/rust7
max_upload_size
id1794639
size285,361
Dave Nardella (davenardella)

documentation

https://docs.rs/rust7

README

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

fn main() {
    let mut client = S7Client::new();
    let db_number: u16 = 100; // Must exist into the PLC

    // Connection
    match client.connect_s71200_1500("192.168.0.100") {
        Ok(_) => { println!("Connected to PLC") },
        Err(e) => {
            eprintln!("Connection failed: {}", e);
            return;
        }
    }
    // Reads 64 byte from DB100
    println!("");
    println!("Attempt to read 64 byte from DB100");
    let mut 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.


License

Copyright © 2025 Davide Nardella

Distribuited under MIT License.

Commit count: 0

cargo fmt