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

CPUMin. FirmwareModbus TCPOPC-UAAnmerkungen
CPU 1211C AC/DC/RelayV4.0✓ MB_SERVER50 KB Programm, auf max. 50 Register beschränken
CPU 1211C DC/DC/DCV4.0
CPU 1212CV4.075 KB Programm
CPU 1212FCV4.0Fail-Safe-Version
CPU 1214CV4.0100 KB, empfohlen für die Überwachung
CPU 1214FCV4.0Fail-Safe
CPU 1215CV4.0125 KB, 2 Ethernet-Anschlüsse
CPU 1217CV4.0150 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

CPUMin. Firmware-VersionModbus TCPOPC-UAAnmerkungen
CPU 1511-1 PNV2.0✓ V2.0Standard, 1 Mbit Programm
CPU 1513-1 PNV2.0300 KB Daten
CPU 1515-2 PNV2.02 physikalische Ethernet-Ports
CPU 1516-3 PN/DPV2.0Integrierter Profibus DP
CPU 1517-3 PN/DPV2.0Hohe Leistung
CPU 1518-4 PN/DPV2.0Spitzenmodell der S7-1500-Serie
CPU 1511F-1 PNV2.0Ausfallsicher
ET 200SP CPU 1510SPV2.0Kompakt, 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)

ModulProtokollAnmerkungen
CPU 31x mit CP 343-1 AdvancedModbus TCP (Firmware-Option)CP 343-1 IT (6GK7343-1GX31) erforderlich
CPU 41x mit CP 443-1 AdvancedModbus TCPCP 443-1 IT (6GK7443-1GX30)
S7-300 mit IM 153-2Modbus RTU über RS-485-GatewayÜber den RS-485-Anschluss von Eziwan
Alle S7-300/400S7Comm (unverschlüsselt)Nicht empfohlen, wird von Eziwan nicht unterstützt
warnung

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

  1. Projektbaum → Doppelklick auf die CPU
  2. Eigenschaften → Registerkarte „PROFINET-Schnittstelle [X1]“
  3. „Ethernet-Adressen“ → DHCP deaktivieren, statische IP-Adresse eingeben
  4. Beispiel: 192.168.1.10 / 255.255.255.0
  5. 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
warnung

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

  1. CPU-Eigenschaften → „OPC UA“„Server“„OPC UA-Server aktivieren“ ankreuzen
  2. Port: 4840 (OPC-UA-Standard oder 48010/48020 je nach Netzwerkanforderungen)
  3. Sicherheit: Wählen Sie „Basic256Sha256 – Sign & Encrypt“ (SL2+-Stufe empfohlen)
  4. Authentifizierung: „Benutzername/Passwort“ oder „Zertifikat“ aktivieren („Anonym“ deaktivieren)

Die offengelegten Variablen konfigurieren

Erstellen Sie im TIA Portal OPC-UA-Zugangspunkte:

  1. Im Datenblock oder unter den PLC-Tags → die Variablen auswählen, die verfügbar gemacht werden sollen
  2. Rechtsklick → „Properties“„Accessible from HMI/OPC UA“ aktivieren
  3. 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

SymptomMögliche UrsacheLösung
TCP-Verbindung abgelehntProgramm nicht geladen oder CPU im STOP-ModusCPU in den RUN-Modus versetzen, prüfen, ob OB1 ausgeführt wird
MB_STATUS 0x8090Optimierter DB-Zugriff aktiviertS7_Optimized_Access deaktivieren
Modbus-Ausnahme 01FB MB_SERVER im Programm nicht aufgerufenÜberprüfen, ob MB_SERVER tatsächlich in OB1 enthalten ist
Modbus-Ausnahme 02Adresse > Größe des Arrays MB_HOLD_REGVergrößern Sie das Array oder überprüfen Sie die Adresse
Alle Werte auf 0Prozessvariablen nicht in MB_HOLD_REG kopiertÜberprüfen Sie den Kopierabschnitt in OB1
MB_STATUS 0x80C3Verbindungs-ID bereits verwendetVerbindungs-ID in TCON_IP_v4 ändern
Falsche REAL-WerteFalsche Byte-ReihenfolgeVersuchen Sie „float32_abcd“ statt „float32_cdab“ in Eziwan
Zufällige TrennungTimeout zu kurz eingestelltTimeout in den Verbindungsparametern erhöhen
OPC-UA: Zertifikat abgelehntEziwan-Zertifikat nicht vertrauenswürdigZertifikat in TIA Portal > Server > Trusted Clients als vertrauenswürdig markieren

👉 Weitere Ressourcen

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