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)
| CPU | Firmware | % beschikbare MW | ETH-module | CPU-unit-ID |
|---|---|---|---|---|
| BMX P34 1000 | ≥ 2,30 | 0..1023 (1 024 woorden) | BMX NOE of ETH-module | 255 |
| BMX P34 2010 | ≥ 2,30 | 0..9999 (10 000 woorden) | Geïntegreerde ETH | 255 |
| BMX P34 2020 | ≥ 2,30 | 0..9999 | Geïntegreerde ETH | 255 |
| BMX P34 2030 | ≥ 2,30 | 0..9999 | Geïntegreerde ETH | 255 |
M221-serie (TM221)
| CPU | Firmware | % beschikbare MW | Unit-ID |
|---|---|---|---|
| TM221CE16R | ≥ 1,0 | 0..9999 | 1 |
| TM221C16T | ≥ 1,0 | 0..9999 | 1 |
| TM221ME16R (Ethernet) | ≥ 1,0 | 0..9999 | 1 |
| TM221M16R (+ ETH-module) | ≥ 1,0 | 0..9999 | 1 |
M241-serie (TM241)
| CPU | Firmware | % beschikbare MW | Unit-ID |
|---|---|---|---|
| TM241CE40R | ≥ 1,0 | 0..9999 | 1 |
| TM241CE40T | ≥ 1,0 | 0..9999 | 1 |
| TM241C40R (+ TMBM-module) | ≥ 1,0 | 0..9999 | 1 |
M251- en M262-serie
| CPU | Firmware | Protocollen | Unit-ID |
|---|---|---|---|
| TM251MESE | ≥ 1.0 | Modbus TCP, EtherNet/IP | 1 |
| TM262M15MESS8T | ≥ 1.0 | Modbus TCP, EtherNet/IP, native MQTT | 1 |
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):
- Structuurweergave → dubbelklik op de CPU
BMX P34 xxxx - Tabblad "Configuratie" → klik op de Ethernet-interface (ETH 1 of NOE-module)
- Tabblad "Services" → vink "Modbus Server" aan ✓
- Poort: 502 (niet wijzigen tenzij absoluut noodzakelijk)
- 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:
| Parameter | BMX NOE 0100 | BMX NOE 0110 |
|---|---|---|
| Snelheid | 10/100 Mbit | 10/100 Mbit |
| I/O-scanner | Nee | Ja |
| Modbus-server | Ja | Ja |
| Configuratie | Via CPU-eigenschappen | Via module-eigenschappen |
| Unit-ID | Configureerbaar | Configureerbaar |
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):
- Configuratie → tabblad "Ethernet"
- Voer het statische IP-adres en het subnetmasker in
- Configuratie → tabblad "Modbus TCP Slave" (of "Modbus TCP Servant")
- Vink "Enabled" aan ✓
- Poort: 502
- Unit ID: 1 (standaard op M221/M241 — anders dan bij de M340!)
Fundamenteel verschil tussen de M340 en de M221/M241
| Parameter | M340 (BMX P34) | M221 / M241 (TM2xx) |
|---|---|---|
| Standaard Unit ID | 255 | 1 |
| Configuratiesoftware | EcoStruxure Control Expert | EcoStruxure Machine Expert |
| Max. %MW | 10.000 (CPU >= 2010) | 9.999 |
| Modbus-server | Ingeschakeld in CPU-eigenschappen | Ingeschakeld in Ethernet-configuratie |
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
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| TCP-verbinding geweigerd | Modbus-server niet geactiveerd | Controleer "Modbus Server" in EcoStruxure |
| TCP-verbinding geweigerd | Netwerk verkeerd geconfigureerd | Ping de PLC vanaf een pc op hetzelfde netwerk |
| Uitzondering 02 (ongeldig adres) | BMX P34 1000 — adres > 1023 | Verplaats de supervisiezone tussen 0 en 1023 |
| Uitzondering 06 (server bezet) | Te veel verbonden clients | Sluit ongebruikte lokale SCADA-verbindingen |
| Onjuiste Unit ID | M221/M241 met Unit ID 255 | Wijzig naar Unit ID 1 in de Eziwan-configuratie |
| Alle waarden op 0 | Variabelen niet toegewezen in het programma | Controleer of %MW100+ door het programma worden gevoed |
| Onjuiste REAL | Bytevolgorde CDAB in plaats van ABCD | Probeer float32_cdab in Eziwan |
| Verbinding wordt elke 30 seconden verbroken | Standaard inactieve time-out M340 | Verhoog de "inactive timeout" naar 120 seconden in EcoStruxure |
| NOE-module reageert niet | IP-adres van de module verschilt van dat van de CPU | Gebruik het IP-adres van de NOE-module, niet dat van de CPU |
| Registers %IW en %QW niet toegankelijk | FC=04 of FC=01 vereist, niet FC=03 | Gebruik de juiste FC's of kopieer naar %MW |
- Modbus TCP met een Schneider M340 — Volledige handleiding — gedetailleerde configuratie en framestructuur
- Modbus TCP/IP-handleiding — Python-code en protocolvergelijking
- Compatibiliteitsoverzicht van Schneider downloaden → — PDF met alle geteste modellen
- Technische ondersteuning →
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
- Toegang op afstand tot Schneider-PLC’s — Veilig op afstand werken met EcoStruxure
- Een M340/M221 verbinden met de cloud — het stapsgewijze artikel
- Volledige Modbus-handleiding — registers, functies en probleemoplossing
- Modbus naar de cloud — de oplossing voor Modbus-gegevensverzameling
- Een PLC verbinden met de cloud — alle ondersteunde merken