Anbindung der Siemens S7-1200 / S7-1500 an die Cloud über Eziwan
Diese Anleitung behandelt die vollständige Konfiguration für den Anschluss einer Siemens-S7-1200- oder S7-1500-SPS an die Eziwan-Plattform. Er umfasst die Konfigurationen für Modbus TCP (S7-1200 und S7-1500) und OPC-UA (nur S7-1500), modellspezifische Besonderheiten der CPUs sowie die Fehlerbehebung bei häufig auftretenden Problemen.
Kompatibilitätsübersicht nach Modell
Siemens S7-1200
| CPU | Min. Firmware | Modbus TCP | OPC-UA | Anmerkungen |
|---|---|---|---|---|
| CPU 1211C AC/DC/Relay | V4.0 | ✓ MB_SERVER | ✗ | 50 KB Programm, auf max. 50 Register beschränken |
| CPU 1211C DC/DC/DC | V4.0 | ✓ | ✗ | — |
| CPU 1212C | V4.0 | ✓ | ✗ | 75 KB Programm |
| CPU 1212FC | V4.0 | ✓ | ✗ | Fail-Safe-Version |
| CPU 1214C | V4.0 | ✓ | ✗ | 100 KB, empfohlen für die Überwachung |
| CPU 1214FC | V4.0 | ✓ | ✗ | Fail-Safe |
| CPU 1215C | V4.0 | ✓ | ✗ | 125 KB, 2 Ethernet-Anschlüsse |
| CPU 1217C | V4.0 | ✓ | ✗ | 150 KB, Hochgeschwindigkeits-E/A |
Empfehlung: Für Projekte mit intensiver Überwachung (> 50 Variablen, Abfrageintervall 1 s) sollte eine CPU 1214C oder höher verwendet werden. Die CPU 1211C bietet mit ihren 50 KB Programmspeicher nur wenig Platz für die FB MB_SERVER und die Daten.
Siemens S7-1500
| CPU | Min. Firmware-Version | Modbus TCP | OPC-UA | Anmerkungen |
|---|---|---|---|---|
| CPU 1511-1 PN | V2.0 | ✓ | ✓ V2.0 | Standard, 1 Mbit Programm |
| CPU 1513-1 PN | V2.0 | ✓ | ✓ | 300 KB Daten |
| CPU 1515-2 PN | V2.0 | ✓ | ✓ | 2 physikalische Ethernet-Ports |
| CPU 1516-3 PN/DP | V2.0 | ✓ | ✓ | Integrierter Profibus DP |
| CPU 1517-3 PN/DP | V2.0 | ✓ | ✓ | Hohe Leistung |
| CPU 1518-4 PN/DP | V2.0 | ✓ | ✓ | Spitzenmodell der S7-1500-Serie |
| CPU 1511F-1 PN | V2.0 | ✓ | ✓ | Ausfallsicher |
| ET 200SP CPU 1510SP | V2.0 | ✓ | ✓ | Kompakt, für kleine Schaltschränke |
Vorteil von OPC-UA gegenüber S7-1500: keine FB im Programm, keine Datenbank mit absolutem Zugriff. Die Variablen werden direkt über den OPC-UA-Namespace veröffentlicht – einfacher zu konfigurieren und robuster.
Siemens S7-300 und S7-400 (ältere Modelle)
| Modul | Protokoll | Anmerkungen |
|---|---|---|
| CPU 31x mit CP 343-1 Advanced | Modbus TCP (Firmware-Option) | CP 343-1 IT (6GK7343-1GX31) erforderlich |
| CPU 41x mit CP 443-1 Advanced | Modbus TCP | CP 443-1 IT (6GK7443-1GX30) |
| S7-300 mit IM 153-2 | Modbus RTU über RS-485-Gateway | Über den RS-485-Anschluss von Eziwan |
| Alle S7-300/400 | S7Comm (unverschlüsselt) | Nicht empfohlen, wird von Eziwan nicht unterstützt |
Das S7Comm-Protokoll (Port 102) der S7-300/400 wird von Eziwan aus Sicherheitsgründen nicht unterstützt: S7Comm verfügt über keine Authentifizierung und ist bekannten Angriffen ausgesetzt. Verwenden Sie Modbus TCP über CP 343-1 oder RS-485 Modbus RTU.
Modbus-TCP-Konfiguration auf der S7-1200
Netzwerkvoraussetzungen
- Statische IP-Adresse am Port X1 der CPU
- Das Eziwan-Gateway im selben Subnetz (oder VLAN-übergreifendes Routing bei getrennten VLANs)
- TCP-Port 502 zwischen dem Gateway und der CPU nicht gesperrt
Schritt 1 – Die IP-Adresse der CPU im TIA Portal konfigurieren
- Projektbaum → Doppelklick auf die CPU
- Eigenschaften → Registerkarte „PROFINET-Schnittstelle [X1]“
- „Ethernet-Adressen“ → DHCP deaktivieren, statische IP-Adresse eingeben
- Beispiel:
192.168.1.10 / 255.255.255.0 - Das Gateway-Feld leer lassen, wenn kein Inter-VLAN-Routing erforderlich ist
Schritt 2 – Erstellen des Datenblocks für MB_SERVER
Einen neuen Datenblock im TIA-Portal erstellen:
// Datenbank-Einstellungen
Nom : "Eziwan_DB"
Nummer: automatisch (z. B. DB10)
Type : Global DB
Optimierter Zugriff : DEAKTIVIERT ← KRITISCH
Der optimierte Zugriff muss deaktiviert werden. Deaktivieren Sie in den Eigenschaften der Datenbank das Kontrollkästchen „Optimized block access“. Andernfalls funktioniert der absolute Zugriff über die Speicheradresse (erforderlich für MB_SERVER) nicht. Dies ist die häufigste Fehlerursache bei der ersten Integration.
Aufbau der Datenbank:
DATA_BLOCK "Eziwan_DB"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
VAR
// Bereich für Holding-Register (500 16-Bit-Wörter)
// Erreichbar über Modbus FC=03, Adressen 0 bis 499
MB_HOLD_REG : ARRAY [0..499] OF WORD;
// Variables internes (non accessibles en Modbus)
MBStatus : WORD;
MBError : BOOL;
NewData : BOOL;
END_VAR
Schritt 3 – MB_SERVER in OB1 hinzufügen
// TCP-Anschlussblock (in einem FC oder direkt in OB1)
// Typ: TCON_IP_v4 (als statische Variable in einem FB instanziieren
// oder als statische Verbindungsdatenbank)
"ConnectDB".InterfaceId := 64; // Port X1 = immer 64 bei der S7-1200
"ConnectDB".ID := W#16#0001; // Verbindungs-ID (1 bis 0xFFF)
"ConnectDB".ConnectionType := 11; // 11 = TCP
"ConnectDB".ActiveEstablished := FALSE; // Server: Warten auf Verbindung
"ConnectDB".RemoteAddress.ADDR[1] := 0; // Alle IP-Adressen zulassen
"ConnectDB".RemoteAddress.ADDR[2] := 0;
"ConnectDB".RemoteAddress.ADDR[3] := 0;
"ConnectDB".RemoteAddress.ADDR[4] := 0;
"ConnectDB".RemotePort := 0; // Port source quelconque
"ConnectDB".LocalPort := 502; // Port Modbus TCP
// Aufruf des FB MB_SERVER (Instanz in einer Instanzdatenbank)
"MB_SERVER_DB"(
DISCONNECT := FALSE, // TRUE, um die Verbindung zu schließen
MB_HOLD_REG := "Eziwan_DB".MB_HOLD_REG,
CONNECT := "ConnectDB",
NDR => "Eziwan_DB".NewData, // TRUE, wenn neue Daten empfangen wurden
DR => #DataReady,
ERROR => "Eziwan_DB".MBError,
STATUS => "Eziwan_DB".MBStatus
);
Schritt 4 – Die Register vom Programm aus füllen
// In OB1 oder einem zyklischen OB (OB30, OB35...)
// Empfohlene Konvention:
// Registres 0-49 : variables analogiques
// Register 50–99: Zähler und Akkumulatoren
// Register 100–127: Status und Fehlercodes (Bitfelder)
// Analogwerte (×10 für 1 Dezimalstelle)
"Eziwan_DB".MB_HOLD_REG[0] := REAL_TO_UINT("GVL_Process".Temperature_Four * 10.0);
"Eziwan_DB".MB_HOLD_REG[1] := REAL_TO_UINT("GVL_Process".Debit_Ligne * 100.0);
"Eziwan_DB".MB_HOLD_REG[2] := REAL_TO_UINT("GVL_Process".Druck * 100,0);
// 32-Bit-Float-Werte in 2 Registern (sofern die Dezimalgenauigkeit mit ×10 oben ausreicht)
// MOVE zum Kopieren der Bytes verwenden
"Eziwan_DB".MB_HOLD_REG[10] := WORD("GVL_Analog".Debit_MSW); // Poids fort
"Eziwan_DB".MB_HOLD_REG[11] := WORD("GVL_Analog".Debit_LSW); // Poids faible
// Status-Bitfeld (16 Boolesche Werte in einem einzigen Register)
"Eziwan_DB".MB_HOLD_REG[100] := 0; // Reset
IF "GVL_Status".Pompe_1_Marche THEN "Eziwan_DB".MB_HOLD_REG[100] OR= 16#0001; END_IF;
IF "GVL_Status".Pompe_2_Marche THEN "Eziwan_DB".MB_HOLD_REG[100] OR= 16#0002; END_IF;
IF "GVL_Alarms".Defaut_Thermique THEN "Eziwan_DB".MB_HOLD_REG[100] OR= 16#0004; END_IF;
IF "GVL_Status".Arret_Urgence THEN "Eziwan_DB".MB_HOLD_REG[100] OR= 16#0008; END_IF;
// Produktionszähler (int32 in 2 Registern)
"Eziwan_DB".MB_HOLD_REG[50] := INT_TO_WORD("GVL_Count".Pieces_SHR 16); // MSW
"Eziwan_DB".MB_HOLD_REG[51] := INT_TO_WORD("GVL_Count".Pieces_AND 16#FFFF); // LSW
OPC-UA-Konfiguration auf der S7-1500 (empfohlen)
Der Vorteil von OPC-UA gegenüber S7-1500: keine FB im Programm. Die Variablen werden direkt aus dem OPC-UA-Namespace veröffentlicht, ohne dass der SPS-Code geändert werden muss.
OPC-UA in TIA Portal V16+ aktivieren
- CPU-Eigenschaften → „OPC UA“ → „Server“ → „OPC UA-Server aktivieren“ ankreuzen
- Port: 4840 (OPC-UA-Standard oder 48010/48020 je nach Netzwerkanforderungen)
- Sicherheit: Wählen Sie „Basic256Sha256 – Sign & Encrypt“ (SL2+-Stufe empfohlen)
- Authentifizierung: „Benutzername/Passwort“ oder „Zertifikat“ aktivieren („Anonym“ deaktivieren)
Die offengelegten Variablen konfigurieren
Erstellen Sie im TIA Portal OPC-UA-Zugangspunkte:
- Im Datenblock oder unter den PLC-Tags → die Variablen auswählen, die verfügbar gemacht werden sollen
- Rechtsklick → „Properties“ → „Accessible from HMI/OPC UA“ aktivieren
- Die Variablen erscheinen im OPC-UA-Adressraum unter
ns=3;s=<NomVariable>
Konfiguration in Eziwan für OPC-UA
Erstellen Sie im Dashboard das Gerät S7-1500 mit dem OPC-UA-Protokoll:
equipement:
protocole: opc_ua
endpoint: "opc.tcp://192.168.1.10:4840"
securite: "Basic256Sha256"
authentification: "username"
identifiant: "eziwan"
mot_de_passe: "votre-mot-de-passe"
Modbus-TCP-Verbindungstest
Schnelltest mit Python
from pymodbus.client import ModbusTcpClient
# Test S7-1200 avec MB_SERVER
client = ModbusTcpClient("192.168.1.10", port=502, timeout=3)
if client.connect():
# Geräte-ID = 1 für S7-1200 mit MB_SERVER
result = client.read_holding_registers(address=0, count=10, slave=1)
if not result.isError():
print(f"✓ Connexion OK. Registres 0-9 : {result.registers}")
else:
print(f"✗ Erreur Modbus : exception_code={getattr(result, 'exception_code', '?')}")
else:
print("✗ TCP-Verbindung nicht möglich — IP prüfen und sicherstellen, dass das S7-Programm läuft")
client.close()
Überprüfung des MB_SERVER-Status
Überwachen Sie im TIA Portal die Statusvariablen der Datenbank:
"Eziwan_DB".MBStatus = ?
Valeur Signification
0x0000 Keine Verbindung hergestellt (wartet)
0x7002 Verbindung hergestellt, warte auf Anfrage
0x7003 Anfrage wird gerade bearbeitet
0x8XYZ Erreur (voir tableau codes erreur TIA Portal)
Fehlerbehebung
| Symptom | Mögliche Ursache | Lösung |
|---|---|---|
| TCP-Verbindung abgelehnt | Programm nicht geladen oder CPU im STOP-Modus | CPU in den RUN-Modus versetzen, prüfen, ob OB1 ausgeführt wird |
| MB_STATUS 0x8090 | Optimierter DB-Zugriff aktiviert | S7_Optimized_Access deaktivieren |
| Modbus-Ausnahme 01 | FB MB_SERVER im Programm nicht aufgerufen | Überprüfen, ob MB_SERVER tatsächlich in OB1 enthalten ist |
| Modbus-Ausnahme 02 | Adresse > Größe des Arrays MB_HOLD_REG | Vergrößern Sie das Array oder überprüfen Sie die Adresse |
| Alle Werte auf 0 | Prozessvariablen nicht in MB_HOLD_REG kopiert | Überprüfen Sie den Kopierabschnitt in OB1 |
| MB_STATUS 0x80C3 | Verbindungs-ID bereits verwendet | Verbindungs-ID in TCON_IP_v4 ändern |
| Falsche REAL-Werte | Falsche Byte-Reihenfolge | Versuchen Sie „float32_abcd“ statt „float32_cdab“ in Eziwan |
| Zufällige Trennung | Timeout zu kurz eingestellt | Timeout in den Verbindungsparametern erhöhen |
| OPC-UA: Zertifikat abgelehnt | Eziwan-Zertifikat nicht vertrauenswürdig | Zertifikat in TIA Portal > Server > Trusted Clients als vertrauenswürdig markieren |
- So stellen Sie eine Fernverbindung zu einer S7 her, ohne einen Port zu öffnen – VPN-Architektur und Sicherheit
- Modbus-TCP/IP-Leitfaden – Frame-Struktur und Python-Code
- Technischer Support → – Antwort innerhalb von 4 Arbeitsstunden
Häufig gestellte Fragen
Was ist der Unterschied zwischen S7-1200 und S7-1500 hinsichtlich der Cloud-Anbindung?
Beide unterstützen Modbus TCP und OPC-UA (nativer OPC-UA-Server auf der S7-1500, Runtime-Lizenz auf der S7-1200 je nach Firmware). Die S7-1500 bietet mehr gleichzeitige OPC-UA-Knoten; für eine einfache Datenübertragung reicht Modbus TCP bei beiden aus.
Muss man PUT/GET im TIA Portal aktivieren?
Gilt nur für native S7-Kommunikation. Bei Modbus-TCP über die MB_SERVER-Blöcke oder bei OPC-UA ist PUT/GET nicht erforderlich – aus Sicherheitsgründen ist dies sogar vorzuziehen.
Modbus TCP oder OPC-UA: Was sollte man bei einer S7 wählen?
Modbus TCP ist einfacher zu implementieren (Zuordnung von Datenbanken zu Registern); OPC-UA bietet Typisierung, Struktur und Sicherheit durch Zertifikate. Für ein Neuprojekt auf S7-1500 wird OPC-UA empfohlen; für eine schnelle Nachrüstung Modbus TCP.
Ist ein Fernzugriff auf das TIA Portal möglich?
Ja, über den VPN-Tunnel des Gateways: Der Engineering-Arbeitsplatz verbindet sich mit dem Netzwerk der Maschine, und das TIA Portal funktioniert wie lokal (Online, Diagnose, Laden), ohne dass die Steuerung im Internet sichtbar ist.
Weiterführende Ressourcen
- Fernzugriff auf Siemens S7-SPS – Sicherer Fernzugriff über das TIA-Portal
- Eine S7 mit der Cloud verbinden – Schritt-für-Schritt-Anleitung
- OPC-UA-Integration – Detaillierte Server-/Client-Konfiguration
- OPC UA in die industrielle Cloud – Die OPC-UA-Erfassungslösung
- Eine SPS mit der Cloud verbinden — alle unterstützten Marken