Files
mht-siemens/solution/client
2026-06-23 18:50:04 +02:00
..
2026-06-23 18:50:04 +02:00

Siemens PLC Client (Python)

Questo progetto fornisce un client Python per la lettura di dati da un PLC Siemens S7 (es. S7-300/400/1500) utilizzando la libreria snap7. Include una dashboard visuale in linea di comando che mostra lo stato del sistema, i parametri di configurazione, le stringhe identificative e un grafico a barre dinamico dei dati di processo.

Funzionalità

  • Lettura DB100: Estrazione di parametri di configurazione, bit di stato e stringhe.
  • Lettura DB101: Acquisizione di un array di 40 valori REAL.
  • Dashboard Dinamica: Visualizzazione in tempo reale con colori (Verde/Rosso) e grafico a barre in ASCII.
  • Campionamento Adattivo: Passa automaticamente a 25ms in modalità "Acquisizione" e a 1s in modalità "Attesa".

Requisiti di Sistema

  • Python 3.8+
  • snap7 library: È necessaria la libreria nativa snap7.
    • Windows: Scarica snap7.dll e mettilo nella cartella del progetto o in PATH.
    • Linux: Installa tramite sudo apt-get install libsnap7-dev.

Installazione

Questo progetto utilizza uv per la gestione dell'ambiente virtuale e delle dipendenze.

  1. Installazione di uv (se non presente): Segui le istruzioni su astral.sh/uv

  2. Setup dell'ambiente: Esegui i seguenti comandi nella cartella del progetto:

    uv venv
    uv pip install python-snap7
    

Struttura Memoria PLC (Mapping)

Il client è configurato per leggere le seguenti aree di memoria:

DB100 (Configurazione e Stato) - 192 Byte

Indirizzo Tipo Dati Descrizione
DBD0 Bit Bit 0: Stato Acquisizione (1=ON) | Bit 8: Pronti (1=ON)
DBD4-44 REAL Parametri configurazione (Iniziale, Finale, Limiti, Tipo, etc.)
DBD56 REAL Valore LIVE X
DBD60 REAL Valore LIVE Y
DBD64 String(30) Commessa
DBD96 String(30) Articolo
DBD128 String(30) IdControllo
DBD160 String(30) Altro

DB101 (Dati di Processo) - 160 Byte

Indirizzo Tipo Dati Descrizione
DBD0-159 40 REAL Array di 40 valori REAL (Processo dinamico)

Utilizzo

Per avviare il client:

uv run python plc_client.py

Configurazione

Modifica le variabili all'inizio di plc_client.py:

  • PLC_IP: L'indirizzo IP del PLC.
  • RACK: Numero di rack (solitamente 0).
  • SLOT: Numero di slot (solitamente 1 per S7-300, potrebbe variare per S7-1500).