#industrial #plc #s7 #siemens

quik7

Communication tools for Siemens S7 PLCs

4 releases

Uses new Rust 2024

0.1.3 Nov 11, 2025
0.1.2 Oct 29, 2025
0.1.1 Oct 28, 2025
0.1.0 Oct 27, 2025

#3 in #s7

GPL-3.0-only

43KB
1.5K SLoC

Open source communication tools for Siemens S7 PLCs

Example client usage

fn main() {
    let mut client = Quik7Client::new();
    client.connect("192.168.1.100").unwrap();

    let mut buf = [0u8; 64];
    client.read_db(1, 0, 0, &mut buf).unwrap();
}

Example server usage with smol

fn main() {
    let listener = TcpListener::bind("0.0.0.0:102").unwrap();
    let mut server = Quik7Server::new(listener);

    let reciever = server.register_db(1, 64);

    smol::spawn(async move {
        server.listen().unwrap();
    })
    .detach();

    while let Ok(msg) = reciever.recv() {
        println!("Recieved job: {:?}", msg);
    }
}

No runtime deps