Reading multiple items with node-red-contrib-opcua

I am including several production lines into my data-gathering program. They use OPC-UA to offer me the information. Single parameter readings are not a problem anymore: I send the nodeid for the parameter I want to read, and I get a message with that single parameter. This is fine.

However, we have 3 production lines (times 3) and we're talking about reading hundreds of parameters. Having a full message for each one will be an incredible overhead, so I want to use the read multiple function.

This is the flow picture:

And this is that part of the flow:

[{"id":"95c94d51.0c6be","type":"OpcUa-Client","z":"2615c1d39a9d789b","endpoint":"c280f55a.54a418","action":"readmultiple","deadbandtype":"a","deadbandvalue":1,"time":"3","timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","name":"SCHMID Preclean 1","x":460,"y":80,"wires":[["ad167c5451c18446"]]},{"id":"c340a1bb.9c55f","type":"debug","z":"2615c1d39a9d789b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1010,"y":80,"wires":[]},{"id":"284db5d9.84d21a","type":"catch","z":"2615c1d39a9d789b","name":"","scope":null,"uncaught":false,"x":500,"y":40,"wires":[["f84f422d.76b1d"]]},{"id":"f84f422d.76b1d","type":"debug","z":"2615c1d39a9d789b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":630,"y":40,"wires":[]},{"id":"1de590136535e44b","type":"inject","z":"2615c1d39a9d789b","name":"Read multiple items","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"5","topic":"readmultiple","payloadType":"str","x":230,"y":40,"wires":[["95c94d51.0c6be"]]},{"id":"e51017af58c218d0","type":"inject","z":"2615c1d39a9d789b","name":"Clear nodeId array","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"0.5","topic":"clearitems","payloadType":"str","x":230,"y":120,"wires":[["95c94d51.0c6be"]]},{"id":"26357084e92477d3","type":"join","z":"2615c1d39a9d789b","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic.nodeId","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"11","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":750,"y":80,"wires":[["611b61f6292ef170"]]},{"id":"ad167c5451c18446","type":"string","z":"2615c1d39a9d789b","name":"","methods":[{"name":"replaceAll","params":[{"type":"str","value":".Value"},{"type":"str","value":""}]},{"name":"replaceAll","params":[{"type":"str","value":"ns=2;s=Machine."},{"type":"str","value":""}]},{"name":"replaceAll","params":[{"type":"str","value":"M01MA01MH01#0_E_B"},{"type":"str","value":"machine_started"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MG01#0_E_B"},{"type":"str","value":"m01_full"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MH14#0_BA_B"},{"type":"str","value":"m01_jam"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MN05#1_X_DW"},{"type":"str","value":"machine_abs_count"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MN05#0_X_DW"},{"type":"str","value":"machine_rel_count"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01GH01#0_BA_Y"},{"type":"str","value":"machine_speed_set"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01GH01#0_E_B"},{"type":"str","value":"machine_conv_enabled"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MS02#0_W_I"},{"type":"str","value":"machine_speed_actual"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MS02#0_OW_I"},{"type":"str","value":"machine_speed_delta_warning"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MS02#0_OG_I"},{"type":"str","value":"machine_speed_delta_alarm"}]},{"name":"replaceAll","params":[{"type":"str","value":"M01SE01MY13#0_E_B"},{"type":"str","value":"machine_standby"}]}],"prop":"topic.nodeId","propout":"topic.nodeId","object":"msg","objectout":"msg","x":630,"y":80,"wires":[["26357084e92477d3"]]},{"id":"611b61f6292ef170","type":"change","z":"2615c1d39a9d789b","name":"fix topic","rules":[{"t":"set","p":"topic","pt":"msg","to":"schmid-preclean-1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":880,"y":80,"wires":[["c340a1bb.9c55f"]]},{"id":"b8229e3c3b252536","type":"link in","z":"2615c1d39a9d789b","name":"Schmid Preclean 1 Variables in","links":["c771c83137c7b564"],"x":190,"y":80,"wires":[["95c94d51.0c6be"]],"l":true},{"id":"c771c83137c7b564","type":"link out","z":"2615c1d39a9d789b","name":"Schmid Preclean Variables","mode":"link","links":["b8229e3c3b252536"],"x":640,"y":380,"wires":[],"l":true},{"id":"5c05ecde52d409b0","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01MA01MH01#0_E_B.Value","datatype":"Boolean","value":"","name":"machine_started","x":350,"y":180,"wires":[["c771c83137c7b564"]]},{"id":"7d9828b746e5b221","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"{}","payloadType":"json","x":120,"y":180,"wires":[["5c05ecde52d409b0"]]},{"id":"d127eddb90e13f6a","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01GH01#0_BA_Y.Value","datatype":"Byte","value":"","name":"Set Conveyor speed","x":340,"y":380,"wires":[["c771c83137c7b564"]]},{"id":"0bdc9aa981772c9c","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"3.5","topic":"","payload":"{}","payloadType":"json","x":120,"y":380,"wires":[["d127eddb90e13f6a"]]},{"id":"219cb867b390fc38","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01GH01#0_E_B.Value","datatype":"Boolean","value":"","name":"Conveyor running?","x":350,"y":420,"wires":[["c771c83137c7b564"]]},{"id":"95876276de300def","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"","payload":"{}","payloadType":"json","x":120,"y":420,"wires":[["219cb867b390fc38"]]},{"id":"2f256ba9a2aef6c3","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MG01#0_E_B.Value","datatype":"Boolean","value":"","name":"Module 1 full?","x":360,"y":220,"wires":[["c771c83137c7b564"]]},{"id":"08a6668f100d967a","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1.5","topic":"","payload":"{}","payloadType":"json","x":120,"y":220,"wires":[["2f256ba9a2aef6c3"]]},{"id":"1e46001da905faca","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MH14#0_BA_B.Value","datatype":"Boolean","value":"","name":"Jam?","x":390,"y":260,"wires":[["c771c83137c7b564"]]},{"id":"43c70abad30ff144","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"2","topic":"","payload":"{}","payloadType":"json","x":120,"y":260,"wires":[["1e46001da905faca"]]},{"id":"e6841374fdc96bbc","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MN05#1_X_DW.Value","datatype":"UInt32","value":"","name":"Absolute panel count","x":340,"y":300,"wires":[["c771c83137c7b564"]]},{"id":"b736ffb6127668f6","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"2.5","topic":"","payload":"{}","payloadType":"json","x":120,"y":300,"wires":[["e6841374fdc96bbc"]]},{"id":"e3957ffbec697988","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MN05#0_X_DW.Value","datatype":"UInt32","value":"","name":"Relative panel count","x":340,"y":340,"wires":[["c771c83137c7b564"]]},{"id":"40e8cea4cf8ea84c","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"3","topic":"","payload":"{}","payloadType":"json","x":120,"y":340,"wires":[["e3957ffbec697988"]]},{"id":"7a638a1db8d3a959","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MS02#0_W_I.Value","datatype":"Float","value":"","name":"Conveyor Speed","x":350,"y":460,"wires":[["c771c83137c7b564"]]},{"id":"3580385bd5287fc6","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"4.5","topic":"","payload":"{}","payloadType":"json","x":120,"y":460,"wires":[["7a638a1db8d3a959"]]},{"id":"ba968def5961fb3e","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MS02#0_OW_I.Value","datatype":"Float","value":"","name":"Conv speed Delta Warning","x":320,"y":500,"wires":[["c771c83137c7b564"]]},{"id":"814a4f5c0d17be0c","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"5","topic":"","payload":"{}","payloadType":"json","x":120,"y":500,"wires":[["ba968def5961fb3e"]]},{"id":"32201bd134c2835e","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MS02#0_OG_I.Value","datatype":"Float","value":"","name":"Conv speed Delta Alarm","x":330,"y":540,"wires":[["c771c83137c7b564"]]},{"id":"36763732535d1226","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"5.5","topic":"","payload":"{}","payloadType":"json","x":120,"y":540,"wires":[["32201bd134c2835e"]]},{"id":"74822d85954c1cfb","type":"OpcUa-Item","z":"2615c1d39a9d789b","item":"ns=2;s=Machine.M01SE01MY13#0_E_B.Value","datatype":"Boolean","value":"","name":"Standby?","x":380,"y":580,"wires":[["c771c83137c7b564"]]},{"id":"e49294bceec2a63e","type":"inject","z":"2615c1d39a9d789b","name":"Add item","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"6","topic":"","payload":"{}","payloadType":"json","x":120,"y":580,"wires":[["74822d85954c1cfb"]]},{"id":"c280f55a.54a418","type":"OpcUa-Endpoint","endpoint":"opc.tcp://10.94.10.50:4840/","secpol":"Basic256","secmode":"SignAndEncrypt","login":false}]

My OPC-UA node is configured like this:
image

After start, I inject the topic "clearitems" in the node, to make sure I don't double add parameters.

Then I add the multiple parameters for the test, at 0.5s intervals, just to make sure the node can get them all (I was hoping to reduce the time maybe to 0,1s later). To do that, I inject a message with an empty payload and empty topic, and use the item-opcua for each parameter, configured as follows:
image

The resulting message goes into the OPC-UA Client node, and the parameters are added.

Then, when I inject a message with the topic "readmultiple" in the OPC-UA node, I get the expected result, something like this:

image

And this looks promising, but when I try to read again all the inserted parameters, and inject "readmultiple" to the OPC-UA client for a second time, then I get the following:

I asked a question on the github page for the project, but they do not seem to understand the issue and they state I must be doing something wrong. I can't guess what that would be. Any thoughts?

1 Like

I am currently in the same situation, where I have to read a lot of values.In this case, it is recommended to use "Subscribe"-Mode in the OPC-UA-Client Node.
Since we are pretty much in the same situation:
Are you running nodered on a raspberry pi/pc?
What are your experiences so far with number of OPC-UA-Clients you can use at the same time?

The machines I'm getting the data from are chemical processes that run quite slow. Therefore, the update frequency is not critical, and I'm multiple-reading the parameters just once every 5 seconds, more than enough to detect any variations.

In fairness, I'd probably read once every 8 or 10 seconds and have approximately the same accuracy, but I want to make sure that I detect when a new part is entering the line, and with 5 seconds the sensor will detect it at least for 2 readings, so it's more than enough for me.

I'm running node-red on a dedicated VM with PM2 installed, so I was able to get logs and monitor resources more easily.
The physical CPU is actually a Xeon CPU, but I have a single core and about 8 GB of RAM assigned for the VM. In any case, my flows are not hogging too much resources anyway.
image

At the moment I'm controlling about 35 machines using the S7 node, 6 mobile robots (using a REST API and the http nodes), and 6 production lines using OPC-UA nodes (200+ parameters each). I also get data tracking info from 3 MSSQL databases and log my own info (data tracking + event logging) to a MySQL database.

In the near future I plan on adding 2 more OPC-UA lines, as well as getting data from more DBs and several machines running with OMRON PLCs (it's a work in progress).

The CPU usage is often between 3 and 8%, and when OPC-UA polls from all the machines simultaneously it goes to about 12%, then down again. I could alternate the polling times (maybe give about 0.5~1s of delay between lines to avoid the usage peaks and get a more consistent usage, but at the moment I think I can afford it. It's not like a 4~5% usage jump in a single core is a big deal, specially when I'm always under 15% usage.

Hi @OriolFM ,

I tried to debug the flow using an S71500 (OPC UA) and here is what I found:

  1. The subscription as @nico25 suggested works. Each time the process change there is an update in the client and there are no errors coming. When using "multiple inputs" I got this message after the "join topic" node: Client node error on: SCHMID Preclean 1 error: [{}]

  2. I did not use "opc_ua_item". Instead, directly inject the topic in the client using "inject". (payload:timestamp, topic=string["ns=3;s="CFC_1/reg_c_2"."HMI"."iAut";datatype:Boolean]). Everytime I update the values of the items the formating works perfect.

So I am not an expert, just a couple of months experimenting with NR.
I found the case really close to what I am trying to accomplish at work.

Here is a flow I used to subscribe to the OPC and retrieve multiple data in a dashboard.

[{"id":"8a8c8d7a9012783f","type":"tab","label":"opcUA_FactIO","disabled":true,"info":"","env":[]},{"id":"98e38b37e4554286","type":"group","z":"8a8c8d7a9012783f","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["8d2283cb2181d0cc","717877c0e6be11dc","a3d5e5229e148735","61e69a89c7d5f30c","32b32e8ac55e3146"],"x":673,"y":674,"w":613,"h":162},{"id":"9f3b86fa1a168fe0","type":"group","z":"8a8c8d7a9012783f","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["8bae18dc1d0ee3f6","66a25fe996f811b4","7dd5a5791a5f4eac","d27823db2325f3f9","2e9465832d65e06a","612206dc2989f010","feaa686fb28f780b","29b0b8ae057a2c57","ff1e1885c44d1c80","95ddf32a56a34dda","4282dcef550f0ad1"],"x":34,"y":4,"w":622,"h":397},{"id":"9a157d891697ee2a","type":"group","z":"8a8c8d7a9012783f","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["6caca30d82f965b9","08526439cfd33860","96e140d8d2b5db7d","7adbe9e82f8e88fb","d2a952db50351fc5","fd7d4085d3817903","e6269aea8a86a861","98bbc1441a525ca2","18c52a312c16ac8f","2d0de6709a80d39d","266f41fa57590ae6","4229350e39fbc72a","1b8a6109bdc94c35","bedc6357edf09f3d","cad7a51213d7e5b6","5d469377c87d1531","11c347b03afa790c","ccfb35510e9ce8c2"],"x":694,"y":-1,"w":602,"h":462},{"id":"9af82057e056935d","type":"group","z":"8a8c8d7a9012783f","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["19e41b4b5fc2c20e","ab432e239c608195","2758692fd9eaa559","014048a03d2f891d","13f0ce9fdb9f698d","000f3d94fb241d8b","8c04ecc626412cfb","70db16ce7232275b","5cd6916225067ee2","6632702316406817","841fd77bdf89857e","81124c9fd94b54b7","ff841c651cecebac","e24a9fa83cca0e3d","763a7502f40d1f05"],"x":1334,"y":-1,"w":462,"h":542},{"id":"8d2283cb2181d0cc","type":"OpcUa-Client","z":"8a8c8d7a9012783f","g":"98e38b37e4554286","endpoint":"d483ac48b201166e","action":"write","deadbandtype":"a","deadbandvalue":1,"time":10,"timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","name":"","x":880,"y":740,"wires":[["717877c0e6be11dc"]]},{"id":"8bae18dc1d0ee3f6","type":"ui_button","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"HMI_OAUT","group":"","order":1,"width":0,"height":0,"passthru":true,"label":"Auto","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"HMI_OAUT\";datatype=Boolean","topicType":"str","x":310,"y":100,"wires":[["ff1e1885c44d1c80"]]},{"id":"66a25fe996f811b4","type":"ui_button","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"HMI_OMAN","group":"","order":2,"width":0,"height":0,"passthru":true,"label":"Manual","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"HMI_OMAN\";datatype=Boolean","topicType":"str","x":310,"y":140,"wires":[["ff1e1885c44d1c80"]]},{"id":"7dd5a5791a5f4eac","type":"ui_button","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"HMI_OSPI","group":"","order":3,"width":0,"height":0,"passthru":true,"label":"Set Point Internal","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"HMI_OSPI\";datatype=Boolean","topicType":"str","x":310,"y":180,"wires":[["ff1e1885c44d1c80"]]},{"id":"d27823db2325f3f9","type":"ui_button","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"HMI_OSPE","group":"","order":4,"width":0,"height":0,"passthru":true,"label":"Set Point External","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"HMI_OSPE\";datatype=Boolean","topicType":"str","x":310,"y":220,"wires":[["ff1e1885c44d1c80"]]},{"id":"2e9465832d65e06a","type":"comment","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"Connect to HMI","info":"","x":208,"y":45,"wires":[]},{"id":"717877c0e6be11dc","type":"debug","z":"8a8c8d7a9012783f","g":"98e38b37e4554286","name":"FIO_MessgFLOW_1","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1140,"y":740,"wires":[]},{"id":"d9c372ea1b37be04","type":"comment","z":"8a8c8d7a9012783f","name":"Process variables","info":"","x":770,"y":900,"wires":[]},{"id":"6f96978a44003cbd","type":"ui_chart","z":"8a8c8d7a9012783f","name":"","group":"","order":1,"width":"6","height":"6","label":"PV","chartType":"line","legend":"false","xformat":"auto","interpolate":"bezier","nodata":"","dot":false,"ymin":"0","ymax":"10","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1520,"y":1000,"wires":[[]]},{"id":"682bfc313dd9beb1","type":"OpcUa-Client","z":"8a8c8d7a9012783f","endpoint":"d483ac48b201166e","action":"read","deadbandtype":"a","deadbandvalue":1,"time":10,"timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","name":"S1500_Regulator","x":1240,"y":980,"wires":[["6f96978a44003cbd","af3d867991ee20cd"]]},{"id":"3875c8d0a26264f4","type":"trigger","z":"8a8c8d7a9012783f","name":"","op1":"","op2":"","op1type":"pay","op2type":"pay","duration":"-250","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"topic","topic":"topic","outputs":1,"x":1010,"y":980,"wires":[["682bfc313dd9beb1"]]},{"id":"af3d867991ee20cd","type":"ui_gauge","z":"8a8c8d7a9012783f","name":"","group":"","order":5,"width":0,"height":0,"gtype":"wave","title":"gauge","label":"m","format":"{{value}}","min":0,"max":10,"colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":1520,"y":940,"wires":[]},{"id":"19e41b4b5fc2c20e","type":"comment","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"PID parameters","info":"","x":1480,"y":160,"wires":[]},{"id":"ab432e239c608195","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"Proportional","label":"Proportional","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":false,"outs":"all","topic":"ns=5;i=2;datatype=Float","topicType":"str","min":"1","max":"100","step":"0.1","className":"","x":1630,"y":80,"wires":[["841fd77bdf89857e"]]},{"id":"2758692fd9eaa559","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"Integral","label":"Integral","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":false,"outs":"end","topic":"ns=5;i=3;datatype=Float","topicType":"str","min":"0","max":"200","step":"0.001","className":"","x":1600,"y":240,"wires":[["841fd77bdf89857e"]]},{"id":"b5feb72e4a3fc9df","type":"inject","z":"8a8c8d7a9012783f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"ns=3;s=\"FIO_I_PV_Orig\";datatype=Float","payloadType":"date","x":780,"y":980,"wires":[["3875c8d0a26264f4"]]},{"id":"014048a03d2f891d","type":"ui_button","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"P_Sel","group":"","order":1,"width":0,"height":0,"passthru":false,"label":"P-part selection","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"P_Sel\";datatype=Boolean","topicType":"str","x":1591,"y":305,"wires":[["841fd77bdf89857e"]]},{"id":"13f0ce9fdb9f698d","type":"ui_button","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"I_Sel","group":"","order":1,"width":0,"height":0,"passthru":false,"label":"I-Part selection","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"I_Sel\";datatype=Boolean","topicType":"str","x":1591,"y":345,"wires":[["841fd77bdf89857e"]]},{"id":"000f3d94fb241d8b","type":"ui_button","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"I_Hold","group":"","order":1,"width":0,"height":0,"passthru":false,"label":"Pause of I-part","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"I_Hold\";datatype=Boolean","topicType":"str","x":1591,"y":385,"wires":[["841fd77bdf89857e"]]},{"id":"8c04ecc626412cfb","type":"ui_button","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"I_ITL_On","group":"","order":1,"width":0,"height":0,"passthru":false,"label":"Initialisation of integral action","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"I_ITL_On\";datatype=Boolean","topicType":"str","x":1601,"y":425,"wires":[["841fd77bdf89857e"]]},{"id":"70db16ce7232275b","type":"ui_button","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"D_Sel","group":"","order":1,"width":0,"height":0,"passthru":false,"label":"D-part selection","tooltip":"","color":"","bgcolor":"","className":"","icon":"send","payload":"true","payloadType":"bool","topic":"ns=3;s=\"Reg_C_DB\".\"D_Sel\";datatype=Boolean","topicType":"str","x":1590,"y":460,"wires":[["841fd77bdf89857e"]]},{"id":"6caca30d82f965b9","type":"comment","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"Process external","info":"","x":800,"y":40,"wires":[]},{"id":"08526439cfd33860","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"DISV","label":"Disturbance value (Feed forward)","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":true,"outs":"end","topic":"ns=3;s=\"Reg_C_DB\".\"DISV\";datatype=Float","topicType":"str","min":"0","max":"10","step":"0.001","className":"","x":1029,"y":75,"wires":[["bedc6357edf09f3d"]]},{"id":"96e140d8d2b5db7d","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"SP_Max","label":"Setpoint Max value","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":true,"outs":"end","topic":"ns=3;s=\"Reg_C_DB\".\"SP_Max\";datatype=Float","topicType":"str","min":"0","max":"10","step":"0.001","className":"","x":1039,"y":115,"wires":[["bedc6357edf09f3d"]]},{"id":"7adbe9e82f8e88fb","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"SP_Min","label":"Setpoint Min value","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":true,"outs":"end","topic":"ns=3;s=\"Reg_C_DB\".\"SP_Min\";datatype=Float","topicType":"str","min":"0","max":"10","step":"0.001","className":"","x":1039,"y":155,"wires":[["bedc6357edf09f3d"]]},{"id":"d2a952db50351fc5","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"LMN_Max","label":"Output Max value (LMN)","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":true,"outs":"end","topic":"ns=3;s=\"Reg_C_DB\".\"LMN_Max\";datatype=Float","topicType":"str","min":"0","max":"100","step":"1","className":"","x":1049,"y":215,"wires":[["bedc6357edf09f3d"]]},{"id":"fd7d4085d3817903","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"LMN_Min","label":"Output Min value (LMN)","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":true,"outs":"end","topic":"ns=3;s=\"Reg_C_DB\".\"LMN_Min\";datatype=Float","topicType":"str","min":"0","max":"100","step":"1","className":"","x":1039,"y":255,"wires":[["bedc6357edf09f3d"]]},{"id":"e6269aea8a86a861","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"PV_FAC","label":"Process variable factor","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"PV_FAC\";datatype=Float","sendOnBlur":true,"topicType":"str","x":1039,"y":315,"wires":[["bedc6357edf09f3d"]]},{"id":"98bbc1441a525ca2","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":849,"y":315,"wires":[["e6269aea8a86a861"]]},{"id":"612206dc2989f010","type":"ui_slider","z":"8a8c8d7a9012783f","d":true,"g":"9f3b86fa1a168fe0","name":"Fill Valve","label":"FIll Valve","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":false,"outs":"all","topic":"ns=4;i=3;datatype=Float","topicType":"str","min":"0","max":10,"step":"0.1","className":"","x":300,"y":320,"wires":[["ff1e1885c44d1c80"]]},{"id":"18c52a312c16ac8f","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"str","x":849,"y":255,"wires":[["fd7d4085d3817903"]]},{"id":"2d0de6709a80d39d","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"100","payloadType":"num","x":849,"y":215,"wires":[["d2a952db50351fc5"]]},{"id":"266f41fa57590ae6","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":849,"y":155,"wires":[["7adbe9e82f8e88fb"]]},{"id":"4229350e39fbc72a","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"10","payloadType":"num","x":849,"y":115,"wires":[["96e140d8d2b5db7d"]]},{"id":"1b8a6109bdc94c35","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":849,"y":75,"wires":[["08526439cfd33860"]]},{"id":"5cd6916225067ee2","type":"inject","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":1450,"y":80,"wires":[["ab432e239c608195","81124c9fd94b54b7"]]},{"id":"6632702316406817","type":"inject","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"50","payloadType":"num","x":1470,"y":200,"wires":[["2758692fd9eaa559","ff841c651cecebac"]]},{"id":"feaa686fb28f780b","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"HMI_OROUT","label":"Output Manual [l]","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"HMI_OROUT\";datatype=Float","sendOnBlur":true,"topicType":"str","x":280,"y":260,"wires":[["4282dcef550f0ad1"]]},{"id":"29b0b8ae057a2c57","type":"inject","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":130,"y":260,"wires":[["feaa686fb28f780b"]]},{"id":"a3d5e5229e148735","type":"link in","z":"8a8c8d7a9012783f","g":"98e38b37e4554286","name":"HMI_To_Write","links":["ff1e1885c44d1c80"],"x":714,"y":715,"wires":[["8d2283cb2181d0cc"]]},{"id":"ff1e1885c44d1c80","type":"link out","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"HMI_Group","mode":"link","links":["a3d5e5229e148735"],"x":615,"y":200,"wires":[]},{"id":"61e69a89c7d5f30c","type":"link in","z":"8a8c8d7a9012783f","g":"98e38b37e4554286","name":"PID Parameters","links":["841fd77bdf89857e"],"x":714,"y":755,"wires":[["8d2283cb2181d0cc"]]},{"id":"841fd77bdf89857e","type":"link out","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"fromPID","mode":"link","links":["61e69a89c7d5f30c"],"x":1755,"y":340,"wires":[]},{"id":"bedc6357edf09f3d","type":"link out","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","mode":"link","links":["32b32e8ac55e3146"],"x":1255,"y":180,"wires":[]},{"id":"32b32e8ac55e3146","type":"link in","z":"8a8c8d7a9012783f","g":"98e38b37e4554286","name":"ProcessExternal","links":["bedc6357edf09f3d"],"x":714,"y":795,"wires":[["8d2283cb2181d0cc"]]},{"id":"95ddf32a56a34dda","type":"ui_slider","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"Discharge Valve","label":"Discharge valve","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":false,"outs":"all","topic":"ns=4;i=2;datatype=Float","topicType":"str","min":"0","max":10,"step":"0.1","className":"","x":320,"y":360,"wires":[["ff1e1885c44d1c80"]]},{"id":"4282dcef550f0ad1","type":"function","z":"8a8c8d7a9012783f","g":"9f3b86fa1a168fe0","name":"","func":"msg.payload =  msg.payload * 10;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":440,"y":260,"wires":[["ff1e1885c44d1c80"]]},{"id":"cad7a51213d7e5b6","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"SEP","label":"Set Point (E)","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"SPE\";datatype=Float","sendOnBlur":true,"topicType":"str","x":1030,"y":380,"wires":[["bedc6357edf09f3d"]]},{"id":"5d469377c87d1531","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":850,"y":380,"wires":[["cad7a51213d7e5b6"]]},{"id":"81124c9fd94b54b7","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"Proportional (DB)","label":"Proportional (DB)","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"ORPFN\";datatype=Float","sendOnBlur":true,"topicType":"str","x":1630,"y":40,"wires":[["841fd77bdf89857e"]]},{"id":"ff841c651cecebac","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"Integral (DB)","label":"Integral (DB)","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"ORITD\";datatype=Float","sendOnBlur":true,"topicType":"str","x":1610,"y":200,"wires":[["841fd77bdf89857e"]]},{"id":"11c347b03afa790c","type":"inject","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":850,"y":420,"wires":[["ccfb35510e9ce8c2"]]},{"id":"ccfb35510e9ce8c2","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9a157d891697ee2a","name":"ORSPI (Setpoint intern)","label":"Set Point (I)","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"ORSPI\";datatype=Float","sendOnBlur":true,"topicType":"str","x":1050,"y":420,"wires":[["bedc6357edf09f3d"]]},{"id":"e24a9fa83cca0e3d","type":"inject","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"5","payloadType":"num","x":1430,"y":500,"wires":[["763a7502f40d1f05"]]},{"id":"763a7502f40d1f05","type":"ui_text_input","z":"8a8c8d7a9012783f","g":"9af82057e056935d","name":"Integral (DB)","label":"Derivative (DB)","tooltip":"","group":"","order":6,"width":0,"height":0,"passthru":true,"mode":"number","delay":300,"topic":"ns=3;s=\"Reg_C_DB\".\"ORDTD\";datatype=Float","sendOnBlur":true,"topicType":"str","x":1590,"y":500,"wires":[["841fd77bdf89857e"]]},{"id":"d483ac48b201166e","type":"OpcUa-Endpoint","endpoint":"opc.tcp://192.168.155.1:4840","secpol":"None","secmode":"None","login":false,"info":"Siemens OPCUA\n"}]

I'm not using join anymore. I'm using readmultiple passing "ALL" on the payload so I get an array with all the values in a single message. I have to do some normalization of the objecto to trim the values and put them all together in an object with human-readable key/value pairs, but it's definitely doable.

I already suggested the node creator that instead of using many item nodes to add the list of variables, it could be done in a variable list (which is essentially a CSV file, like the S7 node does with Siemens PLCs, allowing it to import/export CSVs or edit the variables directly on the endpoint).

We'll see how it goes, but for now, I'm fine.

As I said, I'm polling instead of subscribing because I prefer getting the whole object in a go. Performance is not an issue at this point, and the polling frequency is low (once every 5 seconds), so the VM can take it perfectly (never goes over 15% CPU usage on a single thread).

1 Like

Guys for some reason OPC-Communication between my RaspPi and my S7 only works for around 1-2min and then it stops working. As mentioned before I am using subscription-mode for reading the values.
I´ll give you a snippet of my flow:

[
    {
        "id": "a6282cbcf1e02818",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 0",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[0].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 230,
        "y": 360,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "82e86f9e7f8bc1d4",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID1",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[1].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 220,
        "y": 395.714285714286,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "5b8d61396a7ff47f",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID2",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[2].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 220,
        "y": 441.8367346938778,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "a263a110c21bdc23",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID3",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[3].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 220,
        "y": 487.9591836734696,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "b0f55e0b7b7f7354",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 0 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[0].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 534.0816326530614,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "2eec11d460917830",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 1 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[1].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 580.2040816326532,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "27c7feb8fbef5f13",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 2 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[2].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 620,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "8003654de2489fea",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 3 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[3].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 672.4489795918369,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "2ab58409868dafdb",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 0 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[0].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 718.5714285714287,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "3932c99118b0eb0a",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 1 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[1].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 764.6938775510205,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "59ec4bd4d4f199a4",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 2 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[2].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 810.8163265306123,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "c2bf21e76abcf0e0",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 3 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[3].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 856.9387755102041,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "c04eab0a391d7938",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 4",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[4].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 230,
        "y": 900,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "2c6c6f41388821eb",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID5",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[5].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 220,
        "y": 946.1224489795918,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "456eb772c6fb24d1",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID6",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[6].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 220,
        "y": 992.2448979591836,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "53de9e40ac4bd7ab",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID7",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.2",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[7].\"CurrentToolID\";datatype=Number",
        "payloadType": "date",
        "x": 220,
        "y": 1038.3673469387754,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "ed7abfb343425fa9",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 4 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[4].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 1061.4285714285713,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "678ec96364bb4a3c",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 5 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[5].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 1107.5510204081631,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "a2f2d79ae4eb501d",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 6 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[6].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 1153.673469387755,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "4fa69036cc3ce915",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 7 CycleCount",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": true,
        "onceDelay": "0.5",
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[7].\"CycleCountfromSQL\";datatype=Number",
        "payloadType": "date",
        "x": 260,
        "y": 1199.7959183673468,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "3b5d9b58b50b5448",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 4 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[4].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 1245.9183673469386,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "c5b181c9655f1332",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 5 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[5].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 1292.0408163265304,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "a29b5eb65fb75a15",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 6 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[6].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 1338.1632653061222,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "df7939abbf15e073",
        "type": "inject",
        "z": "6a150d561d4e6972",
        "name": "Tool ID 7 Temporary Count",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "ns=3;s=\"Online_RFIDs\".\"THIS\"[7].\"TemporaryCount\";datatype=Number",
        "payloadType": "date",
        "x": 280,
        "y": 1384.285714285714,
        "wires": [
            [
                "c6f8120301d4870c"
            ]
        ]
    },
    {
        "id": "c6f8120301d4870c",
        "type": "OpcUa-Client",
        "z": "6a150d561d4e6972",
        "endpoint": "e00e2f355739f286",
        "action": "subscribe",
        "deadbandtype": "a",
        "deadbandvalue": 1,
        "time": "1000",
        "timeUnit": "ms",
        "certificate": "n",
        "localfile": "",
        "localkeyfile": "",
        "securitymode": "None",
        "securitypolicy": "None",
        "name": "Read Online IDs",
        "x": 1080,
        "y": 1500,
        "wires": [
            [
                "72d3b99df2bab52e"
            ]
        ]
    },
    {
        "id": "72d3b99df2bab52e",
        "type": "switch",
        "z": "6a150d561d4e6972",
        "name": "",
        "property": "topic",
        "propertyType": "msg",
        "rules": [
            {
                "t": "cont",
                "v": "[0].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[0].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[0].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"CurrentToolID",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"CycleCountfromSQL",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"TemporaryCount",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[0].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"IDextension",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[0].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"TagPresent",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[0].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"MaxCycles",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[0].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[1].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[2].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[3].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[4].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[5].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[6].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "[7].\"Maintenance",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "SQLinError",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "Nodered\".\"Lifebit",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "aLifebit",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": true,
        "outputs": 59,
        "x": 1410,
        "y": 1500,
        "wires": [
            [
                "fefdd5b91b87a328"
            ],
            [
                "7d76e959d9b0d046"
            ],
            [
                "acd747210071b1eb"
            ],
            [
                "b35d1cae6dee1dec"
            ],
            [
                "f555ace81cc30f2c"
            ],
            [
                "a5a08438d22e257a"
            ],
            [
                "3799574dccdb4927"
            ],
            [
                "f099d21dda71d538"
            ],
            [
                "de106ed4f1f4e269"
            ],
            [
                "4d82656f2f7d11a3"
            ],
            [
                "f21b3848e5d19162"
            ],
            [
                "8dd1d832eba88774"
            ],
            [
                "24d6230193bf6b0b"
            ],
            [
                "d90f92426089ffdf"
            ],
            [
                "b9044ec2c4ba14a9"
            ],
            [
                "dda5768ed20f05e0"
            ],
            [
                "a9666dab31efa349"
            ],
            [
                "30514608a4a0244d"
            ],
            [
                "b58526c30f8844d7"
            ],
            [
                "48d49287caee2742"
            ],
            [
                "f11204af29d3ce4b"
            ],
            [
                "36ac2aeca54e0301"
            ],
            [
                "363a466007317625"
            ],
            [
                "e28ab18f17c1264d"
            ],
            [
                "cafc5482ef5a16b9"
            ],
            [
                "3395d569053361fd"
            ],
            [
                "80494224f14f6a8c"
            ],
            [
                "232fcbf2cac15bb7"
            ],
            [
                "3e620741ea9ceced"
            ],
            [
                "494e19f7b29f94f4"
            ],
            [
                "123cdb5bc4e2894f"
            ],
            [
                "c99880c64f53e0d3"
            ],
            [
                "395e9ef8f3f42b57"
            ],
            [
                "224ab59e13b7c941"
            ],
            [
                "ee6d7daa663f6d45"
            ],
            [
                "27bc30e7fe463c8e"
            ],
            [
                "98a52dfae5b3efe4"
            ],
            [
                "d5c8ad7f409b16a6"
            ],
            [
                "b3afd205e2082d6f"
            ],
            [
                "6285c8be622a8db2"
            ],
            [
                "3d352024d68d07ba"
            ],
            [
                "c132ff3ebe63b90d"
            ],
            [
                "3346b8b2f56a66c1"
            ],
            [
                "f8306190925e7b1e"
            ],
            [
                "fb9bd7801a99874a"
            ],
            [
                "845219d3b7664480"
            ],
            [
                "bad2a391de3049a7"
            ],
            [
                "78b415e6c0e40792"
            ],
            [
                "4b4fbc471bf97658"
            ],
            [
                "5243f1efb801c45e"
            ],
            [
                "10998ab0fb65724c"
            ],
            [
                "5ec50f561b189e66"
            ],
            [
                "91cec7947aa20840"
            ],
            [
                "213bc82ac144d46f"
            ],
            [
                "b9d40884a342caa6"
            ],
            [
                "27d59bb6db6fd57c"
            ],
            [
                "27c705b30ac1e9e1"
            ],
            [
                "8b7dff89709b5ca8"
            ],
            [
                "8f96734a7e1f75e4"
            ]
        ]
    },
    {
        "id": "e00e2f355739f286",
        "type": "OpcUa-Endpoint",
        "endpoint": "opc.tcp://172.16.200.170:4840",
        "secpol": "None",
        "secmode": "None",
        "login": false
    }
]

In total i need to read around 350 values from my S7.
I do the reading in 6 different subflows, do you think this might cause the issue?

Thoughts?

EDIT: Could figure it out. Needed to rasie Intervaltime for OPC-Communication on S7 side.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.