Connexion Siemens S7-1200 / S7-1500 au cloud via Eziwan

Ce guide couvre la configuration complète pour connecter un automate Siemens S7-1200 ou S7-1500 à la plateforme Eziwan. Il inclut les configurations Modbus TCP (S7-1200 et S7-1500) et OPC-UA (S7-1500 uniquement), les spécificités par modèle de CPU, et le dépannage des problèmes courants.


Tableau de compatibilité par modèle

Siemens S7-1200

CPUFirmware min.Modbus TCPOPC-UARemarques
CPU 1211C AC/DC/RelayV4.0✓ MB_SERVER50 KB programme, limiter à 50 registres max
CPU 1211C DC/DC/DCV4.0
CPU 1212CV4.075 KB programme
CPU 1212FCV4.0Version Fail-safe
CPU 1214CV4.0100 KB, recommandé pour supervision
CPU 1214FCV4.0Fail-safe
CPU 1215CV4.0125 KB, 2 ports Ethernet
CPU 1217CV4.0150 KB, I/O haute vitesse

Recommandation : pour les projets de supervision intensive (> 50 variables, polling 1s), utiliser une CPU 1214C ou supérieure. La CPU 1211C avec ses 50 KB de programme laisse peu de place pour les FB MB_SERVER et les données.

Siemens S7-1500

CPUFirmware min.Modbus TCPOPC-UARemarques
CPU 1511-1 PNV2.0✓ V2.0Standard, 1 Mbit programme
CPU 1513-1 PNV2.0300 KB données
CPU 1515-2 PNV2.02 ports Ethernet physiques
CPU 1516-3 PN/DPV2.0Profibus DP intégré
CPU 1517-3 PN/DPV2.0Haute performance
CPU 1518-4 PN/DPV2.0Top de gamme S7-1500
CPU 1511F-1 PNV2.0Fail-safe
ET 200SP CPU 1510SPV2.0Compact, pour armoires petites

Avantage OPC-UA sur S7-1500 : pas de FB dans le programme, pas de DB avec accès absolu. Les variables sont directement publiées via le namespace OPC-UA — plus simple à configurer et plus robuste.

Siemens S7-300 et S7-400 (legacy)

ModuleProtocoleRemarques
CPU 31x avec CP 343-1 AdvancedModbus TCP (option firmware)CP 343-1 IT (6GK7343-1GX31) requis
CPU 41x avec CP 443-1 AdvancedModbus TCPCP 443-1 IT (6GK7443-1GX30)
S7-300 avec IM 153-2Modbus RTU via RS-485 gatewayVia port RS-485 Eziwan
Tous S7-300/400S7Comm (non sécurisé)Déconseillé, pas supporté Eziwan
attention

Le protocole S7Comm (port 102) des S7-300/400 n'est pas supporté par Eziwan pour des raisons de sécurité : S7Comm n'a aucune authentification et est exposé à des attaques connues. Utiliser Modbus TCP via CP 343-1 ou RS-485 Modbus RTU.


Configuration Modbus TCP sur S7-1200

Prérequis réseau

  • Adresse IP statique sur le port X1 de la CPU
  • La gateway Eziwan sur le même sous-réseau (ou routage inter-VLAN si VLAN séparés)
  • Port TCP 502 non bloqué entre la gateway et la CPU

Étape 1 — Configurer l'IP de la CPU dans TIA Portal

  1. Project tree → double-clic sur la CPU
  2. Properties → onglet "PROFINET interface [X1]"
  3. "Ethernet addresses" → désactiver DHCP, saisir l'IP statique
  4. Exemple : 192.168.1.10 / 255.255.255.0
  5. Laisser la passerelle vide si pas de routage inter-VLAN

Étape 2 — Créer le Data Block pour MB_SERVER

Créer un nouveau Data Block dans TIA Portal :

// Paramètres du DB
Nom : "Eziwan_DB"
Numéro : automatique (ex. DB10)
Type : Global DB
Accès optimisé : DÉSACTIVÉ ← CRITIQUE
attention

L'accès optimisé doit être désactivé. Dans les propriétés du DB, décocher "Optimized block access". Sans cela, l'accès absolu par adresse mémoire (nécessaire pour MB_SERVER) ne fonctionne pas. C'est la cause n°1 des erreurs lors d'une première intégration.

Structure du DB :

DATA_BLOCK "Eziwan_DB"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1

VAR
// Zone de holding registers (500 mots de 16 bits)
// Accessible en Modbus FC=03 adresses 0 à 499
MB_HOLD_REG : ARRAY [0..499] OF WORD;

// Variables internes (non accessibles en Modbus)
MBStatus : WORD;
MBError : BOOL;
NewData : BOOL;
END_VAR

Étape 3 — Ajouter MB_SERVER dans OB1

// Bloc de connexion TCP (dans un FC ou directement dans OB1)
// Type : TCON_IP_v4 (instancier comme variable Static dans un FB
// ou comme DB de connexion statique)

"ConnectDB".InterfaceId := 64; // Port X1 = toujours 64 sur S7-1200
"ConnectDB".ID := W#16#0001; // ID de connexion (1 à 0xFFF)
"ConnectDB".ConnectionType := 11; // 11 = TCP
"ConnectDB".ActiveEstablished := FALSE; // Serveur : attente de connexion
"ConnectDB".RemoteAddress.ADDR[1] := 0; // Accepter toutes les IP
"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

// Appel du FB MB_SERVER (instance dans un DB d'instance)
"MB_SERVER_DB"(
DISCONNECT := FALSE, // TRUE pour fermer la connexion
MB_HOLD_REG := "Eziwan_DB".MB_HOLD_REG,
CONNECT := "ConnectDB",
NDR => "Eziwan_DB".NewData, // TRUE si nouvelles données reçues
DR => #DataReady,
ERROR => "Eziwan_DB".MBError,
STATUS => "Eziwan_DB".MBStatus
);

Étape 4 — Alimenter les registres depuis le programme

// Dans OB1 ou un OB cyclique (OB30, OB35...)
// Convention recommandée :
// Registres 0-49 : variables analogiques
// Registres 50-99 : compteurs et accumulateurs
// Registres 100-127: états et codes défaut (bitfields)

// Valeurs analogiques (×10 pour 1 décimale)
"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".Pression * 100.0);

// Float 32 bits sur 2 registres (si précision décimale suffisante avec ×10 ci-dessus)
// Utiliser MOVE pour copier les octets
"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

// Bitfield d'états (16 booléens dans un seul registre)
"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;

// Compteur de production (int32 sur 2 registres)
"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

Configuration OPC-UA sur S7-1500 (recommandé)

L'avantage de l'OPC-UA sur S7-1500 : aucun FB dans le programme. Les variables sont publiées directement depuis le namespace OPC-UA sans modification du code automate.

Activer OPC-UA dans TIA Portal V16+

  1. Propriétés CPU → "OPC UA""Server" → cocher "Activate OPC UA server"
  2. Port : 4840 (standard OPC-UA, ou 48010/48020 selon contraintes réseau)
  3. Security : choisir "Basic256Sha256 - Sign & Encrypt" (niveau SL2+ recommandé)
  4. Authentication : activer "Username/Password" ou "Certificate" (désactiver "Anonymous")

Configurer les variables exposées

Dans TIA Portal, créer des OPC UA Access Points :

  1. Dans le bloc de données ou les PLC Tags → sélectionner les variables à exposer
  2. Clic droit → "Properties" → activer "Accessible from HMI/OPC UA"
  3. Les variables apparaissent dans l'OPC UA Address Space sous ns=3;s=<NomVariable>

Configuration dans Eziwan pour OPC-UA

Dans le tableau de bord, créer l'équipement S7-1500 avec protocole OPC-UA :

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"

Test de connexion Modbus TCP

Test rapide depuis 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 pour S7-1200 avec 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("✗ Connexion TCP impossible — vérifier IP et que le programme S7 tourne")

client.close()

Vérification du statut MB_SERVER

Dans TIA Portal, surveiller les variables de statut du DB :

"Eziwan_DB".MBStatus = ?

Valeur Signification
0x0000 Pas de connexion établie (en attente)
0x7002 Connexion établie, en attente de requête
0x7003 Requête en cours de traitement
0x8XYZ Erreur (voir tableau codes erreur TIA Portal)

Dépannage

SymptômeCause probableSolution
Connexion TCP refuséeProgramme non chargé ou CPU en STOPMettre CPU en RUN, vérifier que OB1 s'exécute
MB_STATUS 0x8090DB accès optimisé activéDésactiver S7_Optimized_Access
Exception Modbus 01FB MB_SERVER non appelé dans le programmeVérifier que MB_SERVER est bien dans OB1
Exception Modbus 02Adresse > taille du tableau MB_HOLD_REGAugmenter la taille du tableau ou vérifier l'adresse
Toutes les valeurs à 0Variables process non copiées dans MB_HOLD_REGVérifier la section de copie dans OB1
MB_STATUS 0x80C3Connexion ID déjà utiliséeChanger l'ID de connexion dans TCON_IP_v4
Valeurs REAL incorrectesMauvais ordre octetsEssayer float32_abcd vs float32_cdab dans Eziwan
Disconnect aléatoireTimeout paramétré trop courtAugmenter le timeout dans les paramètres de connexion
OPC-UA : certificat rejetéCertificat Eziwan non approuvéApprouver le certificat dans TIA Portal > Server > Trusted Clients

👉 Ressources complémentaires

Questions fréquentes

Quelle différence entre S7-1200 et S7-1500 pour la connexion cloud ?

Les deux exposent Modbus TCP et OPC-UA (serveur OPC-UA natif sur S7-1500, licence runtime sur S7-1200 selon firmware). Le S7-1500 offre plus de nœuds OPC-UA simultanés ; pour une simple remontée de données, Modbus TCP suffit sur les deux.

Faut-il activer PUT/GET dans TIA Portal ?

Uniquement pour les communications S7 natives. Pour Modbus TCP via les blocs MB_SERVER ou pour OPC-UA, PUT/GET n'est pas requis — c'est d'ailleurs préférable pour la sécurité.

Modbus TCP ou OPC-UA : que choisir avec un S7 ?

Modbus TCP est plus simple à mettre en œuvre (mapping de DB vers registres) ; OPC-UA apporte le typage, la structure et la sécurité par certificats. Pour un projet neuf sur S7-1500, OPC-UA est recommandé ; pour du retrofit rapide, Modbus TCP.

L'accès TIA Portal à distance est-il possible ?

Oui, à travers le tunnel VPN de la gateway : le poste d'ingénierie rejoint le réseau de la machine et TIA Portal fonctionne comme en local (online, diagnostic, chargement), sans exposer l'automate sur Internet.

Ressources associées