Maximum jitter on cpu of motion controller

aand74

Member
Join Date
Dec 2005
Location
Deinze
Posts
131
What is a reference for the maximum jitter on the cpu of a controller for motion control?
We have done some tests on an IPC with Codesys runtime, where 31 virtual slave axis are cammed to a virtual master.
We observe jitter peaks of about 200µs (what sounds very too much)
The cycle time for the motion instructions is 2ms.
The code in the controller is the minimal for letting the camming run (at the end of a cam a new cam is appended each time).
This is a first setup with virtual axis, later on physical drives on Ethercat will be connected instead.
 
You are right. 200 microseconds is WAY TOO MUCH. It makes it impossible to use the derivative gain. Also target trajectories will not be smooth. I prefer NONE. We use a FPGA that in

It is good you use a virtual axis to index into the cam ( cubic splines ).
I see the slaves are also virtual axes for testing.
2 millisecond update time is a little slow too. Starting the next cam at the end of the previous should be easy. Are the cams cyclic? Are you executing the same cam over and over again or is each one different?
In saw mill applications, each one is different. Usually in normal machine control they are all the same just executed over and over again.

If you are doing this on a PC then you will have problems.

What is the application? I/we have done so many over 40 years.
 
We use a Advantech UTC-216F, so not a home pc, but more the kind of industrial IPC.
This IPC has been used before in applications but not with motion control applications.
The program we tested with is pure a test scenario, we do not have already the effective cam profiles. The final machine will be a packaging machine. The test scenario is an acceleration part, constant velocity part, deceleration part and dwell part. The idea was to constantly attach another cam, because the MC_Camin instruction is usually one of the more load intensive instructions.
As said, we observe jitter peaks between 200 and 300 µs.
Also the execution of the MC_Camin takes a peak of more then 500µs.
This is a Codesys runtime on Linux.
Attached is a trace of jitter and cycle time and a monitor of maximum and minimum jitter and cycle time (all in µs).
It would be good to have some values that would be reasonable for motion exection.

Traces.jpg monitor.jpg
 
I wish everyone could make good quality trends like that.

We use a Advantech UTC-216F, so not a home pc, but more the kind of industrial IPC.
This IPC has been used before in applications but not with motion control applications.
It is still a PC with PC electronics wrapped in an industrial package. There may be a few more industrial grade electronic parts, but it is still typical PC hardware.

The program we tested with is pure a test scenario, we do not have already the effective cam profiles.
The final machine will be a packaging machine.
I see. The cam profiles change because the parts are placed at different locations.

The test scenario is an acceleration part, constant velocity part, deceleration part and dwell part. The idea was to constantly attach another cam, because the MC_Camin instruction is usually one of the more load intensive instructions.
Yes, however I doubt all axes need to execute the MC_Camin in at once.
A lot depends on the implementation of the MC_Camin in.

As said, we observe jitter peaks between 200 and 300 µs.
Also the execution of the MC_Camin takes a peak of more then 500µs.
This is a Codesys runtime on Linux.
Is that for just one axis or ALL axes executing a MC_Camin instruction at once.

Attached is a trace of jitter and cycle time and a monitor of maximum and minimum jitter and cycle time (all in µs).
It would be good to have some values that would be reasonable for motion exection.
Again, there shouldn't be any jitter. Phase delay between inputs and outputs should be very small. The problem is that you should be using a Real Time Linux at least. The second problem is that PC or IPC don't have the necessary hardware.

My solution is this:
https://deltamotion.com/products/motion-controllers/rmc200
It uses a military grade RTOS by Green Hills so the RTOS is fast.
More importantly is how we do the I/O to make sure it is all synchronous and deterministic. There is a FPGA the does the inputs and outputs for all axes at the same time. There is no need for time stamps or the like since all the I/O is gathered at the same instant and at regular intervals. There are no delays due to interrupts being off or high priority tasks hogging the CPU. The FPGA is kind of like a PLC but instead of executing the rungs one after another and being delayed by overhead. ALL the rungs are executed at the same time.
Finally, there is software. Even 20 years ago we could move from one cam or what we call splines to another using a 80186.
https://deltamotion.com/peter/Videos/JAN-04 VSS_0001.mp4
There are 6 actuators and 3 top and 3 bottom and a photocell and scanner up stream out of view. The scanner scans the log and determines the best way to cut the log. It is not cut straight but rather the it follows the sweep of the log to get the most out of it. While one log is executing its cam/spline, the scanner/optimizer is downloading the next cam/spline so it is ready when the previous log is done. This was 20 years ago on a 16-bit integer only CPU. Today we have multicore CPU with 64bit floating point. Appending cams/splines seamlessly should be easy.

What I don't understand is that you mention constant velocity sections and acceleration sections. Wouldn't a normal move command handle that?
 
CoDeSys for Linux is not real time. There is a Windows version, CoDeSys RTE that is real time deterministic which sounds much better than 200 microsec jitter.

Most of their stuff can be downloaded free and tried. Usually they time out after some limit but you could check if that makes your application better before paying for the license
 
CoDeSys for Linux is not real time. There is a Windows version, CoDeSys RTE that is real time deterministic which sounds much better than 200 microsec jitter.

Most of their stuff can be downloaded free and tried. Usually they time out after some limit but you could check if that makes your application better before paying for the license

The runtime is : CODESYS Control for Linux SL.
According to Codesys this should be suited for realtime motion control.
 
I wish everyone could make good quality trends like that.


I see. The cam profiles change because the parts are placed at different locations.


Yes, however I doubt all axes need to execute the MC_Camin in at once.
A lot depends on the implementation of the MC_Camin in.


Is that for just one axis or ALL axes executing a MC_Camin instruction at once.

It is a testing program, where we intentionally wanted to test a more worst case scenario, as we know cam appending is load intensive.
The choice for acceleration, constant velocity, deceleration and dwell cams has no specific reason othere then to append also when the velocity is not 0.
Did tests with a dwell to dwell move cam, but results were comparable.
For our final machine application we have tools that calculate, generate the cam trajectory of each axis. So, this was just a 'worst case' performance test, as the application itself is not completed yet.
 
The runtime is : CODESYS Control for Linux SL.
According to Codesys this should be suited for realtime motion control.

I haven’t used it but in the CoDeSys online help it says

The CODESYS Control for Linux SL runtime does not necessarily fulfill hard real-time demands because its scheduling method depends on the operating system. However, if the operating system is configured accordingly (for example as RT preempt patch), then the time behavior is adapted and the jitter times are minimized

So maybe you need to configure Linux differently to get better jitter numbers.?
 

Similar Topics

Hi PLCs.net! I was curious: How many axis can a B&R APC910 control? Is there a hard limit like certain AB controllers? I'm new to B&R, so would...
Replies
0
Views
371
Hi all, Quick question about maximum RIO for a PLC5. I'm looking to add some a RIO drop that emulates 6 racks to my existing PLC5 system (It is...
Replies
10
Views
1,977
We are in the process of upgrading our PLC5 machines from Devicenet blocks with analog (current) inputs. We are looking at going to IO Link, due...
Replies
9
Views
2,576
Hello everyone, What's the difference between nominal sensing distance and maximum sensing distance in a diffuse photoelectric sensor ? in...
Replies
1
Views
1,123
Dear All, 3 phases (380-400 volt) are needed for my small lap in my garage. Normally there is one 1 phase 220-230 volt in my garage but I would...
Replies
31
Views
6,568
Back
Top Bottom