RS485 / Modbus RTU
De Eziwan Gateway beschikt over een ingebouwde RS485/RS232-poort op het aansluitblok. Via deze interface kunt u gegevens van uw sensoren, PLC’s en meters via het Modbus RTU-protocol verzamelen — en deze naar de cloud verzenden zonder dat daarvoor een aparte gateway nodig is.
Fysieke verbinding
Bedrading van het RS485-aansluitblok
Pinnen van het aansluitblok
| Pin | Signaal | Beschrijving |
|---|---|---|
| A | RS485+ | Positieve differentiële lijn |
| B | RS485− | Negatieve differentiële lijn |
| GND | Aarde | Gemeenschappelijke referentie |
Een omkering van A en B leidt tot communicatiefouten, maar veroorzaakt geen schade aan de apparatuur. Als er geen apparaat reageert, test dan door A en B om te wisselen.
Afsluitweerstanden
Op een RS485-bus met meerdere slaves:
- 120 Ω op het eerste en het laatste apparaat van de bus
- De Eziwan Gateway beschikt over een interne jumper om de afsluiting in te schakelen (hardwarehandleiding)
- Bij de tussenliggende apparaten: afsluiting uitgeschakeld
Modbus-polling configureren
Via het Eziwan-dashboard
Instellingen → Configuratie → RS485 / Modbus
Grafische interface: voeg elke slave en elk register toe, en stel het polling-interval en het doel-MQTT-topic in.
Via de API / YAML
# Configuration RS485 + Modbus RTU
rs485:
enabled: true
baud_rate: 9600 # 1200, 2400, 4800, 9600, 19200, 38400, 115200
parity: none # none, even, odd
data_bits: 8 # 7 ou 8
stop_bits: 1 # 1 ou 2
polling_interval_sec: 10 # Algemeen polling-interval (seconden)
modbus:
slaves:
- slave_id: 1
name: "Compteur énergie Schneider PM2200"
timeout_ms: 1000
retries: 3
registers:
- address: "0x0048"
type: holding # holding, input, coil, discrete_input
format: float32_abcd
tag: active_power
unit: kW
scale: 1.0
mqtt_topic: "site/usine-01/energie/puissance_active"
- address: "0x004A"
type: holding
format: float32_abcd
tag: reactive_power
unit: kVAr
scale: 1.0
mqtt_topic: "site/usine-01/energie/puissance_reactive"
- address: "0x0156"
type: holding
format: float32_abcd
tag: energy_total_kwh
unit: kWh
scale: 1.0
mqtt_topic: "site/usine-01/energie/index_kwh"
- slave_id: 2
name: "Capteur température / humidité"
timeout_ms: 500
registers:
- address: "0x0001"
type: input
format: int16
tag: temperature
unit: "°C"
scale: 0.1 # Valeur brute 245 → 24,5°C
mqtt_topic: "site/usine-01/environnement/temperature"
- address: "0x0002"
type: input
format: uint16
tag: humidity
unit: "%RH"
scale: 0.1
mqtt_topic: "site/usine-01/environnement/humidite"
- slave_id: 3
name: "Automate Schneider TM3 — Station de pompage"
polling_interval_sec: 30 # Het algemene interval overschrijven
registers:
- address: "0x0000"
type: holding
format: uint16
tag: pump_status
unit: ""
# 0=uit, 1=aan, 2=storing
mqtt_topic: "site/pompe-01/etat/pompe"
- address: "0x0001"
type: holding
format: int16
tag: pressure_bar
unit: bar
scale: 0.01
mqtt_topic: "site/pompe-01/mesures/pression"
- address: "0x0002"
type: holding
format: uint16
tag: flow_m3h
unit: "m³/h"
scale: 0.1
mqtt_topic: "site/pompe-01/mesures/debit"
Ondersteunde registerformaten
| Formaat | Beschrijving | Registers |
|---|---|---|
int16 | 16-bits getal met teken | 1 |
uint16 | 16-bits geheel getal zonder teken | 1 |
int32_abcd | 32-bits geheel getal met teken, big-endian | 2 |
int32_cdab | 32-bits geheel getal met teken, little-endian | 2 |
uint32_abcd | 32-bits geheel getal zonder teken, big-endian | 2 |
float32_abcd | IEEE 754-drijvende komma, big-endian | 2 |
float32_cdab | IEEE 754-drijvende-kommagetal, little-endian (Schneider) | 2 |
float32_badc | IEEE 754-drijvende-kommagetal, mid-big-endian | 2 |
coil | Modbus-spoel (1 bit) | 1 spoel |
bit | Eén bit uit een uint16-register halen | 1 |
Als de uitgelezen waarden onlogisch lijken (bijv.: 1234 wordt uitgelezen als 12340000), probeer dan float32_cdab in plaats van float32_abcd. De conventie verschilt per fabrikant.
MQTT-publicatie
De Modbus-gegevens worden automatisch gepubliceerd op de Eziwan MQTT-broker:
Opbouw van het onderwerp
eziwan/{device_id}/modbus/{slave_id}/{tag_name}
Voorbeeld:
eziwan/d_a1b2c3d4/modbus/1/active_power
JSON-payload
{
"value": 42.7,
"unit": "kW",
"timestamp": "2025-06-15T14:23:45.123Z",
"slave_id": 1,
"register": "0x0048",
"quality": "good"
}
Het veld "quality" kan de volgende waarden aannemen:
"good"— uitlezing geslaagd"timeout"— slave heeft niet gereageerd"error"— Modbus-fout (code opgenomen in"error_code")
Abonneren via uw systeem
# Abonnement op alle tags van een website
mosquitto_sub -h mqtt.eziwan.com -p 8883 \
--cert client.crt --key client.key --cafile ca.crt \
-t "eziwan/d_a1b2c3d4/modbus/#"
# Abonnement op een specifieke tag
mosquitto_sub -h mqtt.eziwan.com -p 8883 \
--cert client.crt --key client.key --cafile ca.crt \
-t "eziwan/d_a1b2c3d4/modbus/1/active_power"
Geteste apparatuur
| Fabrikant | Model | Protocol | Opmerkingen |
|---|---|---|---|
| Schneider Electric | PM2100, PM2200 | Modbus RTU | Energiemeter — float32 |
| Schneider Electric | TM3, TM2 | Modbus RTU | PLC — spoelen + holdings |
| Siemens | SENTRON PAC 3200 | Modbus RTU | Energiemeter |
| Carlo Gavazzi | EM24, EM340 | Modbus RTU | Driefasige/eenfasige meter |
| ABB | B23, B24 | Modbus RTU | Energiemeter |
| Wago | 750-xxx | Modbus RTU | I/O-buskoppeling |
| Phoenix Contact | ILB ETH 2TX | Modbus TCP | Via TCP-bridge |
| Hager | ECR380D | Modbus RTU | Energiemeter |
| Eastron | SDM630 | Modbus RTU | Driefasige meter |
| Generic | Alle Modbus RTU | Modbus RTU | Slave-ID 1–247 |
Probleemoplossing
Communicatietest vanuit Eziwan
Dashboard → Apparaat → Tools → Modbus-test
Voer de slave-ID, het type en het registeradres in → Eziwan verstuurt een leesverzoek en geeft het ruwe antwoord in realtime weer. Ideaal voor het stellen van een diagnose zonder fysieke toegang tot de locatie.
Modbus-foutcodes
| Code | Betekenis | Oplossing |
|---|---|---|
TIMEOUT | Slave reageert niet | Controleer bedrading, baudrate, slave-ID, afsluiting |
01 | Functie wordt niet ondersteund | Gebruik holding in plaats van input (of omgekeerd) |
02 | Ongeldig registeradres | Controleer het register in de documentatie van het apparaat |
03 | Ongeldige gegevenswaarde | Waarde buiten het toegestane bereik |
04 | Interne fout slave | Raadpleeg het logboek van het apparaat |
Checklist voor de bekabeling
Als geen enkele slave reageert:
- Controleer de polariteit A/B (probeer deze om te draaien)
- Controleer de baudrate (9600 is de meest gangbare)
- Controleer of de slave-ID’s op de bus uniek zijn
- Schakel de 120 Ω-afsluiting in op het eerste en laatste apparaat
- Test met slechts één slave (isoleren van het probleem)
- Meet de spanningsverschil A−B: moet > 200 mV zijn in stand-by
Referentie-spanningsverschil
Bus in ruststand (geen overbrenging):
V(A−B) > +200 mV → polarisation correcte
Pendant transmission :
V(A−B) > +1.5V → signal dominant (1 logique)
V(A−B) < −1.5V → signal récessif (0 logique)
Heeft u apparatuur die via Modbus TCP (via een Ethernet-netwerk) werkt? Eziwan ondersteunt ook de Modbus TCP → MQTT-bridge. Zie de Modbus TCP-documentatie →
- E-mail: support@eziwan.com — antwoord binnen < 4 werkuren
- Begeleide configuratie: Een technische onboarding plannen →
Veelgestelde vragen
Hoeveel apparaten kunnen op één RS-485-bus worden aangesloten?
32 slaves per segment zonder repeater, over een maximale lengte van ongeveer 1 200 m bij 9 600 baud. Bij grotere afstanden moet u het systeem in meerdere bussen opdelen of repeaters toevoegen.
Is de afsluitweerstand onmisbaar?
Bij lange of snelle bussen wel: 120 Ω aan beide uiteinden voorkomt reflecties die de frames verstoren. Bij een korte bus (enkele meters, 9 600 baud) valt het ontbreken ervan vaak niet op — tot de dag dat het signaal niet meer doorkomt.
Welke polling-snelheid moet je kiezen?
Pas de frequentie aan de dynamiek van het proces aan: elke 10 tot 60 s voor energie- of niveaumetingen, 1 tot 5 s voor machinebewaking. Een te agressieve polling op een trage bus leidt tot een reeks time-outs.
Hoe combineer je apparatuur met verschillende snelheden?
De seriële instellingen mogen niet verschillen op dezelfde bus: alle slaves moeten dezelfde baudrate, pariteit en stopbits hebben. Zo niet, verdeel ze dan over de verschillende RS-485-poorten van de gateway.
Gerelateerde bronnen
- RS485-gateway naar de cloud — de oplossingspagina
- RS485 / Modbus via 4G — seriële busgegevens verzamelen via mobiel netwerk
- Modbus naar de cloud — het overzicht
- Volledige Modbus-handleiding — registers, functies en probleemoplossing
- MQTT en RS-485 in de praktijk — het achtergrondartikel