I have 2 devices connected on Modbus RS485 RTU loop.
a. Device : Energy Meter : Selec make. I am reading Input Registers and Data type is FLOAT. I am able to Parse this sucessfully.
b. Device : Temp Controller : Selec Make, Data sheet enclosed. As per data sheet, I should get process value at address 30007, data type is DINT.
I am able to connect and get data from Device b also, I am not able to parse the data into actual values. I am using int32 (be) and results are not as required.
When I try to get this data using MODSCAN, I am getting correct data with datay type "Integer"
Please help to get this working.
My flow is attached as below:
[
{
"id": "66e4f4158d59d282",
"type": "function",
"z": "578e5348ccc7cdd5",
"name": "",
"func": "\nenergy_meter= {\n 'fc': 4, \n 'unitid': 1, \n 'address': 20, \n 'quantity': 10 \n};\n\noven2_temp= {\n 'fc': 4, \n 'unitid': 3, \n 'address': 7, \n 'quantity': 3 \n};\n\n\na = {payload:energy_meter,delay:2000};\nb = {payload:oven2_temp,delay:4000};\n\nreturn [[a], [b]];",
"outputs": 2,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 280,
"y": 720,
"wires": [
[
"cc28d35185604bfd"
],
[
"c1547bdfda82c3bc"
]
]
},
{
"id": "27dc9d110d92d47a",
"type": "inject",
"z": "578e5348ccc7cdd5",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "5",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 110,
"y": 720,
"wires": [
[
"66e4f4158d59d282"
]
]
},
{
"id": "cc28d35185604bfd",
"type": "delay",
"z": "578e5348ccc7cdd5",
"name": "",
"pauseType": "delayv",
"timeout": "500",
"timeoutUnits": "milliseconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"outputs": 1,
"x": 440,
"y": 680,
"wires": [
[
"5c81e7510c607d0a"
]
]
},
{
"id": "c1547bdfda82c3bc",
"type": "delay",
"z": "578e5348ccc7cdd5",
"name": "",
"pauseType": "delayv",
"timeout": "500",
"timeoutUnits": "milliseconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"outputs": 1,
"x": 440,
"y": 740,
"wires": [
[
"1d54e2682f86d988"
]
]
},
{
"id": "5c81e7510c607d0a",
"type": "modbus-flex-getter",
"z": "578e5348ccc7cdd5",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"logIOActivities": false,
"server": "a9a14316b0583d1e",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"x": 650,
"y": 680,
"wires": [
[
"8119e56070bb590f"
],
[]
]
},
{
"id": "1d54e2682f86d988",
"type": "modbus-flex-getter",
"z": "578e5348ccc7cdd5",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"logIOActivities": false,
"server": "a9a14316b0583d1e",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"x": 630,
"y": 740,
"wires": [
[
"b47b99b4d322143c"
],
[]
]
},
{
"id": "086351471ddf6179",
"type": "debug",
"z": "578e5348ccc7cdd5",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1210,
"y": 680,
"wires": []
},
{
"id": "a2f79215e9e52fac",
"type": "debug",
"z": "578e5348ccc7cdd5",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1210,
"y": 740,
"wires": []
},
{
"id": "4a69db0ca81d210a",
"type": "buffer-parser",
"z": "578e5348ccc7cdd5",
"name": "",
"data": "payload",
"dataType": "msg",
"specification": "spec",
"specificationType": "ui",
"items": [
{
"type": "int32be",
"name": "item2",
"offset": 0,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
}
],
"swap1": "",
"swap2": "",
"swap3": "",
"swap1Type": "swap",
"swap2Type": "swap",
"swap3Type": "swap",
"msgProperty": "payload",
"msgPropertyType": "str",
"resultType": "value",
"resultTypeType": "return",
"multipleResult": true,
"fanOutMultipleResult": true,
"setTopic": true,
"outputs": 1,
"x": 1010,
"y": 740,
"wires": [
[
"a2f79215e9e52fac"
]
]
},
{
"id": "8119e56070bb590f",
"type": "function",
"z": "578e5348ccc7cdd5",
"name": "",
"func": "var a = msg.payload[7]\nvar b = msg.payload[8]\nmsg.payload = [a,b]\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 840,
"y": 680,
"wires": [
[
"d74a72f76f315273"
]
]
},
{
"id": "d74a72f76f315273",
"type": "buffer-parser",
"z": "578e5348ccc7cdd5",
"name": "",
"data": "payload",
"dataType": "msg",
"specification": "spec",
"specificationType": "ui",
"items": [
{
"type": "floatbe",
"name": "item1",
"offset": 0,
"length": 1,
"offsetbit": 0,
"scale": "1",
"mask": ""
}
],
"swap1": "",
"swap2": "",
"swap3": "",
"swap1Type": "swap",
"swap2Type": "swap",
"swap3Type": "swap",
"msgProperty": "payload",
"msgPropertyType": "str",
"resultType": "value",
"resultTypeType": "return",
"multipleResult": true,
"fanOutMultipleResult": true,
"setTopic": true,
"outputs": 1,
"x": 1030,
"y": 680,
"wires": [
[
"086351471ddf6179"
]
]
},
{
"id": "b47b99b4d322143c",
"type": "function",
"z": "578e5348ccc7cdd5",
"name": "",
"func": "var a = msg.payload[0]\nvar b = msg.payload[1]\nmsg.payload = [a,b]\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 840,
"y": 740,
"wires": [
[
"4a69db0ca81d210a"
]
]
},
{
"id": "a9a14316b0583d1e",
"type": "modbus-client",
"name": "",
"clienttype": "serial",
"bufferCommands": true,
"stateLogEnabled": false,
"queueLogEnabled": false,
"tcpHost": "127.0.0.1",
"tcpPort": "502",
"tcpType": "DEFAULT",
"serialPort": "/dev/ttyUSB0",
"serialType": "RTU-BUFFERD",
"serialBaudrate": "9600",
"serialDatabits": "8",
"serialStopbits": "1",
"serialParity": "none",
"serialConnectionDelay": "100",
"unit_id": "1",
"commandDelay": "1",
"clientTimeout": "1000",
"reconnectOnTimeout": true,
"reconnectTimeout": "2000",
"parallelUnitIdsAllowed": true
}
]
Red circled is output from device b (temp. controller) which is not OK. Blue circled is output from energy meter - Frequency and is OK.
Selec data sheet snip is also enclosed below:
please support.