Created
April 29, 2021 12:11
-
-
Save kumajaya/701fe6363fbb082b903f6770a4142ee3 to your computer and use it in GitHub Desktop.
Read Siemens PAC3200 via Modbus TCP dan push it to Modbus RTU
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"id": "ccbb31db.f9e2", | |
"type": "modbus-flex-write", | |
"z": "d3b286db.83cb78", | |
"name": "DCS", | |
"showStatusActivities": false, | |
"showErrors": false, | |
"server": "f94614f1.8e4828", | |
"emptyMsgOnFail": false, | |
"keepMsgProperties": false, | |
"x": 1190, | |
"y": 580, | |
"wires": [ | |
[ | |
"3c5c1111.87e9be" | |
], | |
[ | |
"a42229b8.ad0f18" | |
] | |
] | |
}, | |
{ | |
"id": "c8f970a1.04c37", | |
"type": "inject", | |
"z": "d3b286db.83cb78", | |
"name": "register", | |
"props": [ | |
{ | |
"p": "payload" | |
}, | |
{ | |
"p": "topic", | |
"vt": "str" | |
} | |
], | |
"repeat": "30", | |
"crontab": "", | |
"once": true, | |
"onceDelay": "5", | |
"topic": "palembang/incoming/active-energy", | |
"payload": "{\"fc\":3,\"unitid\":1,\"address\":801,\"quantity\":4}", | |
"payloadType": "json", | |
"x": 100, | |
"y": 520, | |
"wires": [ | |
[ | |
"7b290e67.4e8e" | |
] | |
] | |
}, | |
{ | |
"id": "3c5c1111.87e9be", | |
"type": "debug", | |
"z": "d3b286db.83cb78", | |
"name": "", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1350, | |
"y": 560, | |
"wires": [] | |
}, | |
{ | |
"id": "b0913cd7.d1df2", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "clear", | |
"rules": [ | |
{ | |
"t": "delete", | |
"p": "modbusRequest", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "responseBuffer", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "queueLengthByUnitId", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "queueUnitId", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "unitId", | |
"pt": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 390, | |
"y": 520, | |
"wires": [ | |
[ | |
"a2e83175.e7fda", | |
"e9d7e605.84fe48" | |
] | |
] | |
}, | |
{ | |
"id": "7b290e67.4e8e", | |
"type": "modbus-flex-getter", | |
"z": "d3b286db.83cb78", | |
"name": "MV-IN", | |
"showStatusActivities": false, | |
"showErrors": false, | |
"logIOActivities": false, | |
"server": "3795cb6c.a895e4", | |
"useIOFile": false, | |
"ioFile": "", | |
"useIOForPayload": false, | |
"emptyMsgOnFail": false, | |
"keepMsgProperties": false, | |
"x": 250, | |
"y": 520, | |
"wires": [ | |
[ | |
"b0913cd7.d1df2" | |
], | |
[ | |
"24dd3ce2.08dc14" | |
] | |
] | |
}, | |
{ | |
"id": "f4a7b470.206378", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "clear", | |
"rules": [ | |
{ | |
"t": "delete", | |
"p": "modbusRequest", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "responseBuffer", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "queueLengthByUnitId", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "queueUnitId", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "unitId", | |
"pt": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 390, | |
"y": 560, | |
"wires": [ | |
[ | |
"e9d7e605.84fe48", | |
"5cc7a387.5faebc" | |
] | |
] | |
}, | |
{ | |
"id": "ec8afbc1.4f9348", | |
"type": "modbus-flex-getter", | |
"z": "d3b286db.83cb78", | |
"name": "MV-IN", | |
"showStatusActivities": false, | |
"showErrors": false, | |
"logIOActivities": false, | |
"server": "3795cb6c.a895e4", | |
"useIOFile": false, | |
"ioFile": "", | |
"useIOForPayload": false, | |
"emptyMsgOnFail": false, | |
"keepMsgProperties": false, | |
"x": 250, | |
"y": 560, | |
"wires": [ | |
[ | |
"f4a7b470.206378" | |
], | |
[] | |
] | |
}, | |
{ | |
"id": "a2e83175.e7fda", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "register", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"fc\":3,\"unitid\":1,\"address\":817,\"quantity\":4}", | |
"tot": "json" | |
}, | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "palembang/incoming/reactive-energy", | |
"tot": "str" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 100, | |
"y": 560, | |
"wires": [ | |
[ | |
"ec8afbc1.4f9348" | |
] | |
] | |
}, | |
{ | |
"id": "15f76c2f.cd61c4", | |
"type": "switch", | |
"z": "d3b286db.83cb78", | |
"name": "", | |
"property": "topic", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "palembang/incoming/active-energy", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "palembang/incoming/reactive-energy", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 670, | |
"y": 540, | |
"wires": [ | |
[ | |
"6a4e89a9.69dcc8" | |
], | |
[ | |
"35e8ff73.4b31d" | |
] | |
] | |
}, | |
{ | |
"id": "e9d7e605.84fe48", | |
"type": "function", | |
"z": "d3b286db.83cb78", | |
"name": "remap", | |
"func": "let pay = msg.payload;\n\nconst buf = Buffer.allocUnsafe(8);\nbuf.writeUInt16BE(pay[3],6);\nbuf.writeUInt16BE(pay[2],4);\nbuf.writeUInt16BE(pay[1],2);\nbuf.writeUInt16BE(pay[0],0);\n\npay = buf.readDoubleBE(0) / 1000.0;\n\nconst buf2 = Buffer.allocUnsafe(4);\nbuf2.writeFloatBE(pay);\n\nvar tmp = [];\ntmp.push(buf2.readUInt16BE(2));\ntmp.push(buf2.readUInt16BE(0));\n\nmsg.payload = tmp;\n\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"x": 530, | |
"y": 560, | |
"wires": [ | |
[ | |
"15f76c2f.cd61c4" | |
] | |
] | |
}, | |
{ | |
"id": "6a4e89a9.69dcc8", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "Active Energy", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\t \"value\": payload,\t \"fc\": 16,\t \"unitid\": 4,\t \"address\": 170,\t \"quantity\": 2\t}", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 840, | |
"y": 460, | |
"wires": [ | |
[ | |
"ccbb31db.f9e2" | |
] | |
] | |
}, | |
{ | |
"id": "35e8ff73.4b31d", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "Reactive Energy", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\t \"value\": payload,\t \"fc\": 16,\t \"unitid\": 4,\t \"address\": 172,\t \"quantity\": 2\t}", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 840, | |
"y": 500, | |
"wires": [ | |
[ | |
"ccbb31db.f9e2" | |
] | |
] | |
}, | |
{ | |
"id": "5cc7a387.5faebc", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "register", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"fc\":3,\"unitid\":1,\"address\":55,\"quantity\":16}", | |
"tot": "json" | |
}, | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "palembang/incoming/average", | |
"tot": "str" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 100, | |
"y": 600, | |
"wires": [ | |
[ | |
"79c6e50c.37157c" | |
] | |
] | |
}, | |
{ | |
"id": "5f6594a9.1d231c", | |
"type": "function", | |
"z": "d3b286db.83cb78", | |
"name": "format", | |
"func": "function scale(val, min, max, scalemin, scalemax) {\n var tmp = ((scalemax - scalemin) * (val - min) / (max - min)) + scalemin;\n return (tmp > scalemax ? scalemax : tmp);\n}\n\nlet pay = msg.payload.value;\n\nconst buf = Buffer.allocUnsafe(4);\nbuf.writeUInt16BE(pay[1],2);\nbuf.writeUInt16BE(pay[0],0);\n\npay = parseFloat(scale(buf.readFloatBE(0), msg.payload.min, msg.payload.max, msg.payload.scalemin, msg.payload.scalemax)).toFixed(0);\nbuf.writeUInt16BE(pay,0);\n\nvar tmp;\nvar out = [];\n\ntmp = { topic: msg.payload.topic, payload:{\n \"value\": buf.readUInt16BE(0),\n \"fc\": msg.payload.fc,\n \"unitid\": msg.payload.unitid,\n \"address\": msg.payload.address,\n \"quantity\": msg.payload.quantity\n} }\nout.push(tmp);\n\nreturn out;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"x": 1030, | |
"y": 600, | |
"wires": [ | |
[ | |
"ccbb31db.f9e2" | |
] | |
] | |
}, | |
{ | |
"id": "79c6e50c.37157c", | |
"type": "modbus-flex-getter", | |
"z": "d3b286db.83cb78", | |
"name": "MV-IN", | |
"showStatusActivities": false, | |
"showErrors": false, | |
"logIOActivities": false, | |
"server": "3795cb6c.a895e4", | |
"useIOFile": false, | |
"ioFile": "", | |
"useIOForPayload": false, | |
"emptyMsgOnFail": false, | |
"keepMsgProperties": false, | |
"x": 250, | |
"y": 600, | |
"wires": [ | |
[ | |
"b6e53295.6491b" | |
], | |
[] | |
] | |
}, | |
{ | |
"id": "b6e53295.6491b", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "clear", | |
"rules": [ | |
{ | |
"t": "delete", | |
"p": "modbusRequest", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "responseBuffer", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "queueLengthByUnitId", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "queueUnitId", | |
"pt": "msg" | |
}, | |
{ | |
"t": "delete", | |
"p": "unitId", | |
"pt": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 390, | |
"y": 600, | |
"wires": [ | |
[ | |
"eab8b84.01cbb48" | |
] | |
] | |
}, | |
{ | |
"id": "eab8b84.01cbb48", | |
"type": "split", | |
"z": "d3b286db.83cb78", | |
"name": "", | |
"splt": "\\n", | |
"spltType": "str", | |
"arraySplt": "2", | |
"arraySpltType": "len", | |
"stream": false, | |
"addname": "", | |
"x": 530, | |
"y": 600, | |
"wires": [ | |
[ | |
"2d9a153b.4ac75a" | |
] | |
] | |
}, | |
{ | |
"id": "2d9a153b.4ac75a", | |
"type": "switch", | |
"z": "d3b286db.83cb78", | |
"name": "", | |
"property": "parts.index", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "0", | |
"vt": "num" | |
}, | |
{ | |
"t": "eq", | |
"v": "2", | |
"vt": "num" | |
}, | |
{ | |
"t": "eq", | |
"v": "3", | |
"vt": "num" | |
}, | |
{ | |
"t": "eq", | |
"v": "7", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 4, | |
"x": 670, | |
"y": 600, | |
"wires": [ | |
[ | |
"70b4db99.c04674" | |
], | |
[ | |
"b706de64.ef12d" | |
], | |
[ | |
"a4021d42.a7ce9" | |
], | |
[ | |
"a5bbb475.3de958" | |
] | |
] | |
}, | |
{ | |
"id": "70b4db99.c04674", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "Frequency", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\t \"value\": payload,\t \"min\": 0,\t \"max\": 65.0,\t \"scalemin\": 0,\t \"scalemax\": 65535,\t \"fc\": 6,\t \"unitid\": 4,\t \"address\": 174,\t \"quantity\": 1\t}\t", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 850, | |
"y": 540, | |
"wires": [ | |
[ | |
"5f6594a9.1d231c" | |
] | |
] | |
}, | |
{ | |
"id": "b706de64.ef12d", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "Avr. Vph-ph", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\t \"value\": payload,\t \"min\": 0,\t \"max\": 25000.0,\t \"scalemin\": 0,\t \"scalemax\": 65535,\t \"fc\": 6,\t \"unitid\": 4,\t \"address\": 176,\t \"quantity\": 1\t}", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 850, | |
"y": 580, | |
"wires": [ | |
[ | |
"5f6594a9.1d231c" | |
] | |
] | |
}, | |
{ | |
"id": "a4021d42.a7ce9", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "Avr. A", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\t \"value\": payload,\t \"min\": 0,\t \"max\": 250.0,\t \"scalemin\": 0,\t \"scalemax\": 65535,\t \"fc\": 6,\t \"unitid\": 4,\t \"address\": 178,\t \"quantity\": 1\t}", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 870, | |
"y": 620, | |
"wires": [ | |
[ | |
"5f6594a9.1d231c" | |
] | |
] | |
}, | |
{ | |
"id": "a5bbb475.3de958", | |
"type": "change", | |
"z": "d3b286db.83cb78", | |
"name": "Total Factor", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\t \"value\": payload,\t \"min\": 0,\t \"max\": 1.0,\t \"scalemin\": 0,\t \"scalemax\": 65535,\t \"fc\": 6,\t \"unitid\": 4,\t \"address\": 180,\t \"quantity\": 1\t}", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 850, | |
"y": 660, | |
"wires": [ | |
[ | |
"5f6594a9.1d231c" | |
] | |
] | |
}, | |
{ | |
"id": "24dd3ce2.08dc14", | |
"type": "modbus-response", | |
"z": "d3b286db.83cb78", | |
"name": "", | |
"registerShowMax": 20, | |
"x": 430, | |
"y": 480, | |
"wires": [] | |
}, | |
{ | |
"id": "a42229b8.ad0f18", | |
"type": "modbus-response", | |
"z": "d3b286db.83cb78", | |
"name": "", | |
"registerShowMax": 20, | |
"x": 1370, | |
"y": 600, | |
"wires": [] | |
}, | |
{ | |
"id": "f94614f1.8e4828", | |
"type": "modbus-client", | |
"name": "DCS", | |
"clienttype": "serial", | |
"bufferCommands": true, | |
"stateLogEnabled": false, | |
"queueLogEnabled": false, | |
"tcpHost": "192.168.76.197", | |
"tcpPort": "4001", | |
"tcpType": "TELNET", | |
"serialPort": "/dev/ttyUSB0", | |
"serialType": "RTU-BUFFERD", | |
"serialBaudrate": "9600", | |
"serialDatabits": "8", | |
"serialStopbits": "1", | |
"serialParity": "none", | |
"serialConnectionDelay": "100", | |
"unit_id": 4, | |
"commandDelay": 1, | |
"clientTimeout": 1000, | |
"reconnectOnTimeout": true, | |
"reconnectTimeout": 2000, | |
"parallelUnitIdsAllowed": true | |
}, | |
{ | |
"id": "3795cb6c.a895e4", | |
"type": "modbus-client", | |
"name": "PAC3200 MV-IN", | |
"clienttype": "tcp", | |
"bufferCommands": true, | |
"stateLogEnabled": false, | |
"queueLogEnabled": false, | |
"tcpHost": "192.168.76.194", | |
"tcpPort": "502", | |
"tcpType": "DEFAULT", | |
"serialPort": "/dev/ttyUSB", | |
"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 | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment