mikakaraila / node-red-contrib-opcua

A Node-RED node to communicate OPC UA. Uses node-opcua library.
Other
208 stars 192 forks source link

client node error #658

Open vnvasireddy opened 5 months ago

vnvasireddy commented 5 months ago

hi,

when querying opcua server frequently getting error "Client node error on: error: [" error at active reading: Transaction has timed out ( timeout = 15000 ms , request = ReadRequest)"]" . Can you please tell what was the exact issue and how to solve it.

Thanks in advance, vani

mikakaraila commented 5 months ago

Your read interval is perhaps longer than session timeout or subscription... More information needed to advice.

vnvasireddy commented 5 months ago

here every 1 minute we are querying for the data...number of max data points will be 250.

[ { "id": "1546237bd36b3e24", "type": "delay", "z": "739b7f8fb62fe88c", "name": "", "pauseType": "rate", "timeout": "5", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "0.01", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "allowrate": false, "outputs": 1, "x": 650, "y": 1020, "wires": [ [ "53dc72a038dabf40" ] ] }, { "id": "7aede8de9e74f3b2", "type": "inject", "z": "739b7f8fb62fe88c", "name": "", "props": [], "repeat": "60", "crontab": "", "once": true, "onceDelay": "5", "topic": "", "x": 170, "y": 340, "wires": [ [ "a64ee360c5ed677e" ] ] }, , { "id": "c8866ca0b3c70703", "type": "function", "z": "739b7f8fb62fe88c", "name": "node_id", "func": "var obj = {};\nlet text = \"ns=2;s=\";\n\nobj.payload = {\n id: text.concat(msg.payload.cus_tag)\n }\n\nnode.send(obj)\n\nreturn null;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 260, "wires": [ [ "57405d29e2e20f2a" ] ] }, { "id": "57405d29e2e20f2a", "type": "change", "z": "739b7f8fb62fe88c", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "payload.id", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 510, "y": 260, "wires": [ [ "e39623cbf27cd16e" ] ] }, { "id": "e39623cbf27cd16e", "type": "delay", "z": "739b7f8fb62fe88c", "name": "", "pauseType": "rate", "timeout": "5", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "0.03", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "allowrate": false, "outputs": 1, "x": 730, "y": 260, "wires": [ [ "2c6911b0a5ec006b", "5f5bad7a6aa3445e" ] ] }, { "id": "2c6911b0a5ec006b", "type": "OpcUa-Client", "z": "739b7f8fb62fe88c", "endpoint": "d27d372517d21e1f", "action": "read", "deadbandtype": "a", "deadbandvalue": 1, "time": 10, "timeUnit": "s", "certificate": "n", "localfile": "", "localkeyfile": "", "securitymode": "None", "securitypolicy": "None", "useTransport": false, "maxChunkCount": "", "maxMessageSize": "", "receiveBufferSize": "", "sendBufferSize": "", "name": "", "x": 960, "y": 260, "wires": [ [ "3253c1b9abe9f210", "aeb40b0ba750dd19" ], [] ] }, { "id": "d27d372517d21e1f", "type": "OpcUa-Endpoint", "endpoint": "opc.tcp://ip:port", "secpol": "None", "secmode": "None", "none": true, "login": false, "usercert": false, "usercertificate": "", "userprivatekey": "" } ]

above is the flow we are using to query fyi

thanks in advance

mikakaraila commented 5 months ago

Could it be that you are not injecting read sometimes so that timeout is exceeded? I mean if timeout is 15s and next read takes over 15s.

vnvasireddy commented 5 months ago

"timeout" mentioned here in server or client...if client, can i increase the timeout value, any possibility. Here every 1 minute data we are reading

mikakaraila commented 5 months ago

Hmm, I expect there is default transactionTimeout used (15 sec, not minute): image

Proposal: Try to read just current time (ns=0;i=2258) every second or other interval less than 15 seconds.

vnvasireddy commented 5 months ago

do all client nodes with same endpoint will have timeout of 15 seconds

here we have 4 client nodes with same end point url in 4 node-red flows which executes with 15sec delay one after another. first client node will execute 0th sec and 2nd at 15th sec and 3rd at 30 sec and so on..so first client node will execute every 0th sec of a minute.

any suggestion in timing where we are querying 1000 datapoints for every 1 minute.

mikakaraila commented 5 months ago

Same endpoint and each have 15 second timeout, your current implementation will exceed it.

What are server limits?

How many variables your can read in one request?

What is response time to get maximum variables in one request?