I'm running Raspi 22.214.171.124 SL multicore with OPC-UA server functionality enabled. The image is equipped with preempt patch and fulfills all requirements for 2ms prio-task cycle time (jitter max 300 µs).
I defined 2 task groups, see picture attached. Hoping the OPC-UA functionality gets assigned to my Non-RT-Tasks group.
However, when an OPC-UA-client connects to my server, Max-Jitter explodes up to 5 ms. I suppose the OPC-server runs in also my IEC-Tasks group. How can i check or define the task, that executes my OPC-UA server?
In this document (https://www.codesys.com/news-events/publications/article/with-the-power-of-many-cores-codesys-multicore-on-a-welding-system.html) you are talking of implicit generated tasks. For VISU_TASK this happens in my project. For OPC-UA I can't find any info.
additional info: same problem with codesys 126.96.36.199 and raspi sl mc 188.8.131.52
Not only Jitter is affected, but the whole max task cycle time increases from 600 µs to 12 ms with the latest version.
the problem occurs when adding/browsing a large (>1 MB) structure with ua-expert.
I'm not surprised by the increase of the cycle time, I'm just wondering why it affects my highest-prio IEC-Tasks, while the system is running multicore and opc-ua should be using a different core.
I am not 100% sure though, which core it will run in.
Are you using an RT-preempt patch? Normally the lower priority OPC UA task should be interrupted. It is possible though, that some semaphore is used so that while it reads a function block, it cannot be interrupted. You will have to test this.
There is a setting if you right click the Device > Properties > Options. Called "Access variables in sync with IEC Tasks". If ticked, the OPC UA stuff waits for a time when no IEC tasks are running, and then does its thing. It doesn't let the IEC tasks run until it is finished. The setting has a big warning about jitter on it, so check what it's value is.
Log in to post a comment.