@mrcamilletti/node-red-contrib-serial-modbus-api

1.1.1 • Public • Published

Serial Modbus API Server for NodeRED

npm version

Installation:

Requires NodeRED installed, check here.

$ cd ~/.node-red
$ npm i @mrcamilletti/node-red-contrib-serial-modbus-api

Modbus request node

Modbus Server: Select configuration node (required)
msg.topic: Select option to change message topic. Default: Keep Retries: Number of retries in case of timeout.

Modbus Server configuration node

Port: Serial device location. i.e.: /dev/ttyUSB0
Settings: : Baud rate, data bits, parity check and stop bits.
Timeout: Response timeout from device request. Value in milliseconds.
Interval: Sleep time between transactions. Value in milliseconds.
Queue capacity: Máximum number of transactions in the queue.

Access to single and multiple devices through node

Payload format for reading:

{ 
    "id": <number> | <Array>,
    "read" : <string> "coil" | "input" | "holding" | "discrete",
    "addr": <number>,
    "quantity": <number>
}
{ 
    "id": <number> | <Array>,
    "read" : <string> "coil" | "input" | "holding" | "discrete",
    "from": <number>,
    "to": <number>
}

Payload format for writting:

{ 
    "id": <number> | <Array>,
    "write": <string> "coil" | "holding",
    "addr": <number>,
    "value": <Array>
}

Read Coils from single device using address and quantity:

msg.payload = {
    id: 1,
    read: "coil",
    addr: 0,
    quantity: 5
}

Read Coils from single device using from and to:

msg.payload = {
    id: 2,
    read: "coil",
    from: 1,
    to: 2
}

Read Inputs and Holdings from single device:

msg.payload = {
    id: 1,
    read: "input",
    from: 0,
    to: 1
}
msg.payload = {
    id: 2,
    read: "holding",
    from: 0,
    to: 1
}

Write Coils and Holdings to device 1:

msg.payload = {
    id: 1,
    write: "holding",
    addr: 0,
    value: [1,2,3,4]
}
msg.payload = {
    id: 1,
    write: "coil",
    addr: 0,
    value: [1,0,1,0]
}

Read and Write Coils and Holdings to multiple devices:

msg.payload = {
    id: [1,2,5],
    write: "coil",
    addr: 0,
    value: [1,1,1,1]
}
msg.payload = {
    id: [1,2,5],
    read: "coil",
    addr: 0,
    quantity: 4
}

Check responses from results and error objects

Transaction success (first output)

msg.payload = {
    ...
    result: {
        "data":[ ... ],
        "buffer":[ ... ]
    }
}

Transaction error (second output)

msg.payload = {
    ...
    error: {
        "name": "...",
        "message": "...",
        "errno": "..."
    }
}

Add number of retries

In case of timeout error, the message can be pushed back to the queue a number of times specified by payload.retries

msg.payload = {
    ...
    retries: 5
}

Readme

Keywords

Package Sidebar

Install

npm i @mrcamilletti/node-red-contrib-serial-modbus-api

Weekly Downloads

1

Version

1.1.1

License

Unlicense

Unpacked Size

34.9 kB

Total Files

9

Last publish

Collaborators

  • mrcamilletti