node-red-contrib-modbus-tcp-full-avd 1.1.2
Volledige MODBUS TCP node voor Node-RED met ondersteuning voor alle functies en adresbereik
node-red-contrib-modbus-tcp-full-avd
Volledige MODBUS TCP node voor Node-RED met ondersteuning voor alle MODBUS functies en het volledige adresbereik (0-65535). Node-naam bevat initialen AVD voor unieke herkenbaarheid.
Versie: 1.1.2
Features
- ✅ TCP Client en Server modes – Verbind als client of luister als server
- ✅ MODBUS Client en Server modes – Verzend requests of reageer op requests
- ✅ Alle MODBUS functies – Ondersteuning voor functie codes 01, 02, 03, 04, 05, 06, 15, 16
- ✅ Volledige adresbereik – 0-65535 voor coils, discrete inputs, holding registers en input registers
- ✅ Robuuste verbindingscontrole – Connect-timeout, geen idle-timeout (verbinding blijft open bij inactiviteit), TCP keepalive, write-foutafhandeling
- ✅ Automatische reconnect – Herverbind automatisch bij verbindingsverlies, met exponential backoff
- ✅ Retry mechanisme – Configureerbare retries bij fouten; pending requests worden bij disconnect netjes afgebroken
- ✅ Exception handling – Ondersteuning voor MODBUS exception codes
- ✅ Dataweergave – Toon registerdata in node-status en/of debug panel
- ✅ Testdata (Server) – Vul registers automatisch of handmatig met testdata (incrementing, random, sine, square, alternating)
- ✅ Speciale acties –
readData,showData,generateTestDatavia message - ✅ Accept Any Unit ID (Server) – Optioneel accepteren van elke Unit ID
Installatie
Via Node-RED Palette Manager
- Open Node-RED
- Ga naar Menu → Manage palette
- Klik op de Install tab
- Zoek naar node-red-contrib-modbus-tcp-full-avd
- Klik op Install
Via NPM
npm install node-red-contrib-modbus-tcp-full-avd
Via upload (.tgz)
- Download of maak het package:
npm pack(creëertnode-red-contrib-modbus-tcp-full-avd-1.1.2.tgz) - In Node-RED: Menu → Manage palette → Install tab → upload
- Selecteer het
.tgzbestand en wacht op installatie - Herstart Node-RED indien nodig
Handmatige installatie
- Kopieer de package naar
~/.node-red/node_modules/node-red-contrib-modbus-tcp-full-avd - Voer uit:
npm installin die directory - Herstart Node-RED
Gebruik
TCP Client + MODBUS Client
Gebruik om data te lezen/schrijven van een MODBUS TCP server.
Configuratie: TCP Mode = Client, Host = IP van server, Port = 502, MODBUS Mode = Client, Unit ID = 1.
Read Holding Registers
msg.payload = { function: 3, address: 0, quantity: 10 };
Write Single Register
msg.payload = { function: 6, address: 0, value: 1234 };
Write Multiple Coils
msg.payload = { function: 15, address: 0, values: [true, false, true, false] };
Lees en toon data (actie readData)
msg.payload = {
action: "readData",
readType: "holdingRegisters", // coils, discreteInputs, holdingRegisters, inputRegisters
address: 0,
quantity: 10
};
TCP Server + MODBUS Server
Gebruik om MODBUS data aan te bieden aan clients.
Configuratie: TCP Mode = Server, Port = 502, MODBUS Mode = Server, Unit ID = 1. Optioneel: Accept Any Unit ID om elke Unit ID te accepteren.
Data bijwerken
msg.payload = {
type: "holdingRegisters", // coils, discreteInputs, holdingRegisters, inputRegisters
address: 0,
value: 1234
};
Meerdere waarden:
msg.payload = { type: "holdingRegisters", address: 0, values: [1, 2, 3, 4, 5] };
Toon alle registerdata (actie showData)
msg.payload = { action: "showData" };
Genereer testdata (actie generateTestData)
msg.payload = {
action: "generateTestData",
pattern: "incrementing", // incrementing, random, sine, square, alternating
dataType: "holdingRegisters", // coils, discreteInputs, holdingRegisters, inputRegisters
address: 0,
quantity: 100
};
Configuratie-opties
TCP
- TCP Mode – Client of Server
- Host – IP-adres (alleen bij Client)
- Port – Standaard 502
- Reconnect Interval – Eerste herpoging na verbindingsverlies (ms); daarna exponential backoff
- Max Reconnect Delay – Maximum wachttijd tussen herpogingen (ms), cap voor backoff (standaard 60000)
- Connection Timeout – Timeout voor totstandkoming verbinding (ms); de verbinding wordt niet verbroken bij inactiviteit
- Max Connections – Max. verbindingen (alleen Server)
MODBUS
- MODBUS Mode – Client of Server
- Unit ID – 0–255
- Accept Any Unit ID – (alleen Server) Accepteer elke Unit ID
- Byte Order – Big Endian of Little Endian
- Address Offset – 0 (0-based) of 1 (1-based)
Client
- Request Timeout – Timeout per request (ms)
- Retry Count – Aantal retries
- Retry Interval – Interval tussen retries (ms)
Dataweergave
- Toon Data in Status – Laatste waarden in node-status
- Debug Mode – Log data naar debug panel
Testdata (alleen Server)
- Genereer Test Data bij Start – Vul bij start automatisch holding- en inputregisters (0–99)
- Test Data Patroon – incrementing, random, sine, square, alternating
Ondersteunde MODBUS-functies
| Functie | Code | Beschrijving |
|---|---|---|
| Read Coils | 01 | Leest discrete outputs |
| Read Discrete Inputs | 02 | Leest discrete inputs |
| Read Holding Registers | 03 | Leest holding registers |
| Read Input Registers | 04 | Leest input registers |
| Write Single Coil | 05 | Schrijft één coil |
| Write Single Register | 06 | Schrijft één register |
| Write Multiple Coils | 15 | Schrijft meerdere coils |
| Write Multiple Registers | 16 | Schrijft meerdere registers |
Input/Output-formaat
Input (Client – normale requests)
msg.payload of top-level: function, address, quantity (read), value of values (write), optioneel unitId, timeout.
Output (Client – succes)
msg.payload: function, address, quantity, data (array), timestamp, responseTime.
Output (fout)
msg.error: code, message, function, address.
Speciale acties – output
- readData –
payload.action,payload.type,payload.address,payload.quantity,payload.data,payload.dataMap - showData –
payload.action,payload.summary(per type: coils, discreteInputs, holdingRegisters, inputRegisters) - generateTestData –
payload.action,payload.result(pattern, dataType, startAddress, quantity, values sample)
Adresbereik
- Coils: 0–65535
- Discrete Inputs: 0–65535
- Holding Registers: 0–65535
- Input Registers: 0–65535
Verbindingscontrole en herstel (Client)
De TCP-client is ingericht voor robuust gedrag bij uitval en herstel:
- Connect-timeout – Als de verbinding binnen Connection Timeout niet tot stand komt, wordt opnieuw geprobeerd (geen hangende connect).
- Geen idle-timeout – De verbinding wordt niet verbroken bij langere tijd zonder data-uitwisseling; alleen bij echte verbindingsfouten (error/close).
- TCP keepalive – Ingeschakeld om half-open verbindingen te detecteren.
- Pending requests – Bij error of close worden alle wachtende MODBUS-requests direct afgebroken met een duidelijke fout.
- Write-fouten – Fouten bij schrijven leiden tot afbreken van de request en automatische reconnect.
- Exponential backoff – Eerste herpoging na Reconnect Interval; daarna verdubbeling van de wachttijd tot Max Reconnect Delay.
- Reconnect na mislukte connect – Bij weigering (bijv. ECONNREFUSED) wordt automatisch een nieuwe herpoging gepland.
Troubleshooting
- Geen verbinding – Controleer host, poort en firewall; controleer of de MODBUS server draait.
- Connect timeout – Server niet bereikbaar binnen Connection Timeout; controleer netwerk/firewall of verhoog de timeout.
- Timeout – Verhoog Request Timeout; controleer netwerk en server.
- Connection lost – Verbinding weggevallen (error/close); client probeert automatisch opnieuw (zie Verbindingscontrole en herstel).
- Exception 01/02/03/04 – Controleer functiecode, adres en waarden; controleer Unit ID (of zet Accept Any Unit ID aan op de server).
Licentie
MIT
Auteur
ModBUSTester Project (AVD)
Changelog
1.1.2
- Client: Geen idle-timeout meer; verbinding blijft open bij langere tijd zonder data-uitwisseling. Alleen verbreken bij echte verbindingsfouten (error/close). TCP keepalive blijft actief voor detectie van dode verbindingen.
1.1.1
- Documentatie bijgewerkt (README, INSTALLATIE) voor verbindingscontrole en herstel.
- Versienummer voor package-update.
1.1.0
- Verbindingscontrole en herstel (Client): Connect-timeout, geen idle-timeout (verbinding blijft open bij inactiviteit), TCP keepalive, afbreken van pending requests bij disconnect/error, write-foutafhandeling, exponential backoff bij reconnect, reconnect na mislukte connect. Optie Max Reconnect Delay toegevoegd.
- Dataweergave: Toon Data in Status, Debug Mode
- Server: testdata (automatisch bij start + actie generateTestData), patronen: incrementing, random, sine, square, alternating
- Speciale acties: readData, showData, generateTestData
- Server: optie Accept Any Unit ID
- Bufferfix voor Write Single Register/Coil (PDU 5 bytes)
- Response-buffering voor incomplete TCP-frames
1.0.0
- Eerste release: MODBUS TCP client/server, alle basis functies 01–16, volledig adresbereik