# Writing 16bit/32 bit Signed Integers to Modbus TCP server on NodeRed

**URL:** <https://discourse.nodered.org/t/writing-16bit-32-bit-signed-integers-to-modbus-tcp-server-on-nodered/55370>\
**Category:** General\
**Tags:** modbus\
**Created:** [17 December 2021 22:36 UTC](https://discourse.nodered.org/t/writing-16bit-32-bit-signed-integers-to-modbus-tcp-server-on-nodered/55370 "2021-12-17T22:36:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![kkshe001](https://avatars.discourse-cdn.com/v4/letter/k/838e76/32.png) [@kkshe001](https://discourse.nodered.org/u/kkshe001)\
**Post date:** [17 December 2021 22:36 UTC](https://discourse.nodered.org/t/writing-16bit-32-bit-signed-integers-to-modbus-tcp-server-on-nodered/55370/1 "2021-12-17T22:36:48Z")

</div>

Hi,

I am reading 16 & 32 bit Signed Integers from Modbus RTU registers and trying to write this back to Modbus TCP Server. Basically I am using node-red to convert Modbus RTU read data to Modbus TCP data so that an external client can access it.

Problem:  
Modbus TCP write only accepts values in the range 0-65535 (basically unsigned). This creates an issue because 16 bit signed int value such as a temperature value can contain negative values.

Help?  
Can you help me find a way to write 16/32 bit signed integer values via Modbus TCP. Basically a good conversion from 16/32 bit signed to unsigned in the range 0-65535 and a way to convert it back at the TCP client.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [18 December 2021 00:25 UTC](https://discourse.nodered.org/t/writing-16bit-32-bit-signed-integers-to-modbus-tcp-server-on-nodered/55370/2 "2021-12-18T00:25:51Z")

</div>

Node-red-contrib-buffer-parser has this capability.

Check out the built in examples (CTRL-I)

---

<div class="post-metadata">

**Author:** ![Becker](https://avatars.discourse-cdn.com/v4/letter/b/c77e96/32.png) [@Becker](https://discourse.nodered.org/u/Becker)\
**Post date:** [19 December 2021 11:08 UTC](https://discourse.nodered.org/t/writing-16bit-32-bit-signed-integers-to-modbus-tcp-server-on-nodered/55370/3 "2021-12-19T11:08:54Z")

</div>

here is an example:

```auto
[
    {
        "id": "6be4e067.5a02",
        "type": "buffer-maker",
        "z": "2bd6dc17.504c44",
        "name": "",
        "specification": "spec",
        "specificationType": "ui",
        "items": [
            {
                "name": "item1",
                "type": "uint32be",
                "length": 1,
                "dataType": "msg",
                "data": "payload"
            }
        ],
        "swap1": "",
        "swap2": "",
        "swap3": "",
        "swap1Type": "swap",
        "swap2Type": "swap",
        "swap3Type": "swap",
        "msgProperty": "payload",
        "msgPropertyType": "str",
        "x": 390,
        "y": 420,
        "wires": [
            [
                "aa84dcee.4b5ff8"
            ]
        ]
    },
    {
        "id": "aa84dcee.4b5ff8",
        "type": "buffer-parser",
        "z": "2bd6dc17.504c44",
        "name": "",
        "data": "payload",
        "dataType": "msg",
        "specification": "spec",
        "specificationType": "ui",
        "items": [
            {
                "type": "uint16be",
                "name": "data",
                "offset": 0,
                "length": 2,
                "offsetbit": 0,
                "scale": "1",
                "mask": ""
            }
        ],
        "swap1": "",
        "swap2": "",
        "swap3": "",
        "swap1Type": "swap",
        "swap2Type": "swap",
        "swap3Type": "swap",
        "msgProperty": "payload",
        "msgPropertyType": "str",
        "resultType": "value",
        "resultTypeType": "output",
        "multipleResult": true,
        "fanOutMultipleResult": false,
        "setTopic": true,
        "outputs": 1,
        "x": 670,
        "y": 420,
        "wires": [
            [
                "aebe9ede.e25cf",
                "cff8ce0.a8b63b"
            ]
        ]
    },
    {
        "id": "aebe9ede.e25cf",
        "type": "modbus-write",
        "z": "2bd6dc17.504c44",
        "name": "40236",
        "showStatusActivities": false,
        "showErrors": true,
        "unitid": "3",
        "dataType": "MHoldingRegisters",
        "adr": "40236",
        "quantity": "2",
        "server": "b6c6500c.41cc1",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "x": 850,
        "y": 420,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "b6c6500c.41cc1",
        "type": "modbus-client",
        "name": "SBS2.5",
        "clienttype": "tcp",
        "bufferCommands": true,
        "stateLogEnabled": false,
        "queueLogEnabled": false,
        "tcpHost": "192.168.168.55",
        "tcpPort": "502",
        "tcpType": "TCP-RTU-BUFFERED",
        "serialPort": "/dev/ttyUSB",
        "serialType": "RTU-BUFFERD",
        "serialBaudrate": "9600",
        "serialDatabits": "8",
        "serialStopbits": "1",
        "serialParity": "none",
        "serialConnectionDelay": "100",
        "serialAsciiResponseStartDelimiter": "",
        "unit_id": "3",
        "commandDelay": "10",
        "clientTimeout": "1000",
        "reconnectOnTimeout": true,
        "reconnectTimeout": "2000",
        "parallelUnitIdsAllowed": false
    }
]

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [17 February 2022 11:09 UTC](https://discourse.nodered.org/t/writing-16bit-32-bit-signed-integers-to-modbus-tcp-server-on-nodered/55370/4 "2022-02-17T11:09:24Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
