Siemens S7-Konnektor
Übersicht
Abschnitt betitelt „Übersicht“Der Siemens S7-Konnektor ermöglicht die direkte Kommunikation mit Siemens S7-Serie SPSen ohne OPC UA oder andere Middleware.
Konnektor-Typen:
S7Reader- Daten von S7-SPSen lesenS7Writer- Daten auf S7-SPSen schreiben
Unterstützte SPSen:
- S7-300
- S7-400
- S7-1200
- S7-1500
Basiskonfiguration
Abschnitt betitelt „Basiskonfiguration“S7 Reader
Abschnitt betitelt „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
Abschnitt betitelt „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" } ]}Konfigurationsparameter
Abschnitt betitelt „Konfigurationsparameter“Endpoint
Abschnitt betitelt „Endpoint“SPS-IP-Adresse und Port (Standardport ist 102):
{ "endpoint": "192.168.0.1:102"}Rack und Slot
Abschnitt betitelt „Rack und Slot“Physische Position des CPU-Moduls:
{ "rack": 0, "slot": 2}Häufige Konfigurationen:
- S7-300: rack=0, slot=2
- S7-400: rack=0, slot=2 oder 3
- S7-1200: rack=0, slot=1
- S7-1500: rack=0, slot=1
Abfragerate
Abschnitt betitelt „Abfragerate“Für Reader Intervall in Millisekunden:
{ "pollingRate": 1000}Speicherbereiche
Abschnitt betitelt „Speicherbereiche“DB (Datenbausteine)
Abschnitt betitelt „DB (Datenbausteine)“Häufigster Bereich für strukturierte Daten:
{ "key": "temperature", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 0, "size": 4}Erfordert blockNumber zur Angabe, welcher DB.
M (Merker/Flags)
Abschnitt betitelt „M (Merker/Flags)“Allzweckspeicher:
{ "key": "flag_value", "dataType": "Word", "memoryArea": "M", "startIdx": 0, "size": 2}I (Inputs)
Abschnitt betitelt „I (Inputs)“Physische Eingangssignale (nur lesen):
{ "key": "sensor_input", "dataType": "Bool", "memoryArea": "I", "startIdx": 0, "size": 1}Q (Outputs)
Abschnitt betitelt „Q (Outputs)“Physische Ausgangssignale (lesen/schreiben):
{ "key": "motor_output", "dataType": "Bool", "memoryArea": "Q", "startIdx": 0, "size": 1}C (Counters)
Abschnitt betitelt „C (Counters)“Zählerwerte:
{ "key": "production_count", "dataType": "Word", "memoryArea": "C", "startIdx": 0, "size": 2}Datentypen
Abschnitt betitelt „Datentypen“Bool (1 Bit)
Abschnitt betitelt „Bool (1 Bit)“Boolescher Wert:
{ "dataType": "Bool", "size": 1}Byte (8 Bit)
Abschnitt betitelt „Byte (8 Bit)“8-bit unsigned integer (0-255):
{ "dataType": "Byte", "size": 1}Word (16 Bit)
Abschnitt betitelt „Word (16 Bit)“16-bit unsigned integer (0-65535):
{ "dataType": "Word", "size": 2}Dword (32 Bit)
Abschnitt betitelt „Dword (32 Bit)“32-bit unsigned integer:
{ "dataType": "Dword", "size": 4}Int (16 Bit signed)
Abschnitt betitelt „Int (16 Bit signed)“16-bit signed integer (-32768 bis 32767):
{ "dataType": "Int", "size": 2}Dint (32 Bit signed)
Abschnitt betitelt „Dint (32 Bit signed)“32-bit signed integer:
{ "dataType": "Dint", "size": 4}Real (32 Bit float)
Abschnitt betitelt „Real (32 Bit float)“32-bit floating point:
{ "dataType": "Real", "size": 4}Char (8 Bit ASCII)
Abschnitt betitelt „Char (8 Bit ASCII)“ASCII-Zeichen:
{ "dataType": "Char", "size": 1}Byte-Reihenfolge
Abschnitt betitelt „Byte-Reihenfolge“S7-SPSen verwenden standardmäßig Big Endian-Byte-Reihenfolge:
{ "bitOrder": "BigEndian"}Variablenstruktur
Abschnitt betitelt „Variablenstruktur“Vollständige Variablendefinition:
{ "key": "temperature", // Meddle-Payload-Schlüssel "dataType": "Real", // S7-Datentyp "memoryArea": "DB", // Speicherbereich "blockNumber": 1, // DB-Nummer (für DB-Bereich) "startIdx": 0, // Start-Byte-Offset "size": 4, // Größe in Bytes "bitOrder": "BigEndian" // Byte-Reihenfolge}Häufige Anwendungsfälle
Abschnitt betitelt „Häufige Anwendungsfälle“1. Produktionsüberwachung
Abschnitt betitelt „1. Produktionsüberwachung“{ "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. Prozesssteuerung
Abschnitt betitelt „2. Prozesssteuerung“{ "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. Digitale I/O-Überwachung
Abschnitt betitelt „3. Digitale I/O-Überwachung“{ "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" } ]}Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Verbindung fehlgeschlagen
Abschnitt betitelt „Verbindung fehlgeschlagen“Lösungen:
- SPS-IP-Adresse und Port überprüfen
- Netzwerkkonnektivität prüfen:
ping [plc-ip] - Sicherstellen, dass SPS externe Verbindungen erlaubt (SPS-Konfiguration prüfen)
- Rack- und Slot-Nummern mit SPS-Konfiguration abgleichen
- Firewall-Regeln prüfen (Port 102)
Zugriff verweigert
Abschnitt betitelt „Zugriff verweigert“Lösungen:
- SPS-Schutzeinstellungen prüfen
- Sicherstellen, dass PUT/GET-Kommunikation in der SPS aktiviert ist
- Prüfen, ob SPS keinen Passwortschutz hat
- Prüfen, ob SPS im RUN-Modus ist (einige Operationen erfordern STOP-Modus)
Falsche Datenwerte
Abschnitt betitelt „Falsche Datenwerte“Lösungen:
startIdx(Byte-Offset) überprüfensizemit Datentyp abgleichenblockNumberfür DB-Bereiche bestätigenbitOrderüberprüfen (sollte BigEndian für S7 sein)- TIA Portal oder STEP 7 zur Überprüfung des Speicherlayouts verwenden
Langsame Leistung
Abschnitt betitelt „Langsame Leistung“Lösungen:
pollingRateerhöhen, um Frequenz zu reduzieren- Aufeinanderfolgende Speicheradressen gruppieren
- Anzahl der Variablen reduzieren
- Netzwerklatenz prüfen
Best Practices
Abschnitt betitelt „Best Practices“- Datenbausteine verwenden: Daten in DBs für bessere Struktur organisieren
- Speicherlayout dokumentieren: Karte der DB-Struktur führen
- Aufeinanderfolgende Adressen: Effizienter als verstreute Lesungen
- STOP-Modus: Sicherer für erste Tests
- Datentypen: Genau mit SPS-Programmtypen abgleichen
Einschränkungen
Abschnitt betitelt „Einschränkungen“Verwandte Konnektoren
Abschnitt betitelt „Verwandte Konnektoren“- OPC UA - Alternative mit breiterer Unterstützung
- Modbus - Alternatives industrielles Protokoll
- Filter - S7-Daten filtern
- InfluxDB Writer - S7-Daten speichern