Real-time multitasking

PC-based industrial automation sets specific requirements for Windows real-time extension:

  • deterministic execution of single tasks
  • coordinated properties of multiple applications
  • highly accurate timestamps
  • immediate reaction to external events
  • lowest possible deviations (Jitter) during cyclic acquisition of measurement data
  • accurate monitoring of process states in real time
  • not just simply "fast PCs" at fair-weather conditions, but actual "hard" real-time capabilities

Real-time for Windows

Kithara RealTime Suite is a modular real-time extension that provides several mechanisms to optimally meet such requirements. Here are some core features of the real-time system:

  • Utilization of the highest system priority (prior to other Windows applications)
  • thereby uninterrupted execution of priority functions for important tasks
  • highly accurate reaction to external events (e. g. timer, interrupts, communication interfaces etc.)
  • programmable high frequency and periodic timers (time-equidistant)
  • Priority-based preemptive real-time multitasking
  • Utilization of hardware parallelism (multicore CPUs, real-time task allocation)
  • Scalability of real-time execution up to extreme real-time capabilities with exclusively used CPU cores
  • Supports all current Windows OS, 32-bit as well as 64-bit versions

Our high-frequency timers for Windows are widely used in robotics, machine vision, measurement, control and automation. The Kithara environment reaches the same level of performance as pure real-time systems and provides special real-time timers, that can be programmed with frequencies of up to several kilohertz. The deviation (jitter) amounts to only a few microseconds. On exclusively used CPU cores, real-time capabilities can be increased even further, with timers having a maximum jitter of only about 1 microsecond. Thus, it is possible to program and use accurate cyclic timers with frequencies of up tp 20 kHz. For fast data exchange between real-time and application level, events, shared memory, pipe mechanisms and sockets are available.

Many applications can only be implemented by using a complex model of processes. Therefore, powerful tools are required for implementation. The best appropriate approach for this purpose is a priority-based, preemptive multitasking system. The real-time tasks, which provide up to 255 different priority levels reliably ensure that only the task with the highest priority is executed.

real-time timer, real-time multitasking

Modules

Real-time multitasking with the modular sytem of Kithara RealTime Suite consists of the following components:

  • Highly accurate calibrated monitoring of system time and short delays Clock Module,
  • Programming accurate real-time timer routines RealTime Module,
  • Priority-based preemptive real-time multitasking MultiTasking Module,
  • Precise synchronization of multiple network participants PTP Module.

Clock Module

Highly accurate and calibration detection of the system time as well as short time delays

  • Common
  • Features

The Clock Module provides a basis for every real-time task. It enables calibrated access to every hardware timebase in the system. Time data can be converted arbitrarily into user specific formats. Short time delays depend on the given hardware and have an accuracy of a few nanoseconds.

  • Detection of all operating time bases in the system
  • Calibration of different timer/clocks
  • Long-term synchronization of system clocks
  • Monitoring the system time in different time and user-specific formats, resolution up to 0.10 μs
  • Highly accurate short time delays in 0.1 µs steps
  • Programming of user-specific time formats
  • Reliable prevention of overflows caused by internal 96-bit operations

RealTime Module

Programming of high frequency real-time timer routines

  • Common
  • Features

The RealTime Module complements the Clock Module and enables the programming of timer, which can trigger the application code in many ways. The context of program execution is selectable. Signaling objects could be events or callbacks at a application or kernel level or even real-time tasks in connection with MultiTasking Module.

  • Development of high frequency real-time timer routines
  • Cyclic or one-time timer programmable
  • Simple debugging and testing option with callbacks at application level
  • Option to start, exit or kill the timer directly
  • Simple implementation of watchdog mechanisms
  • Timers do not interrupt each other
  • Start time can be set to a 0.1µs resolution (e. g. for synchronization with other processes)
  • Timer period dynamically adjustable
  • Deviations of only a few microseconds
  • Requires the Clock Module

MultiTasking Module

Priority-driven, preemptive real-time multitasking

  • Common
  • Features

The MultiTasking Module complements the RealTime Module and supports priority-driven, preemptive real-time multitasking. It enables functions beyond the RealTime Module for mutual prioritization of single real-time tasks. Thereby, it is possible to determine in detail which process is prior to other processes and less important tasks can be halted by their own only by more important tasks. Therefore, the characteristics of the MultiTasking Moduls are the same as those of a true real-time operating system (RTOS). With the dedicated mode, real-time performance can be increased even further. By running the real-time system on one or multiple separate CPU cores, any negative Windows influence is avoided.

  • Preemptive real-time system
  • Real-time tasks up to 255 different priority levels programmable
  • Dynamic modification of priority levels possible
  • Multiple tasks with the same priority level as "Round-Robin"
  • Including priority inheritance to avoid priority inversion
  • Real-time Semaphore for synchronization between real-time tasks
  • Real-time events for triggering of external tasks
  • Tasks can be suspended, continued, triggered, exited and killed
  • Tasks can be delayed (0.1 µs resolution)
  • Operation of CPU cores exclusively in real-time mode in order to avoid Windows influence
  • Jitter of less than 1 µs in dedicated mode
  • Task frequency up to 20 kHz and above
  • Speedloop mode for high-precision cyclical execution
  • Requires the RealTime Module

PTP Module

Real-time synchronization with Precision Time Protocol

  • Allgemein
  • Features

The PTP Module allows for multiple network participants within a distributed system to accurately synchronize with each other and be controlled in real time. The Kithara real-time system enables the generating of precise timestamps with deviations in the sub-microsecond range, in order to match the clock of all participants. The API provides access to the BMCA (Best Master Clock Algorithm), which determines the Master clock according to configurable parameters. Alternatively, Master and Slaves can be set manually.

  • Precise synchronization of multiple network participants
  • Accurate timestamps with deviations in the sub-microsecond range
  • Configurable BMCA (Best Master Clock Algorithm)
  • Manual setting of master and slaves

Further features

In order to gain “hard” real-time capabilities, it is necessary to run the application code in the kernel mode of the system.

  • Code execution at kernel level is supported by C/C++ and Delphi (Win32 native)

Due to the fact that the system library is available for the customers, they benefit from a lean and on-demand programming, which the developers control down to the smallest detail. Thus, adjustments can be easily implemented by developers themselves instead of a "Black Box" concept.

Realize complex and sophisticated applications by means of our bundled know-how. Use multitasking and real-time ethernet communication up to 10 Gbit/s for a wide variety of automated applications, such as EtherCAT or CANopen based fieldbus applications. Complementary and efficient development tools, such as Kithara Kernel Tracer for monitoring all processes accurate down to the microsecond or Kithara Master Monitor for graphical visualization and control of connected I/O terminals, sensors and actuators, complete the package.