Verbindung von Schneider M340 / M221 / M241 mit der Cloud über Modbus TCP

Dieser Leitfaden behandelt die vollständige Konfiguration für die Anbindung der Schneider-Steuerungen der Modicon-Reihe an die Eziwan-Plattform: M340 (BMX P34), M221, M241, M251 und M262. Jede Baureihe weist ihre eigenen Konfigurationsbesonderheiten auf.


Schneider-Kompatibilitätsübersicht

M340-Serie (BMX P34)

CPUFirmware% zugängliche MWETH-ModulCPU-Unit-ID
BMX P34 1000≥ 2,300..1023 (1.024 Wörter)BMX NOE oder ETH-Modul255
BMX P34 2010≥ 2,300..9999 (10.000 Wörter)Integriertes ETH255
BMX P34 2020≥ 2,300..9999Integriertes ETH255
BMX P34 2030≥ 2,300..9999Integriertes ETH255

M221-Serie (TM221)

CPUFirmware% verfügbarer MWGeräte-ID
TM221CE16R≥ 1,00..99991
TM221C16T≥ 1,00..99991
TM221ME16R (Ethernet)≥ 1,00..99991
TM221M16R (+ ETH-Modul)≥ 1,00..99991

M241-Baureihe (TM241)

CPUFirmware% der verfügbaren MWGeräte-ID
TM241CE40R≥ 1,00..99991
TM241CE40T≥ 1,00..99991
TM241C40R (+ TMBM-Modul)≥ 1,00..99991

Baureihen M251 und M262

CPUFirmwareProtokolleGeräte-ID
TM251MESE≥ 1.0Modbus TCP, EtherNet/IP1
TM262M15MESS8T≥ 1.0Modbus TCP, EtherNet/IP, natives MQTT1
tipp

Der M262 verfügt über einen nativen MQTT-Client – Eziwan kann die vom M262 veröffentlichten Daten direkt empfangen, ohne den Modbus-Polling-Vorgang zu durchlaufen. Wende dich für die MQTT-Konfiguration an den Eziwan-Support.


EcoStruxure-Konfiguration – M340-Serie

Den Modbus-TCP-Server auf dem BMX P34 aktivieren

In EcoStruxure Control Expert (Unity Pro):

  1. Strukturansicht → Doppelklick auf die CPU BMX P34 xxxx
  2. Registerkarte „Konfiguration“ → auf die Ethernet-Schnittstelle klicken (ETH 1 oder NOE-Modul)
  3. Registerkarte „Dienste“„Modbus-Server“ aktivieren ✓
  4. Port: 502 (nur ändern, wenn unbedingt erforderlich)
  5. Registerkarte „Ethernet-Adressen“ → statische IP-Adresse eingeben

Erweiterte Einstellungen (neuere Firmware-Versionen):

  • Timeout bei inaktiver Verbindung: Bei lang andauernden Verbindungen auf 120 s erhöhen (Standard: 30 s)
  • IP-Filterung (Firmware ≥ 2.60): Beschränken Sie den Zugriff auf die IP-Adresse des Eziwan-Gateways

BMX-Modul NOE 0100 / BMX NOE 0110

Für M340-Modelle mit externem Ethernet-Modul:

ParameterBMX NOE 0100BMX NOE 0110
Datenrate10/100 Mbit10/100 Mbit
I/O-ScannerNeinJa
Modbus-ServerJaJa
KonfigurationÜber CPU-EigenschaftenÜber Moduleigenschaften
Geräte-IDKonfigurierbarKonfigurierbar
warnung

Beim BMX NOE 0110 kann die Unit-ID des Modbus-TCP-Servers von 255 abweichen. Überprüfen Sie die Konfiguration des Moduls in EcoStruxure und verwenden Sie die in Eziwan konfigurierte Unit-ID.


EcoStruxure-Konfiguration – Baureihen M221 / M241

SoMachine / EcoStruxure Machine Expert

Die Modbus-TCP-Konfiguration für M221 und M241 erfolgt in EcoStruxure Machine Expert (früher SoMachine):

  1. Konfiguration → Registerkarte „Ethernet“
  2. Statische IP-Adresse und Subnetzmaske eingeben
  3. Konfiguration → Registerkarte „Modbus TCP Slave“ (oder „Modbus TCP Servant“)
  4. „Enabled“ aktivieren ✓
  5. Port: 502
  6. Unit ID: 1 (Standard bei M221/M241 – abweichend vom M340!)

Grundlegender Unterschied zwischen M340 und M221/M241

ParameterM340 (BMX P34)M221 / M241 (TM2xx)
Standard-Geräte-ID2551
KonfigurationssoftwareEcoStruxure Control ExpertEcoStruxure Machine Expert
Max. %MW10.000 (CPU >= 2010)9.999
Modbus-ServerIn den CPU-Eigenschaften aktiviertIn der Ethernet-Konfiguration aktiviert
warnung

Das ist die häufigste Falle: Wenn Sie Eziwan auf einem M221 oder M241 mit der Unit-ID 255 konfigurieren, schlägt die Verbindung mit einer Modbus-Ausnahme oder einem Timeout fehl. Verwenden Sie die Unit-ID 1 auf M221/M241.


Adressierung der Modbus-Register nach Bereichen

M340 — Zuordnung %MW ↔ Modbus-Register

Variable EcoStruxure │ Adresse Modbus │ Type Modbus
─────────────────────────────────────────────────────
%MW0 │ 0 │ Holding Register (FC=03)
%MW100 │ 100 │ Holding Register
%MWn │ n │ (direct, 0-based)
%QW0.0 │ 0 │ Input Register (FC=04) *
%IW0.0 │ 0 │ Discrete Input (FC=02) *
%Q0.0 bis %Q0.7 │ Bit 0 bis 7 │ Spule (FC=01)

*Die genaue Zuordnung der analogen Ein- und Ausgänge hängt von der Hardwarekonfiguration ab.

M221 / M241 — Zuordnung %MW ↔ Modbus-Register

Die Zuordnung entspricht der des M340: %MWn entspricht der Modbus-Adresse n.


Erweiterte Verwaltung von Datentypen

REAL-Variablen (32-Bit-Gleitkommazahlen) in 2 Registern

Eine Variable vom Typ REAL in Unity Pro / EcoStruxure belegt zwei aufeinanderfolgende %MW-Werte im IEEE-754-Format:

Die Variable REAL „Temperature“, gespeichert unter %MW100:
%MW100: Wort mit hohem Gewicht (MSW, Bytes A und B)
%MW101: Low-Weight-Wort (LSW, Bytes C und D)
Reihenfolge: ABCD (standardmäßig Big-Endian auf M340/M221/M241)

Zu konfigurierender Eziwan-Typ: float32_abcd

Wenn die Werte falsch sind (konstanter Fehlerfaktor): Versuchen Sie es mit float32_cdab (Little-Endian pro Register). Einige Unity Pro-Projekte verwenden die Funktion DWORD_TO_REAL mit einer anderen Reihenfolge.

DINT-/UDINT-Variablen (32-Bit-Ganzzahl) in 2 Registern

Variable DINT „Zähler“ bei %MW200:
%MW200 : partie haute (MSW)
%MW201 : partie basse (LSW)
Type Eziwan : int32_abcd

Komprimierung von Booleschen Werten in einem %MW

Um die Anzahl der Modbus-Anfragen zu minimieren, fassen Sie die booleschen Zustände in einem Speicherwort zusammen:

(* EcoStruxure Control Expert — Programme *)
(* Zusammenfassung von 16 Staaten in %MW300 *)

%MW300 := 0; (* Zurücksetzen auf Null *)
IF %Q0.0 THEN %MW300 := %MW300 OR 16#0001; END_IF; (* Pumpe 1 *)
IF %Q0.1 THEN %MW300 := %MW300 OR 16#0002; END_IF; (* Pumpe 2 *)
IF %I0.5 THEN %MW300 := %MW300 OR 16#0004; END_IF; (* Fehler P1 *)
IF %I0.6 THEN %MW300 := %MW300 OR 16#0008; END_IF; (* Fehler P2 *)
IF %M10 THEN %MW300 := %MW300 OR 16#0010; END_IF; (* Alarme *)

Mit dieser Technik lassen sich 16 Boolesche Werte mit einer einzigen Modbus-Abfrage auslesen (FC=03, 1 Register).


Empfohlene Struktur der %MW für die Überwachung

Um die Effizienz der Abfragen zu maximieren (automatische Gruppierung durch Eziwan):

Bereich %MW0 bis %MW9 : Bediener-Sollwerte (änderbare Sollwerte)
Bereich %MW10 bis %MW49 : Einfache analoge Messungen (int16 ×10)
Bereich %MW50 bis %MW99 : Doppelte Analogmessung (REAL in 2 Registern)
Bereich %MW100 bis %MW149: 16-Bit-Zähler
Bereich %MW150 bis %MW199: 32-Bit-Zähler (DINT, jeweils 2 Register)
Bereich %MW200 bis %MW249: Maschinenstatus (Bitfelder)
Bereich %MW250 bis %MW299: Fehlercodes
Bereich %MW300 bis %MW349: Herstellerparameter (für Kunden nur lesbar)

Verbindungstest

Test aus Python heraus

from pymodbus.client import ModbusTcpClient
import struct

def tester_connexion_schneider(ip: str, unit_id: int = 255):
"""
Test de connexion Modbus TCP.
unit_id : 255 pour M340, 1 pour M221/M241
"""
client = ModbusTcpClient(ip, port=502, timeout=3)

if not client.connect():
print(f"✗ Connexion TCP impossible à {ip}:502")
return

print(f"✓ Connexion TCP établie → {ip}:502 (Unit ID {unit_id})")

# Lesetest %MW100 bis %MW109
result = client.read_holding_registers(
address=100, count=10, slave=unit_id
)

if not result.isError():
print(f"✓ Modbus FC=03 OK — %MW100 à %MW109 : {result.registers}")

# Float32-Dekodierung, falls %MW100+101 einen REAL-Wert enthält (Test)
if len(result.registers) >= 2:
raw = struct.pack(">HH", result.registers[0], result.registers[1])
float_val = struct.unpack(">f", raw)[0]
if abs(float_val) < 1e6: # Valeur plausible ?
print(f" → Si %MW100-%MW101 est un REAL : {float_val:.2f}")
else:
exc = getattr(result, 'exception_code', '?')
print(f"✗ Erreur Modbus FC=03 — exception code: {exc}")

# Diagnostics selon le code
messages = {
1: "FC nicht unterstützt → Modbus-Server nicht aktiviert",
2: "Adresse invalide → plage %MW dépassée (M340 1000: max 1024)",
3: "Valeur invalide → count trop grand",
4: "Erreur serveur → serveur non initialisé, CPU en STOP",
6: "Serveur occupé → trop de connexions simultanées",
}
if exc in messages:
print(f" Diagnostic : {messages[exc]}")

client.close()

# Tests
tester_connexion_schneider("192.168.1.20", unit_id=255) # M340
tester_connexion_schneider("192.168.1.30", unit_id=1) # M221/M241

Erweiterte Fehlerbehebung

SymptomMögliche UrsacheLösung
TCP-Verbindung abgelehntModbus-Server nicht aktiviert„Modbus Server“ in EcoStruxure überprüfen
TCP-Verbindung abgelehntNetzwerk falsch konfiguriertDie SPS von einem PC im selben Netzwerk aus anpingen
Ausnahme 02 (ungültige Adresse)BMX P34 1000 – Adresse > 1023Überwachungsbereich auf einen Wert zwischen 0 und 1023 verschieben
Ausnahme 06 (Server belegt)Zu viele verbundene ClientsNicht genutzte lokale SCADA-Verbindungen schließen
Falsche Unit-IDM221/M241 mit Unit-ID 255In der Eziwan-Konfiguration auf Unit-ID 1 ändern
Alle Werte auf 0Variablen im Programm nicht zugewiesenÜberprüfen, ob %MW100+ vom Programm versorgt werden
Falscher REAL-WertByte-Reihenfolge CDAB statt ABCDfloat32_cdab in Eziwan ausprobieren
Trennung alle 30 sStandardmäßiges Inaktivitäts-Timeout M340„Inactive Timeout“ in EcoStruxure auf 120 s erhöhen
NOE-Modul reagiert nichtIP-Adresse des Moduls unterscheidet sich von der der CPUIP-Adresse des NOE-Moduls verwenden, nicht die der CPU
Register %IW und %QW nicht zugänglichFC=04 oder FC=01 erforderlich, nicht FC=03Verwenden Sie die entsprechenden FCs oder kopieren Sie in %MW

👉 Weitere Ressourcen

Häufig gestellte Fragen

Welche Schneider-Steuerungen sind kompatibel?

Die gesamte Modicon-Produktreihe mit Modbus-TCP-Kommunikation: M221, M241, M251, M340, M580 sowie die mit Ethernet-Kopplern ausgestatteten Premium- und Quantum-Modelle. Die seriellen Baureihen (Twido, TSX) werden über den RS-485-Anschluss des Gateways angeschlossen.

Muss das Programm der SPS geändert werden?

Nicht für das Auslesen von Daten: Das Gateway fragt die in Modbus TCP vorhandenen %MW-Worte ab. Lediglich für das eventuelle Schreiben von Sollwerten kann es erforderlich sein, im Programm einen eigenen Wortbereich zu reservieren.

Welcher Netzwerkport muss zugänglich sein?

Der Modbus-TCP-Port 502, ausschließlich im lokalen Netzwerk zwischen dem Gateway und der SPS. Es wird nichts ins Internet freigegeben: Das Gateway richtet einen ausgehenden VPN-Tunnel zur Cloud ein.

Wie lässt sich feststellen, ob eine Verbindung nicht funktioniert?

Überprüfen Sie nacheinander Folgendes: Ping der SPS vom Gateway aus, Port 502 offen (keine lokale Firewall), korrekte Unit-ID und übereinstimmende %MW-Adressierung (Offset 0 vs. 1 je nach Tool). Die Eziwan-Konsole zeigt die Modbus-Frames und Fehlercodes in Echtzeit an.

Weiterführende Ressourcen