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 multitasking with the modular sytem of Kithara RealTime Suite consists of the following components:

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

Storage Module

Real-time data storage via solid-state drives

  • Common
  • Features
  • Supported Hardware

The Storage Module introduces real-time data storage via SSD with the most recent capacities. This way, via the NVMe interface, big amounts of data can be written and read with a read-write speed of more than 2 Gbyte/s. UDF is provided as data system, which also allows for packet writing.

  • Real-time data storage via NVMe SSD with the most recent capacities
  • High-speed reading and writing with over 2 Gbyte/s
  • UDF data system

In connection with the Storage Module, all storage devices, which are compatible to the NVMe-specification 1.0 can be used on request. Tested devices:

  • Intel Solid-State Drive P3700/P3600/P3520/750 Series
  • Intel Solid-State Drive DC P3520 Series
  • Intel Solid-State Drive 600p Series
  • Samsung 950 SSD
  • HGST Ultrastar SN200 Series
  • VirtualBox Solid State Disk

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.