Node-Red nodes for communicating with a Modbus TCP server
Branch: master
Clone or download
Latest commit 08b1a44 Aug 31, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Changed lable to IEEE-754 and markup to javascript Mar 12, 2018
helpers.js Uses jsmodbus 3.x refactor helpers Jul 18, 2018
ieee.js Restructured to work with jsmodbus 3.x. WIP Jun 27, 2018
package-lock.json Adds node version specifics for websoket emitter Aug 7, 2018
package.json Adds node version specifics for websoket emitter Aug 7, 2018
tsconfig.json Uses jsmodbus 3.x refactor helpers Jul 18, 2018



Node-Red Modbus TCP nodes for communicating with a Modbus TCP server.

Based on jsmodbus.


Run the following command in the root directory of your Node-RED install

npm install node-red-contrib-modbustcp


modbus read

alt tag


In addition, you can pass in a msg with one or more payload settings to initiate additional modbus read events.

msg.payload = {
    "name": "Name1", // Should be a unique name
    "topic": "topic1", // Override default topic 
    "dataType": "FC3", // can be format 3, "FC3", or "Coil"
    "address": 0, // starting address
    "quantity": 4, // # of units to read
    "interval": 3000, // polling interval in milliseconds
    "ieeeType": "off", // valid values are "off", "single" or "double"
    "ieeeBE": true // Big Endian format, true/false. false = little endian

Most of the values are optional and server to override the defaults set in the nodes config.

Values for dataType inlcude:

  • "Coil", "FC1", "FC 1", 1
  • "Input", "FC2", "FC 2", 2
  • "HoldingRegister", "FC3", "FC 3", 3
  • "InputRegister", "FC4", "FC 4", 4

If you pass in a msg with a that is the same as one previously passed in, the new values will replace the old. For example, it is possible to change the polling interval of an existing event by passing in the same msg structure with a different "interval" setting.

Note: The IEEE 754 formatting is not applied to binary data types such as "Coil" and will be ignored for those.

Note: Setting ieeeBE = false will for the node to read the inputs as "little endian".

Stop/Kill You can stop or kill the polling of a modbus item by passing in the following:

alt tag

The polled event with the same name given will be stopped if the kill=true is also passed in.

example single input

alt tag

example multiple input

alt tag

modbus write

alt tag


In addition to passing in a payload value for writing, you can also pass in the following in your msg to override the configured defaults:

  • dataType
    • "Coil", "FC5", "FC 5", 5
    • "HoldingRegister", "FC6", "FC 6", 6
    • "Coils", "FC15" "FC 15", 15
    • "HoldingRegisters", "FC16", "FC 16", 16
  • address

example message input:

msg = {
    address: 8,
    dataType: "Coil",
    payload: 1