npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-red-contrib-modbus-tcp-full-avd

v1.1.3

Published

Volledige MODBUS TCP node voor Node-RED met ondersteuning voor alle functies en adresbereik

Readme

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.3

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 actiesreadData, showData, generateTestData via message
  • Accept Any Unit ID (Server) – Optioneel accepteren van elke Unit ID

Installatie

Via Node-RED Palette Manager

  1. Open Node-RED
  2. Ga naar MenuManage palette
  3. Klik op de Install tab
  4. Zoek naar node-red-contrib-modbus-tcp-full-avd
  5. Klik op Install

Via NPM

npm install node-red-contrib-modbus-tcp-full-avd

Via upload (.tgz)

  1. Download of maak het package: npm pack (creëert node-red-contrib-modbus-tcp-full-avd-1.1.3.tgz)
  2. In Node-RED: MenuManage paletteInstall tab → upload
  3. Selecteer het .tgz bestand en wacht op installatie
  4. Herstart Node-RED indien nodig

Voorbeeldflows

In de map examples/ staan importeerbare flows:

| Bestand | Beschrijving | |---------|--------------| | 01-modbus-tcp-client-read.json | Client: lees 10 holding registers (functie 03) vanaf adres 0 | | 02-modbus-tcp-server-testdata.json | Server: genereer testdata, toon registerdata (generateTestData, showData) | | 03-modbus-tcp-client-write.json | Client: write single register (06) en write multiple coils (15) |

Importeren: Menu → Import → kies het JSON-bestand (of plak de inhoud). Pas indien nodig het host-adres van de client aan (standaard 127.0.0.1). Voor lokaal testen: start eerst de server-flow, daarna de client-flow.

Handmatige installatie

  1. Kopieer de package naar ~/.node-red/node_modules/node-red-contrib-modbus-tcp-full-avd
  2. Voer uit: npm install in die directory
  3. 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

  • readDatapayload.action, payload.type, payload.address, payload.quantity, payload.data, payload.dataMap
  • showDatapayload.action, payload.summary (per type: coils, discreteInputs, holdingRegisters, inputRegisters)
  • generateTestDatapayload.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 (Release notes)

1.1.3

  • Voorbeeldflows toegevoegd in examples/: client read, client write, server met testdata. Importeerbaar via Menu → Import.
  • Server testdata: Startadres en aantal (address, quantity) worden nu altijd als getal verwerkt; geen string-concatenatie meer bij waarden uit de message (bijv. uit een inject of dashboard).
  • Client/Server: Overal waar address of quantity uit msg/payload komen worden ze met Number() geconverteerd voor correcte berekeningen.

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