Schneider M340 / M221 / M241 verbinden met de cloud via Modbus TCP

Deze handleiding behandelt de volledige configuratie voor het aansluiten van de Schneider-PLC’s uit de Modicon-serie op het Eziwan-platform: M340 (BMX P34), M221, M241, M251 en M262. Elke serie heeft zijn eigen configuratiespecificaties.


Compatibiliteitstabel van Schneider​

M340-serie (BMX P34)​

CPUFirmware% beschikbare MWETH-moduleCPU-unit-ID
BMX P34 1000≥ 2,300..1023 (1 024 woorden)BMX NOE of ETH-module255
BMX P34 2010≥ 2,300..9999 (10 000 woorden)Geïntegreerde ETH255
BMX P34 2020≥ 2,300..9999Geïntegreerde ETH255
BMX P34 2030≥ 2,300..9999Geïntegreerde ETH255

M221-serie (TM221)​

CPUFirmware% beschikbare MWUnit-ID
TM221CE16R≥ 1,00..99991
TM221C16T≥ 1,00..99991
TM221ME16R (Ethernet)≥ 1,00..99991
TM221M16R (+ ETH-module)≥ 1,00..99991

M241-serie (TM241)​

CPUFirmware% beschikbare MWUnit-ID
TM241CE40R≥ 1,00..99991
TM241CE40T≥ 1,00..99991
TM241C40R (+ TMBM-module)≥ 1,00..99991

M251- en M262-serie​

CPUFirmwareProtocollenUnit-ID
TM251MESE≥ 1.0Modbus TCP, EtherNet/IP1
TM262M15MESS8T≥ 1.0Modbus TCP, EtherNet/IP, native MQTT1
tip

De M262 beschikt over een native MQTT-client — Eziwan kan de door de M262 gepubliceerde gegevens rechtstreeks ontvangen zonder gebruik te maken van Modbus-polling. Neem contact op met de Eziwan-helpdesk voor de MQTT-configuratie.


EcoStruxure-configuratie — M340-serie​

De Modbus TCP-server op de BMX P34 inschakelen​

In EcoStruxure Control Expert (Unity Pro):

  1. Structuurweergave → dubbelklik op de CPU BMX P34 xxxx
  2. Tabblad "Configuratie" → klik op de Ethernet-interface (ETH 1 of NOE-module)
  3. Tabblad "Services" → vink "Modbus Server" aan ✓
  4. Poort: 502 (niet wijzigen tenzij absoluut noodzakelijk)
  5. Tabblad "Ethernet-adressen" → voer het statische IP-adres in

Geavanceerde instellingen (recente firmwareversies):

  • Time-out voor inactieve verbinding: verhogen naar 120 s (standaard 30 s) voor langdurige verbindingen
  • IP-filtering (firmware ≥ 2.60): beperk de toegang tot het IP-adres van de Eziwan-gateway

BMX NOE 0100 / BMX NOE 0110-module​

Voor de M340-modellen met een externe Ethernet-module:

ParameterBMX NOE 0100BMX NOE 0110
Snelheid10/100 Mbit10/100 Mbit
I/O-scannerNeeJa
Modbus-serverJaJa
ConfiguratieVia CPU-eigenschappenVia module-eigenschappen
Unit-IDConfigureerbaarConfigureerbaar
waarschuwing

Bij de BMX NOE 0110 kan de Unit ID van de Modbus TCP-server afwijken van 255. Controleer de configuratie van de module in EcoStruxure en gebruik de Unit ID die in Eziwan is geconfigureerd.


EcoStruxure-configuratie — M221-/M241-serie​

SoMachine / EcoStruxure Machine Expert​

De Modbus TCP-configuratie op de M221 en M241 gebeurt in EcoStruxure Machine Expert (voorheen SoMachine):

  1. Configuratie → tabblad "Ethernet"
  2. Voer het statische IP-adres en het subnetmasker in
  3. Configuratie → tabblad "Modbus TCP Slave" (of "Modbus TCP Servant")
  4. Vink "Enabled" aan ✓
  5. Poort: 502
  6. Unit ID: 1 (standaard op M221/M241 — anders dan bij de M340!)

Fundamenteel verschil tussen de M340 en de M221/M241​

ParameterM340 (BMX P34)M221 / M241 (TM2xx)
Standaard Unit ID2551
ConfiguratiesoftwareEcoStruxure Control ExpertEcoStruxure Machine Expert
Max. %MW10.000 (CPU >= 2010)9.999
Modbus-serverIngeschakeld in CPU-eigenschappenIngeschakeld in Ethernet-configuratie
waarschuwing

Dit is de meest voorkomende valkuil: als u Eziwan configureert met Unit ID 255 op een M221 of M241, mislukt de verbinding met een Modbus-uitzondering of een time-out. Gebruik Unit ID 1 op de M221/M241.


Adressering van Modbus-registers per reeks​

M340 — Overeenkomst %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 tot %Q0.7 │ bit 0 tot 7 │ Spoel (FC=01)

*De exacte toewijzing van de analoge in- en uitgangen is afhankelijk van de hardwareconfiguratie.

M221 / M241 — Overeenkomst %MW ↔ Modbus-register​

De toewijzing is identiek aan die van de M340: %MWn komt overeen met het Modbus-adres n.


Geavanceerd beheer van gegevenstypen​

REAL-variabelen (32-bits drijvende komma) in 2 registers​

Een variabele REAL in Unity Pro / EcoStruxure neemt twee opeenvolgende %MW-waarden in beslag volgens de IEEE 754-standaard:

REAL-variabele "Temperature" opgeslagen in %MW100:
%MW100: woord met groot gewicht (MSW, bytes A en B)
%MW101: woord met laag gewicht (LSW, bytes C en D)
Volgorde: ABCD (standaard big-endian op M340/M221/M241)

Te configureren Eziwan-type: float32_abcd

Als de waarden onjuist zijn (constante foutfactor): Probeer float32_cdab (little-endian per register). Sommige Unity Pro-projecten gebruiken de functie DWORD_TO_REAL met een andere volgorde.

DINT-/UDINT-variabelen (32-bits geheel getal) in 2 registers​

Variabele DINT "Teller" op %MW200:
%MW200 : partie haute (MSW)
%MW201 : partie basse (LSW)
Type Eziwan : int32_abcd

Booleaanse waarden comprimeren in een %MW​

Om het aantal Modbus-verzoeken tot een minimum te beperken, kunt u de booleaanse statussen in één geheugenwoord samenvoegen:

(* EcoStruxure Control Expert — Programme *)
(* Groep van 16 staten in %MW300 *)

%MW300 := 0; (* Op nul zetten *)
IF %Q0.0 THEN %MW300 := %MW300 OR 16#0001; END_IF; (* Pomp 1 *)
IF %Q0.1 THEN %MW300 := %MW300 OR 16#0002; END_IF; (* Pomp 2 *)
IF %I0.5 THEN %MW300 := %MW300 OR 16#0004; END_IF; (* Fout P1 *)
IF %I0.6 THEN %MW300 := %MW300 OR 16#0008; END_IF; (* Fout P2 *)
IF %M10 THEN %MW300 := %MW300 OR 16#0010; END_IF; (* Alarme *)

Met deze techniek worden 16 booleaanse waarden met één Modbus-verzoek (FC=03, 1 register) uitgelezen.


Aanbevolen indeling van de %MW voor toezicht​

Om de efficiëntie van de zoekopdrachten te maximaliseren (automatische groepering door Eziwan):

Bereik %MW0 tot %MW9 : Instructies voor de operator (aanpasbare instelwaarden)
Bereik %MW10 tot %MW49 : Eenvoudige analoge metingen (int16 ×10)
Bereik %MW50 tot %MW99 : dubbele analoge metingen (REAL op 2 registers)
Bereik %MW100 tot %MW149: 16-bits tellers
Bereik %MW150 tot %MW199 : 32-bits tellers (DINT, elk met 2 registers)
Bereik %MW200 tot %MW249 : Machinestatus (bitvelden)
Bereik %MW250 tot %MW299 : Foutcodes
Bereik %MW300 tot %MW349 : Fabrieksinstellingen (alleen-lezen voor klanten)

Verbindingstest​

Test vanuit Python​

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})")

# Leestest %MW100 tot %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-decodering als %MW100+101 een REAL bevat (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 niet ondersteund → Modbus-server niet geactiveerd",
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

Uitgebreide probleemoplossing​

SymptoomWaarschijnlijke oorzaakOplossing
TCP-verbinding geweigerdModbus-server niet geactiveerdControleer "Modbus Server" in EcoStruxure
TCP-verbinding geweigerdNetwerk verkeerd geconfigureerdPing de PLC vanaf een pc op hetzelfde netwerk
Uitzondering 02 (ongeldig adres)BMX P34 1000 — adres > 1023Verplaats de supervisiezone tussen 0 en 1023
Uitzondering 06 (server bezet)Te veel verbonden clientsSluit ongebruikte lokale SCADA-verbindingen
Onjuiste Unit IDM221/M241 met Unit ID 255Wijzig naar Unit ID 1 in de Eziwan-configuratie
Alle waarden op 0Variabelen niet toegewezen in het programmaControleer of %MW100+ door het programma worden gevoed
Onjuiste REALBytevolgorde CDAB in plaats van ABCDProbeer float32_cdab in Eziwan
Verbinding wordt elke 30 seconden verbrokenStandaard inactieve time-out M340Verhoog de "inactive timeout" naar 120 seconden in EcoStruxure
NOE-module reageert nietIP-adres van de module verschilt van dat van de CPUGebruik het IP-adres van de NOE-module, niet dat van de CPU
Registers %IW en %QW niet toegankelijkFC=04 of FC=01 vereist, niet FC=03Gebruik de juiste FC's of kopieer naar %MW

👉 Aanvullende bronnen

Veelgestelde vragen​

Welke Schneider-besturingsunits zijn compatibel?​

Het volledige Modicon-assortiment dat via Modbus TCP communiceert: M221, M241, M251, M340, M580, evenals de Premium- en Quantum-modellen die zijn uitgerust met Ethernet-koppelingen. De seriële series (Twido, TSX) maken gebruik van de RS-485-poort van de gateway.

Moet het programma van de PLC worden aangepast?​

Dit geldt niet voor het uitlezen van gegevens: de gateway vraagt de bestaande %MW-woorden op via Modbus TCP. Alleen voor het eventueel instellen van instelwaarden kan het nodig zijn om in het programma een speciaal woordbereik te reserveren.

Welke netwerkpoort moet toegankelijk zijn?​

Modbus TCP-poort 502, uitsluitend op het lokale netwerk tussen de gateway en de PLC. Er wordt niets naar het internet blootgesteld: de gateway zet een uitgaande VPN-tunnel op naar de cloud.

Hoe stel je vast dat een verbinding niet tot stand komt?​

Controleer in deze volgorde: ping naar de PLC vanaf de gateway, poort 502 open (geen lokale firewall), juiste Unit ID en %MW-adressering op elkaar afgestemd (offset 0 versus 1, afhankelijk van de gebruikte tools). De Eziwan-console geeft de Modbus-frames en foutcodes in realtime weer.

Gerelateerde bronnen​