It’s important to keep in mind that there are many different ways to do the same thing in all programming languages, Node-RED is no different.
Here is what I had in mind when I first replied, sorry I was not able to explain it very well…
I have used the same analog input, but in your case, each pac node reads its value and puts the data into msg.payload.
The following function block then moves the msg.payload into a uniquely named msg.
While it works, its a bit double handling because the PAC node itself can put the data in a unique name.
Here is an example of using the pac node to do that:
The end result is you have the exact same CSV output and less nodes.
And here is the flow:
[{"id":"458778ba021a573a","type":"inject","z":"5f29e0bd7dba64d7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":820,"y":240,"wires":[["29b3bd14ece80cf8"]]},{"id":"ef92734ec479da70","type":"function","z":"5f29e0bd7dba64d7","name":"Build","func":"//Build the msg.payload\nmsg.payload = {\n PPM: msg.fl_PPM_SPoint,\n SCM: msg.fl_SCM_SetPoint,\n UV: msg.fl_UV_Meter_2\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1670,"y":240,"wires":[["449e27f95c572ef5","b9b9e34101671791"]]},{"id":"449e27f95c572ef5","type":"debug","z":"5f29e0bd7dba64d7","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1950,"y":160,"wires":[]},{"id":"b9b9e34101671791","type":"csv","z":"5f29e0bd7dba64d7","name":"","sep":",","hdrin":false,"hdrout":"none","multi":"one","ret":"\\n","temp":"PPM, SCM, UV","skip":"0","strings":false,"include_empty_strings":"","include_null_values":"","x":1870,"y":240,"wires":[["a5c3b5502e3b5f99"]]},{"id":"a5c3b5502e3b5f99","type":"debug","z":"5f29e0bd7dba64d7","name":"wire to file node","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2000,"y":440,"wires":[]},{"id":"48a8901022b8bc8c","type":"pac-read","z":"5f29e0bd7dba64d7","device":"91968b30802a8360","dataType":"ana-input","tagName":"FuelLevelPot","tableStartIndex":"","tableLength":"","value":"fl_SCM_SetPoint","valueType":"msg","topic":"","topicType":"none","name":"msg.fl_SCM_SetPoint","x":1260,"y":240,"wires":[["5082c99c4fe0c966"]]},{"id":"29b3bd14ece80cf8","type":"pac-read","z":"5f29e0bd7dba64d7","device":"91968b30802a8360","dataType":"ana-input","tagName":"FuelLevelPot","tableStartIndex":"","tableLength":"","value":"fl_PPM_SPoint","valueType":"msg","topic":"","topicType":"none","name":"msg.fl_PPM_SPoint","x":1020,"y":240,"wires":[["48a8901022b8bc8c"]]},{"id":"5082c99c4fe0c966","type":"pac-read","z":"5f29e0bd7dba64d7","device":"91968b30802a8360","dataType":"ana-input","tagName":"FuelLevelPot","tableStartIndex":"","tableLength":"","value":"fl_UV_Meter_2","valueType":"msg","topic":"","topicType":"none","name":"msg.fl_UV_Meter_2","x":1500,"y":240,"wires":[["ef92734ec479da70"]]},{"id":"91968b30802a8360","type":"pac-device","address":"localhost","protocol":"https","msgQueueFullBehavior":"DROP_OLD"}]
You will need to change your PAC host and API key, but it will give you the jump start to get all the data in order.
No more jumping to the right as each PAC node is read one after the other.