Writing Modbus Data with node-red

5 function for convert number to modbus buffer for modbus flex write

  1. int32ToBuffer
  2. int32InvToBuffer
  3. float32ToBuffer
  4. float32InvToBuffer
  5. dataToBuffer

contact me or follow me : https://www.facebook.com/profile.php?id=61550015338310

[{"id":"6e98e8dbaefc3ef8","type":"function","z":"a0f3e31f7f9508e3","name":"float32 To Buffer","func":"function int32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction int32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction dataToBuffer(value) {\n    var mbbuffer = new Uint16Array(1);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setUint16(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    return [uint16Value1];\n}\n\nvar value = msg.payload;\nvar mbbuffer = float32ToBuffer(value);\n\nvar modbusfx = {\n    payload: {\n        'value': [\n            mbbuffer[0],\n            mbbuffer[1],\n        ],\n        'fc': 16,\n        'unitid': 1,\n        'address': 1004,\n        'quantity': 2\n    }\n}\n\nmsg.payload = modbusfx.payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":180,"wires":[["e2f114c7e65e4090"]]},{"id":"4cb1dd570a305342","type":"inject","z":"a0f3e31f7f9508e3","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1234.5","payloadType":"str","x":130,"y":180,"wires":[["6e98e8dbaefc3ef8","bcf26f9cfe84bd57"]]},{"id":"e2f114c7e65e4090","type":"modbus-flex-write","z":"a0f3e31f7f9508e3","name":"","showStatusActivities":false,"showErrors":false,"showWarnings":true,"server":"ac518f1fa34b61a4","emptyMsgOnFail":false,"keepMsgProperties":false,"delayOnStart":false,"startDelayTime":"","x":670,"y":200,"wires":[["a6908251f9484c89"],[]]},{"id":"a6908251f9484c89","type":"debug","z":"a0f3e31f7f9508e3","name":"debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":870,"y":200,"wires":[]},{"id":"bcf26f9cfe84bd57","type":"function","z":"a0f3e31f7f9508e3","name":"float32Inv To Buffer","func":"function int32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction int32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction dataToBuffer(value) {\n    var mbbuffer = new Uint16Array(1);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setUint16(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    return [uint16Value1];\n}\n\nvar value = msg.payload;\nvar mbbuffer = float32InvToBuffer(value);\n\nvar modbusfx = {\n    payload: {\n        'value': [\n            mbbuffer[0],\n            mbbuffer[1],\n        ],\n        'fc': 16,\n        'unitid': 1,\n        'address': 1006,\n        'quantity': 2\n    }\n}\nmsg.payload = modbusfx.payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":220,"wires":[["e2f114c7e65e4090"]]},{"id":"49203e38d5e2ed12","type":"function","z":"a0f3e31f7f9508e3","name":"int32 To Buffer","func":"function int32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction int32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction dataToBuffer(value) {\n    var mbbuffer = new Uint16Array(1);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setUint16(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    return [uint16Value1];\n}\n\nvar value = msg.payload;\nvar mbbuffer = int32ToBuffer(value);\n\nvar modbusfx = {\n    payload: {\n        'value': [\n            mbbuffer[0],\n            mbbuffer[1],\n        ],\n        'fc': 16,\n        'unitid': 1,\n        'address': 1000,\n        'quantity': 2\n    }\n}\n\nmsg.payload = modbusfx.payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":60,"wires":[["e2f114c7e65e4090"]]},{"id":"16d12c63d8a10546","type":"inject","z":"a0f3e31f7f9508e3","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"87654321","payloadType":"num","x":120,"y":60,"wires":[["49203e38d5e2ed12","6c77530c0937b65e"]]},{"id":"6c77530c0937b65e","type":"function","z":"a0f3e31f7f9508e3","name":"int32Inv To Buffer","func":"function int32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction int32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction dataToBuffer(value) {\n    var mbbuffer = new Uint16Array(1);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setUint16(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    return [uint16Value1];\n}\n\nvar value = msg.payload;\nvar mbbuffer = int32InvToBuffer(value);\n\nvar modbusfx = {\n    payload: {\n        'value': [\n            mbbuffer[0],\n            mbbuffer[1],\n        ],\n        'fc': 16,\n        'unitid': 1,\n        'address': 1002,\n        'quantity': 2\n    }\n}\n\nmsg.payload = modbusfx.payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":100,"wires":[["e2f114c7e65e4090"]]},{"id":"4ab9486c56ec971c","type":"inject","z":"a0f3e31f7f9508e3","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"50000","payloadType":"num","x":130,"y":340,"wires":[["fe65503ab1695def"]]},{"id":"a673ab6639c23b4e","type":"function","z":"a0f3e31f7f9508e3","name":"data To Buffer","func":"function int32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction int32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction dataToBuffer(value) {\n    var mbbuffer = new Uint16Array(1);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setUint16(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    return [uint16Value1];\n}\n\nvar value = msg.payload;\nvar mbbuffer = dataToBuffer(value);\n\nvar modbusfx = {\n    payload: {\n        'value': [\n            mbbuffer[0],\n        ],\n        'fc': 16,\n        'unitid': 1,\n        'address': 1008,\n        'quantity': 1\n    }\n}\n\nmsg.payload = modbusfx.payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":300,"wires":[["e2f114c7e65e4090"]]},{"id":"f0242ef1d7ad0380","type":"inject","z":"a0f3e31f7f9508e3","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"-20000","payloadType":"num","x":130,"y":300,"wires":[["a673ab6639c23b4e"]]},{"id":"fe65503ab1695def","type":"function","z":"a0f3e31f7f9508e3","name":"data To Buffer","func":"function int32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction int32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setInt32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32ToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    var uint16Value2 = mbbuffer[1];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction float32InvToBuffer(value) {\n    var mbbuffer = new Uint16Array(2);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setFloat32(0, value, true);\n    var uint16Value1 = mbbuffer[1];\n    var uint16Value2 = mbbuffer[0];\n    return [uint16Value1, uint16Value2];\n}\n\nfunction dataToBuffer(value) {\n    var mbbuffer = new Uint16Array(1);\n    var dataView = new DataView(mbbuffer.buffer);\n    dataView.setUint16(0, value, true);\n    var uint16Value1 = mbbuffer[0];\n    return [uint16Value1];\n}\n\nvar value = msg.payload;\nvar mbbuffer = dataToBuffer(value);\n\nvar modbusfx = {\n    payload: {\n        'value': [\n            mbbuffer[0],\n        ],\n        'fc': 16,\n        'unitid': 1,\n        'address': 1009,\n        'quantity': 1\n    }\n}\n\nmsg.payload = modbusfx.payload\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":340,"wires":[["e2f114c7e65e4090"]]},{"id":"062c1f7b868e78d4","type":"modbus-server","z":"a0f3e31f7f9508e3","name":"","logEnabled":false,"hostname":"0.0.0.0","serverPort":10502,"responseDelay":100,"delayUnit":"ms","coilsBufferSize":10000,"holdingBufferSize":10000,"inputBufferSize":10000,"discreteBufferSize":10000,"showErrors":false,"x":1080,"y":200,"wires":[[],[],[],[],[]]},{"id":"ac518f1fa34b61a4","type":"modbus-client","name":"local Mosbus Server","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"127.0.0.1","tcpPort":"10502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"0x3A","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true,"showWarnings":true,"showLogs":true}]

Flow Info

Created 1 year, 9 months ago
Rating: 5 2

Owner

Actions

Rate:

Node Types

Core
  • debug (x1)
  • function (x6)
  • inject (x4)
Other
  • modbus-client (x1)
  • modbus-flex-write (x1)
  • modbus-server (x1)

Tags

  • modbus
  • buffer
  • write
  • int32
  • float
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option