Dynamic Chart X-Y using FX5U SLMP Protocol.

In this Node-RED project, I have developed a dynamic x-y chart using custom functions to directly communicate with the FX5U PLC via the SLMP protocol. The flow allows users to visualize real-time data from the PLC and control processes effectively. The dynamic chart updates dynamically as the PLC data changes, providing users with valuable insights.

By integrating Node-RED with the FX5U PLC and SLMP protocol, this project offers a powerful solution for industrial automation and other applications. The user-friendly interface facilitates easy interaction with the x-y chart, making it accessible for both beginners and experts.

My goal in sharing this project is to help others in the community understand the potential of Node-RED and its capabilities in industrial automation. By providing detailed documentation and code sharing, I hope to inspire and support individuals interested in integrating their systems with Node-RED for improved data visualization and control.

[{"id":"d04bd2a7e6e645fe","type":"MC Read","z":"be10f2513a47531a","name":"","topic":"","connection":"31e5b2687eb07c38","address":"dint1001,10","addressType":"str","outputFormat":"1","errorHandling":"throw","outputs":1,"x":320,"y":120,"wires":[["d140a7606f28592e"]]},{"id":"294cb74a93c78f19","type":"MC Read","z":"be10f2513a47531a","name":"","topic":"","connection":"31e5b2687eb07c38","address":"dint1021,10","addressType":"str","outputFormat":"1","errorHandling":"throw","outputs":1,"x":320,"y":180,"wires":[["b882478c90ba183f"]]},{"id":"bd8f1a32ff5bc83c","type":"inject","z":"be10f2513a47531a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"0.1","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"connect","payloadType":"msg","x":110,"y":100,"wires":[["d04bd2a7e6e645fe","294cb74a93c78f19"]]},{"id":"b882478c90ba183f","type":"function","z":"be10f2513a47531a","name":"function 8","func":"var b0 = { payload: msg.payload[0] };\nvar b1 = { payload: msg.payload[1] };\nvar b2 = { payload: msg.payload[2] };\nvar b3 = { payload: msg.payload[3] };\nvar b4 = { payload: msg.payload[4] };\nvar b5 = { payload: msg.payload[5] };\nvar b6 = { payload: msg.payload[6] };\nvar b7 = { payload: msg.payload[7] };\nvar b8 = { payload: msg.payload[8] };\nvar b9 = { payload: msg.payload[9] };\nglobal.set(\"b0\", b0.payload);\nglobal.set(\"b1\", b1.payload);\nglobal.set(\"b2\", b2.payload);\nglobal.set(\"b3\", b3.payload);\nglobal.set(\"b4\", b4.payload);\nglobal.set(\"b5\", b5.payload);\nglobal.set(\"b6\", b6.payload);\nglobal.set(\"b7\", b7.payload);\nglobal.set(\"b8\", b8.payload);\nglobal.set(\"b9\", b9.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":180,"wires":[["df1dcf8f977f4fcc"]]},{"id":"df1dcf8f977f4fcc","type":"function","z":"be10f2513a47531a","name":"function 9","func":"var t1 = global.get(\"a0\");\nvar t2 = global.get(\"a1\");\nvar t3 = global.get(\"a2\");\nvar t4 = global.get(\"a3\");\nvar t5 = global.get(\"a4\");\nvar t6 = global.get(\"a5\");\nvar t7 = global.get(\"a6\");\nvar t8 = global.get(\"a7\");\nvar t9 = global.get(\"a8\");\nvar t10 = global.get(\"a9\");\nvar e1 = global.get(\"b0\");\nvar e2 = global.get(\"b1\");\nvar e3 = global.get(\"b2\");\nvar e4 = global.get(\"b3\");\nvar e5 = global.get(\"b4\");\nvar e6 = global.get(\"b5\");\nvar e7 = global.get(\"b6\");\nvar e8 = global.get(\"b7\");\nvar e9 = global.get(\"b8\");\nvar e10 = global.get(\"b9\");\nvar t01 = String(t1);\nvar t02 = String(t2);\nvar t03 = String(t3);\nvar t04 = String(t4);\nvar t05 = String(t5);\nvar t06 = String(t6);\nvar t07 = String(t7);\nvar t08 = String(t8);\nvar t09 = String(t9);\nvar t010 = String(t10);\nmsg.payload = [{\n    \"series\": [\"Demo\"],\n    \"data\":   [[e10,e9,e8,e7,e6,e5,e4,e3,e2,e1]],\n    \"labels\": [t010,t09,t08,t07,t06,t05,t04,t03,t02,t01],\n}];\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":180,"wires":[["88a54b163c7223a7","f17b812b291fe150"]]},{"id":"88a54b163c7223a7","type":"debug","z":"be10f2513a47531a","name":"debug 5","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":820,"y":180,"wires":[]},{"id":"b2ba69c93240a4c6","type":"inject","z":"be10f2513a47531a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":220,"wires":[[]]},{"id":"f17b812b291fe150","type":"ui_chart","z":"be10f2513a47531a","name":"","group":"595895b0.98866c","order":1,"width":24,"height":11,"label":"DYNAMIC X-Y CHART ","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"bezier","nodata":"","dot":false,"ymin":"0","ymax":"20","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":true,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":860,"y":240,"wires":[[]]},{"id":"d140a7606f28592e","type":"function","z":"be10f2513a47531a","name":"function 10","func":"var a0 = { payload: msg.payload[0] };\nvar a1 = { payload: msg.payload[1] };\nvar a2 = { payload: msg.payload[2] };\nvar a3 = { payload: msg.payload[3] };\nvar a4 = { payload: msg.payload[4] };\nvar a5 = { payload: msg.payload[5] };\nvar a6 = { payload: msg.payload[6] };\nvar a7 = { payload: msg.payload[7] };\nvar a8 = { payload: msg.payload[8] };\nvar a9 = { payload: msg.payload[9] };\nglobal.set(\"a0\", a0.payload);\nglobal.set(\"a1\", a1.payload);\nglobal.set(\"a2\", a2.payload);\nglobal.set(\"a3\", a3.payload);\nglobal.set(\"a4\", a4.payload);\nglobal.set(\"a5\", a5.payload);\nglobal.set(\"a6\", a6.payload);\nglobal.set(\"a7\", a7.payload);\nglobal.set(\"a8\", a8.payload);\nglobal.set(\"a9\", a9.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":120,"wires":[["a11c63b9863083fd"]]},{"id":"a11c63b9863083fd","type":"debug","z":"be10f2513a47531a","name":"debug 6","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":820,"y":120,"wires":[]},{"id":"359b86d0ab017c76","type":"function","z":"be10f2513a47531a","name":"function 1","func":"var a0 = { payload: msg.payload};\nglobal.set(\"a0\", a0.payload)\nreturn [a0];","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":340,"wires":[[]]},{"id":"31e5b2687eb07c38","type":"MC Protocol Connection","name":"ms","host":"192.168.3.250","port":"5000","protocol":"TCP","frame":"3E","plcType":"Q","ascii":false,"PLCStation":"","PCStation":"","PLCModuleNo":"","network":"","octalInputOutput":false,"timeout":"1000"},{"id":"595895b0.98866c","type":"ui_group","name":"X-Y GRAPH","tab":"c9285c84.26c5a","order":1,"disp":true,"width":"24","collapse":false,"className":""},{"id":"c9285c84.26c5a","type":"ui_tab","name":"DYNAMIC CHART TRIAL","icon":"fa-line-chart","disabled":false,"hidden":false}]

Flow Info

Created 1 year, 11 months ago
Rating: 3.75 4

Actions

Rate:

Node Types

Core
  • debug (x2)
  • function (x4)
  • inject (x2)
Other

Tags

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