Writing Modbus Data with node-red
5 function for convert number to modbus buffer for modbus flex write
- int32ToBuffer
- int32InvToBuffer
- float32ToBuffer
- float32InvToBuffer
- 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}]