Moreover...
ControlLogix Class controllers are true multi-thread CPUs consisting of several isolated systems which, although 'configurable' and carrying some 'priority' settings, are not 'related' to each other but by user application and/or user settings.
ControlLogix controllers consist of two CPUs (The L7x CPUs are dual-core).
The Logix CPU executes application code and messages.
The Backplane CPU communicates with I/O and sends/receives data from the backplane. This CPU operates independently from the Logix CPU, so it sends and receives I/O information asynchronous to program execution.
CompactLogix and DriveLogix controllers have a single CPU which performs all operations. Isolated tasks perform I/O and communication and interact with networks. These tasks simulate the backplane CPU.
ControNet network I/O is updated
exactly at the RPI rate while the EtherNet/IP located ones are updated 'close' to the RPI setting;
Local chassis I/O is updated at the RPI rate and at the end of each task.
The highest functional priorities for
any Logix systems are the
CPU Overhead (serial port and general CPU operations), the
Motion Planner (running
exactly at the set 'Coarse Update Rate'), the
Safety Task, the
Redundancy Task and the user software
Trend data collection. These threads have an 'absolute' priority.
All other tasks are user implemented and user ranked from Priority 1(Highest) to Priority 15 (Lowest) (6 to 15 for CompactLogix and DriveLogix controllers). The Continuous task is the lowest priority task and always unique within any Logix application.
If a periodic or event task is executing when another is triggered and both tasks are at the same priority level, the tasks 'timeslice' execution time in 1ms increments until one of the tasks completes execution.
The motion planner interrupts all other tasks, regardless of their priority.
CompactLogix, FlexLogix, DriveLogix, and SoftLogix controllers use a dedicated periodic task to process I/O data (Priority 6- the highest).
The System Overhead is the time that the controller spends on message communication and background tasks; these Overhead communications are the ones which
are not configured through the I/O configuration folder of the project(e.g. MSG instructions driven data transfer).