Aansluiting van Siemens S7-1200 / S7-1500 op de cloud via Eziwan
Deze handleiding behandelt de volledige configuratie voor het aansluiten van een Siemens S7-1200- of S7-1500-PLC op het Eziwan-platform. De handleiding bevat de Modbus TCP-configuraties (S7-1200 en S7-1500) en OPC-UA-configuraties (alleen S7-1500), de specifieke kenmerken per CPU-model en het oplossen van veelvoorkomende problemen.
Compatibiliteitsoverzicht per model
Siemens S7-1200
| CPU | Min. firmware | Modbus TCP | OPC-UA | Opmerkingen |
|---|---|---|---|---|
| CPU 1211C AC/DC/Relay | V4.0 | ✓ MB_SERVER | ✗ | 50 KB programma, beperkt tot max. 50 registers |
| CPU 1211C DC/DC/DC | V4.0 | ✓ | ✗ | — |
| CPU 1212C | V4.0 | ✓ | ✗ | 75 KB programma |
| CPU 1212FC | V4.0 | ✓ | ✗ | Fail-safe-versie |
| CPU 1214C | V4.0 | ✓ | ✗ | 100 KB, aanbevolen voor bewaking |
| CPU 1214FC | V4.0 | ✓ | ✗ | Fail-safe |
| CPU 1215C | V4.0 | ✓ | ✗ | 125 KB, 2 Ethernet-poorten |
| CPU 1217C | V4.0 | ✓ | ✗ | 150 KB, hoge snelheid I/O |
Aanbeveling: gebruik voor projecten met intensieve monitoring (> 50 variabelen, polling 1 s) een CPU 1214C of hoger. De CPU 1211C biedt met zijn 50 KB programmageheugen weinig ruimte voor de FB’s MB_SERVER en de gegevens.
Siemens S7-1500
| CPU | Min. firmware | Modbus TCP | OPC-UA | Opmerkingen |
|---|---|---|---|---|
| CPU 1511-1 PN | V2.0 | ✓ | ✓ V2.0 | Standaard, 1 Mbit programma |
| CPU 1513-1 PN | V2.0 | ✓ | ✓ | 300 KB gegevens |
| CPU 1515-2 PN | V2.0 | ✓ | ✓ | 2 fysieke Ethernet-poorten |
| CPU 1516-3 PN/DP | V2.0 | ✓ | ✓ | Geïntegreerde Profibus DP |
| CPU 1517-3 PN/DP | V2.0 | ✓ | ✓ | Hoge prestaties |
| CPU 1518-4 PN/DP | V2.0 | ✓ | ✓ | Topmodel S7-1500 |
| CPU 1511F-1 PN | V2.0 | ✓ | ✓ | Fail-safe |
| ET 200SP CPU 1510SP | V2.0 | ✓ | ✓ | Compact, voor kleine schakelkasten |
Voordeel van OPC-UA ten opzichte van S7-1500: geen FB’s in het programma, geen DB met absolute toegang. De variabelen worden rechtstreeks gepubliceerd via de OPC-UA-namespace — eenvoudiger te configureren en robuuster.
Siemens S7-300 en S7-400 (verouderde modellen)
| Module | Protocol | Opmerkingen |
|---|---|---|
| CPU 31x met CP 343-1 Advanced | Modbus TCP (firmware-optie) | CP 343-1 IT (6GK7343-1GX31) vereist |
| CPU 41x met CP 443-1 Advanced | Modbus TCP | CP 443-1 IT (6GK7443-1GX30) |
| S7-300 met IM 153-2 | Modbus RTU via RS-485-gateway | Via Eziwan RS-485-poort |
| Alle S7-300/400 | S7Comm (niet beveiligd) | Afgeraden, niet ondersteund door Eziwan |
Het S7Comm-protocol (poort 102) van de S7-300/400 wordt om veiligheidsredenen niet ondersteund door Eziwan: S7Comm kent geen authenticatie en is kwetsbaar voor bekende aanvallen. Gebruik Modbus TCP via CP 343-1 of RS-485 Modbus RTU.
Modbus TCP-configuratie op de S7-1200
Netwerkvereisten
- Statisch IP-adres op poort X1 van de CPU
- De Eziwan-gateway in hetzelfde subnet (of inter-VLAN-routing bij afzonderlijke VLAN’s)
- TCP-poort 502 niet geblokkeerd tussen de gateway en de CPU
Stap 1 — Het IP-adres van de CPU configureren in TIA Portal
- Projectboom → dubbelklik op de CPU
- Eigenschappen → tabblad "PROFINET-interface [X1]"
- "Ethernet-adressen" → DHCP uitschakelen, het statische IP-adres invoeren
- Voorbeeld:
192.168.1.10 / 255.255.255.0 - Laat het gateway-veld leeg als er geen inter-VLAN-routing is
Stap 2 — Het gegevensblok voor MB_SERVER aanmaken
Een nieuw gegevensblok aanmaken in TIA Portal:
// Database-instellingen
Nom : "Eziwan_DB"
Nummer: automatisch (bijv. DB10)
Type : Global DB
Geoptimaliseerde toegang : UIT ← KRITIEK
Geoptimaliseerde toegang moet worden uitgeschakeld. Schakel in de eigenschappen van de database het vinkje bij "Optimized block access" uit. Zonder deze instelling werkt de absolute toegang via het geheugenadres (nodig voor MB_SERVER) niet. Dit is de belangrijkste oorzaak van fouten bij een eerste integratie.
Structuur van de database:
DATA_BLOCK "Eziwan_DB"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
VAR
// Geheugengebied voor registers (500 woorden van 16 bits)
// Toegankelijk via Modbus FC=03, adressen 0 tot en met 499
MB_HOLD_REG : ARRAY [0..499] OF WORD;
// Variables internes (non accessibles en Modbus)
MBStatus : WORD;
MBError : BOOL;
NewData : BOOL;
END_VAR
Stap 3 — MB_SERVER toevoegen aan OB1
// TCP-verbindingsblok (in een FC of rechtstreeks in OB1)
// Type: TCON_IP_v4 (als statische variabele in een FB instantiëren)
// of als statische verbindingsdatabase)
"ConnectDB".InterfaceId := 64; // Poort X1 = altijd 64 op de S7-1200
"ConnectDB".ID := W#16#0001; // Verbindings-ID (1 tot 0xFFF)
"ConnectDB".ConnectionType := 11; // 11 = TCP
"ConnectDB".ActiveEstablished := FALSE; // Server: wacht op verbinding
"ConnectDB".RemoteAddress.ADDR[1] := 0; // Alle IP-adressen toestaan
"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
// Oproep van de FB MB_SERVER (instantie in een instantiedatabase)
"MB_SERVER_DB"(
DISCONNECT := FALSE, // TRUE om de verbinding te verbreken
MB_HOLD_REG := "Eziwan_DB".MB_HOLD_REG,
CONNECT := "ConnectDB",
NDR => "Eziwan_DB".NewData, // TRUE als er nieuwe gegevens zijn ontvangen
DR => #DataReady,
ERROR => "Eziwan_DB".MBError,
STATUS => "Eziwan_DB".MBStatus
);
Stap 4 — De registers vanuit het programma vullen
// In OB1 of een cyclische OB (OB30, OB35...)
// Aanbevolen conventie:
// Registres 0-49 : variables analogiques
// Registers 50-99: tellers en accumulatoren
// Registers 100-127: statussen en foutcodes (bitvelden)
// Analoge waarden (×10 voor 1 decimaal)
"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".Druk * 100,0);
// 32-bits float in 2 registers (indien de decimale nauwkeurigheid met ×10 hierboven voldoende is)
// Gebruik MOVE om de bytes te kopiëren
"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
// Statusbitveld (16 booleaanse waarden in één 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;
// Productieteller (int32 verdeeld over 2 registers)
"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-configuratie op S7-1500 (aanbevolen)
Het voordeel van OPC-UA ten opzichte van S7-1500: geen FB's in het programma. De variabelen worden rechtstreeks vanuit de OPC-UA-namespace gepubliceerd, zonder dat de PLC-code hoeft te worden aangepast.
OPC-UA inschakelen in TIA Portal V16+
- CPU-eigenschappen → "OPC UA" → "Server" → vink "OPC UA-server activeren" aan
- Poort: 4840 (OPC-UA-standaard, of 48010/48020 afhankelijk van netwerkbeperkingen)
- Beveiliging: kies "Basic256Sha256 - Sign & Encrypt" (SL2+-niveau aanbevolen)
- Authenticatie: schakel "Gebruikersnaam/Wachtwoord" of "Certificaat" in (schakel "Anoniem" uit)
De blootgestelde variabelen configureren
Maak in TIA Portal OPC UA Access Points aan:
- In het gegevensblok of de PLC-tags → selecteer de variabelen die je wilt weergeven
- Rechtsklikken → "Properties" → schakel "Accessible from HMI/OPC UA" in
- De variabelen verschijnen in de OPC UA-adresruimte onder
ns=3;s=<NomVariable>
Configuratie in Eziwan voor OPC-UA
Maak in het dashboard de S7-1500-apparatuur aan met het OPC-UA-protocol:
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-verbindingstest
Snelle test vanuit 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():
# Unit-ID = 1 voor S7-1200 met 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-verbinding mislukt — controleer het IP-adres en of het S7-programma draait")
client.close()
De status van MB_SERVER controleren
Controleer in TIA Portal de statusvariabelen van de database:
"Eziwan_DB".MBStatus = ?
Valeur Signification
0x0000 Geen verbinding tot stand gebracht (in afwachting)
0x7002 Verbinding tot stand gebracht, wachten op verzoek
0x7003 Verzoek wordt momenteel verwerkt
0x8XYZ Erreur (voir tableau codes erreur TIA Portal)
Probleemoplossing
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| TCP-verbinding geweigerd | Programma niet geladen of CPU in STOP-modus | Zet CPU in RUN-modus, controleer of OB1 wordt uitgevoerd |
| MB_STATUS 0x8090 | Geoptimaliseerde DB-toegang ingeschakeld | Schakel S7_Optimized_Access uit |
| Modbus-uitzondering 01 | FB MB_SERVER niet aangeroepen in het programma | Controleer of MB_SERVER zich in OB1 bevindt |
| Modbus-uitzondering 02 | Adres > grootte van de MB_HOLD_REG-array | Vergroot de grootte van de array of controleer het adres |
| Alle waarden op 0 | Procesvariabelen niet gekopieerd naar MB_HOLD_REG | Controleer het kopieergedeelte in OB1 |
| MB_STATUS 0x80C3 | Verbindings-ID al in gebruik | Wijzig de verbindings-ID in TCON_IP_v4 |
| Onjuiste REAL-waarden | Verkeerde bytevolgorde | Probeer float32_abcd versus float32_cdab in Eziwan |
| Willekeurige verbroken verbinding | Time-out te kort ingesteld | Verhoog de time-out in de verbindingsinstellingen |
| OPC-UA: certificaat afgewezen | Eziwan-certificaat niet goedgekeurd | Keur het certificaat goed in TIA Portal > Server > Trusted Clients |
- Hoe een S7 op afstand verbinden zonder poorten te openen — VPN-architectuur en beveiliging
- Modbus TCP/IP-handleiding — framestructuur en Python-code
- Technische ondersteuning → — antwoord binnen 4 werkuren
Veelgestelde vragen
Wat is het verschil tussen de S7-1200 en de S7-1500 wat betreft de cloudverbinding?
Beide ondersteunen Modbus TCP en OPC-UA (native OPC-UA-server op de S7-1500, runtime-licentie op de S7-1200, afhankelijk van de firmware). De S7-1500 biedt meer gelijktijdige OPC-UA-knooppunten; voor eenvoudige gegevensoverdracht volstaat Modbus TCP op beide.
Moet PUT/GET in TIA Portal worden ingeschakeld?
Alleen voor native S7-communicatie. Voor Modbus TCP via de MB_SERVER-blokken of voor OPC-UA is PUT/GET niet vereist — dit heeft overigens de voorkeur vanuit veiligheidsoogpunt.
Modbus TCP of OPC-UA: wat kies je bij een S7?
Modbus TCP is eenvoudiger te implementeren (toewijzing van databases aan registers); OPC-UA biedt typecontrole, structuur en beveiliging via certificaten. Voor een nieuw project op de S7-1500 wordt OPC-UA aanbevolen; voor een snelle retrofit is Modbus TCP de beste keuze.
Is toegang tot TIA Portal op afstand mogelijk?
Ja, via de VPN-tunnel van de gateway: de engineeringwerkplek maakt verbinding met het netwerk van de machine en TIA Portal werkt alsof het lokaal is (online, diagnose, laden), zonder dat de PLC aan het internet wordt blootgesteld.
Gerelateerde bronnen
- Toegang op afstand tot Siemens S7-PLC — beveiligde toegang op afstand via TIA Portal
- Een S7 verbinden met de cloud — het stapsgewijze artikel
- OPC-UA-integratie — gedetailleerde server-/clientconfiguratie
- OPC UA naar de industriële cloud — de OPC-UA-gegevensverzamelingoplossing
- Een PLC verbinden met de cloud — alle ondersteunde merken