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

CPUMin. firmwareModbus TCPOPC-UAOpmerkingen
CPU 1211C AC/DC/RelayV4.0✓ MB_SERVER50 KB programma, beperkt tot max. 50 registers
CPU 1211C DC/DC/DCV4.0
CPU 1212CV4.075 KB programma
CPU 1212FCV4.0Fail-safe-versie
CPU 1214CV4.0100 KB, aanbevolen voor bewaking
CPU 1214FCV4.0Fail-safe
CPU 1215CV4.0125 KB, 2 Ethernet-poorten
CPU 1217CV4.0150 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

CPUMin. firmwareModbus TCPOPC-UAOpmerkingen
CPU 1511-1 PNV2.0✓ V2.0Standaard, 1 Mbit programma
CPU 1513-1 PNV2.0300 KB gegevens
CPU 1515-2 PNV2.02 fysieke Ethernet-poorten
CPU 1516-3 PN/DPV2.0Geïntegreerde Profibus DP
CPU 1517-3 PN/DPV2.0Hoge prestaties
CPU 1518-4 PN/DPV2.0Topmodel S7-1500
CPU 1511F-1 PNV2.0Fail-safe
ET 200SP CPU 1510SPV2.0Compact, 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)

ModuleProtocolOpmerkingen
CPU 31x met CP 343-1 AdvancedModbus TCP (firmware-optie)CP 343-1 IT (6GK7343-1GX31) vereist
CPU 41x met CP 443-1 AdvancedModbus TCPCP 443-1 IT (6GK7443-1GX30)
S7-300 met IM 153-2Modbus RTU via RS-485-gatewayVia Eziwan RS-485-poort
Alle S7-300/400S7Comm (niet beveiligd)Afgeraden, niet ondersteund door Eziwan
waarschuwing

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

  1. Projectboom → dubbelklik op de CPU
  2. Eigenschappen → tabblad "PROFINET-interface [X1]"
  3. "Ethernet-adressen" → DHCP uitschakelen, het statische IP-adres invoeren
  4. Voorbeeld: 192.168.1.10 / 255.255.255.0
  5. 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
waarschuwing

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+

  1. CPU-eigenschappen → "OPC UA""Server" → vink "OPC UA-server activeren" aan
  2. Poort: 4840 (OPC-UA-standaard, of 48010/48020 afhankelijk van netwerkbeperkingen)
  3. Beveiliging: kies "Basic256Sha256 - Sign & Encrypt" (SL2+-niveau aanbevolen)
  4. Authenticatie: schakel "Gebruikersnaam/Wachtwoord" of "Certificaat" in (schakel "Anoniem" uit)

De blootgestelde variabelen configureren

Maak in TIA Portal OPC UA Access Points aan:

  1. In het gegevensblok of de PLC-tags → selecteer de variabelen die je wilt weergeven
  2. Rechtsklikken → "Properties" → schakel "Accessible from HMI/OPC UA" in
  3. 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

SymptoomWaarschijnlijke oorzaakOplossing
TCP-verbinding geweigerdProgramma niet geladen of CPU in STOP-modusZet CPU in RUN-modus, controleer of OB1 wordt uitgevoerd
MB_STATUS 0x8090Geoptimaliseerde DB-toegang ingeschakeldSchakel S7_Optimized_Access uit
Modbus-uitzondering 01FB MB_SERVER niet aangeroepen in het programmaControleer of MB_SERVER zich in OB1 bevindt
Modbus-uitzondering 02Adres > grootte van de MB_HOLD_REG-arrayVergroot de grootte van de array of controleer het adres
Alle waarden op 0Procesvariabelen niet gekopieerd naar MB_HOLD_REGControleer het kopieergedeelte in OB1
MB_STATUS 0x80C3Verbindings-ID al in gebruikWijzig de verbindings-ID in TCON_IP_v4
Onjuiste REAL-waardenVerkeerde bytevolgordeProbeer float32_abcd versus float32_cdab in Eziwan
Willekeurige verbroken verbindingTime-out te kort ingesteldVerhoog de time-out in de verbindingsinstellingen
OPC-UA: certificaat afgewezenEziwan-certificaat niet goedgekeurdKeur het certificaat goed in TIA Portal > Server > Trusted Clients

👉 Aanvullende bronnen

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