Connettore Siemens S7
Panoramica
Sezione intitolata “Panoramica”Il connettore Siemens S7 abilita la comunicazione diretta con PLC della serie Siemens S7 senza richiedere OPC UA o altri middleware.
Tipi Connettore:
S7Reader- Leggi dati da PLC S7S7Writer- Scrivi dati su PLC S7
PLC Supportati:
- S7-300
- S7-400
- S7-1200
- S7-1500
Configurazione Base
Sezione intitolata “Configurazione Base”S7 Reader
Sezione intitolata “S7 Reader”{ "type": "S7Reader", "config": { "endpoint": "192.168.0.1:102", "pollingRate": 1000, "rack": 0, "slot": 2 }, "variables": [ { "key": "temperature", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 0, "size": 4, "bitOrder": "BigEndian" }, { "key": "counter", "dataType": "Dint", "memoryArea": "DB", "blockNumber": 1, "startIdx": 4, "size": 4, "bitOrder": "BigEndian" } ]}S7 Writer
Sezione intitolata “S7 Writer”{ "type": "S7Writer", "config": { "endpoint": "192.168.0.1:102", "rack": 0, "slot": 2 }, "variables": [ { "key": "setpoint", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 100, "size": 4, "bitOrder": "BigEndian" } ]}Parametri di Configurazione
Sezione intitolata “Parametri di Configurazione”Endpoint
Sezione intitolata “Endpoint”Indirizzo IP PLC e porta (porta default è 102):
{ "endpoint": "192.168.0.1:102"}Rack e Slot
Sezione intitolata “Rack e Slot”Posizione fisica del modulo CPU:
{ "rack": 0, "slot": 2}Configurazioni comuni:
- S7-300: rack=0, slot=2
- S7-400: rack=0, slot=2 o 3
- S7-1200: rack=0, slot=1
- S7-1500: rack=0, slot=1
Frequenza di Polling
Sezione intitolata “Frequenza di Polling”Per i reader, intervallo in millisecondi:
{ "pollingRate": 1000}Aree di Memoria
Sezione intitolata “Aree di Memoria”DB (Data Blocks)
Sezione intitolata “DB (Data Blocks)”Area più comune per dati strutturati:
{ "key": "temperature", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 0, "size": 4}Richiede blockNumber per specificare quale DB.
M (Merkers/Flag)
Sezione intitolata “M (Merkers/Flag)”Memoria general-purpose:
{ "key": "flag_value", "dataType": "Word", "memoryArea": "M", "startIdx": 0, "size": 2}I (Inputs)
Sezione intitolata “I (Inputs)”Segnali di ingresso fisici (solo lettura):
{ "key": "sensor_input", "dataType": "Bool", "memoryArea": "I", "startIdx": 0, "size": 1}Q (Outputs)
Sezione intitolata “Q (Outputs)”Segnali di uscita fisici (lettura/scrittura):
{ "key": "motor_output", "dataType": "Bool", "memoryArea": "Q", "startIdx": 0, "size": 1}C (Counters)
Sezione intitolata “C (Counters)”Valori contatori:
{ "key": "production_count", "dataType": "Word", "memoryArea": "C", "startIdx": 0, "size": 2}Tipi di Dati
Sezione intitolata “Tipi di Dati”Bool (1 bit)
Sezione intitolata “Bool (1 bit)”Valore booleano:
{ "dataType": "Bool", "size": 1}Byte (8 bit)
Sezione intitolata “Byte (8 bit)”Intero senza segno 8-bit (0-255):
{ "dataType": "Byte", "size": 1}Word (16 bit)
Sezione intitolata “Word (16 bit)”Intero senza segno 16-bit (0-65535):
{ "dataType": "Word", "size": 2}Dword (32 bit)
Sezione intitolata “Dword (32 bit)”Intero senza segno 32-bit:
{ "dataType": "Dword", "size": 4}Int (16 bit con segno)
Sezione intitolata “Int (16 bit con segno)”Intero con segno 16-bit (-32768 a 32767):
{ "dataType": "Int", "size": 2}Dint (32 bit con segno)
Sezione intitolata “Dint (32 bit con segno)”Intero con segno 32-bit:
{ "dataType": "Dint", "size": 4}Real (32 bit float)
Sezione intitolata “Real (32 bit float)”Floating point 32-bit:
{ "dataType": "Real", "size": 4}Char (8 bit ASCII)
Sezione intitolata “Char (8 bit ASCII)”Carattere ASCII:
{ "dataType": "Char", "size": 1}Ordine Byte
Sezione intitolata “Ordine Byte”I PLC S7 usano ordine byte Big Endian per default:
{ "bitOrder": "BigEndian"}Struttura Variabile
Sezione intitolata “Struttura Variabile”Definizione variabile completa:
{ "key": "temperature", // Chiave payload Meddle "dataType": "Real", // Tipo dati S7 "memoryArea": "DB", // Area memoria "blockNumber": 1, // Numero DB (per area DB) "startIdx": 0, // Offset byte iniziale "size": 4, // Dimensione in byte "bitOrder": "BigEndian" // Ordine byte}Casi d’Uso Comuni
Sezione intitolata “Casi d’Uso Comuni”1. Monitoraggio Produzione
Sezione intitolata “1. Monitoraggio Produzione”{ "type": "S7Reader", "config": { "endpoint": "192.168.1.10:102", "pollingRate": 1000, "rack": 0, "slot": 2 }, "variables": [ { "key": "machine_status", "dataType": "Word", "memoryArea": "DB", "blockNumber": 10, "startIdx": 0, "size": 2, "bitOrder": "BigEndian" }, { "key": "production_count", "dataType": "Dint", "memoryArea": "DB", "blockNumber": 10, "startIdx": 2, "size": 4, "bitOrder": "BigEndian" }, { "key": "cycle_time", "dataType": "Real", "memoryArea": "DB", "blockNumber": 10, "startIdx": 6, "size": 4, "bitOrder": "BigEndian" } ]}2. Controllo Processo
Sezione intitolata “2. Controllo Processo”{ "type": "S7Writer", "config": { "endpoint": "192.168.1.10:102", "rack": 0, "slot": 2 }, "variables": [ { "key": "temperature_setpoint", "dataType": "Real", "memoryArea": "DB", "blockNumber": 20, "startIdx": 0, "size": 4, "bitOrder": "BigEndian" }, { "key": "enable_process", "dataType": "Bool", "memoryArea": "M", "startIdx": 0, "size": 1, "bitOrder": "BigEndian" } ]}3. Monitoraggio I/O Digitali
Sezione intitolata “3. Monitoraggio I/O Digitali”{ "type": "S7Reader", "config": { "endpoint": "192.168.1.10:102", "pollingRate": 500, "rack": 0, "slot": 2 }, "variables": [ { "key": "emergency_stop", "dataType": "Bool", "memoryArea": "I", "startIdx": 0, "size": 1, "bitOrder": "BigEndian" }, { "key": "motor_running", "dataType": "Bool", "memoryArea": "Q", "startIdx": 0, "size": 1, "bitOrder": "BigEndian" } ]}Risoluzione dei Problemi
Sezione intitolata “Risoluzione dei Problemi”Connessione Fallita
Sezione intitolata “Connessione Fallita”Soluzioni:
- Verifica indirizzo IP PLC e porta
- Controlla connettività di rete:
ping [plc-ip] - Assicurati che il PLC permetta connessioni esterne (controlla configurazione PLC)
- Verifica che i numeri rack e slot corrispondano alla configurazione PLC
- Controlla regole firewall (porta 102)
Accesso Negato
Sezione intitolata “Accesso Negato”Soluzioni:
- Controlla impostazioni protezione PLC
- Verifica che la comunicazione PUT/GET sia abilitata nel PLC
- Assicurati che non ci sia protezione password sul PLC
- Controlla se il PLC è in modalità RUN (alcune operazioni richiedono modalità STOP)
Valori Dati Errati
Sezione intitolata “Valori Dati Errati”Soluzioni:
- Verifica che
startIdx(offset byte) sia corretto - Controlla che
sizecorrisponda al tipo dati - Conferma
blockNumberper aree DB - Verifica
bitOrder(dovrebbe essere BigEndian per S7) - Usa TIA Portal o STEP 7 per verificare layout memoria
Prestazioni Lente
Sezione intitolata “Prestazioni Lente”Soluzioni:
- Aumenta
pollingRateper ridurre frequenza - Raggruppa indirizzi memoria consecutivi
- Riduci numero variabili
- Controlla latenza di rete
Best Practice
Sezione intitolata “Best Practice”- Usa Data Block: Organizza dati in DB per migliore struttura
- Documenta Layout Memoria: Mantieni una mappa della struttura DB
- Raggruppa Indirizzi Consecutivi: Più efficiente di letture sparse
- Testa Prima in Modalità STOP: Più sicuro per test iniziali
- Usa Tipi Dati Appropriati: Abbina esattamente i tipi dati del programma PLC
Limitazioni
Sezione intitolata “Limitazioni”Connettori Correlati
Sezione intitolata “Connettori Correlati”- OPC UA - Alternativa con supporto più ampio
- Modbus - Protocollo industriale alternativo
- Filter - Filtra dati S7
- InfluxDB Writer - Archivia dati S7