topic_timer_multitasking

Real-time Multi-tasking

The expectations of a PC based automated Windows real-time extension are:

  • deterministic execution of single tasks
  • coordinated behavior of several applications
  • highly accurate timestamps
  • immediate reaction to external events
  • slightest deviations (Jitter) during cyclic records of measurement data
  • accurate monitoring of process states in real-time
  • not only "relatively fast computers" during fair weather, but "hard" real-time

Real-time for Windows

The »RealTime Suite« is a modular real-time extension that provides several mechanisms to solve such problems perfectly. Here are some basic features:

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

Our high frequency Timer for Windows are used for robotics, image processing, measurement, control, regulation applications, and automation. The Kithara real-time environment, which is in accordance with the performance of a pure real-time system provides a real-time timer. It is programmable with frequencies up to several kilohertz. The deviation (Jitter) amounts to only a few microseconds. On exclusively used CPU cores extreme real-time features are possible: the maximum Jitter of a timer is about 1 microsecond. Thus, it is possible to program and invoke accurate, cyclic timer with frequencies up tp 100 kHz.  For the fast data exchange between real-time and application levels, events, shared memory, pipe mechanisms and sockets are available.

Many applications can only be generated by a complex model of the processes. Therefore, powerful tools are required for implementation. The best appropriate approach for this purpose is a priority-driven, peemptive 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.

The real-time environment for Windows consists of following Kithara »RealTime Suite« components :

  • Highly accurate and calibrated monitoring of system time as well as short time delays (“Clock Module”),
  • Programming of highly accurate real-time timer routines (“RealTime Module”),
  • Priority-driven preemptive real-time multitasking (“MultiTasking 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.

  • Programming of high frequency real-time timer routines
  • Cyclic or one-time timer programmable
  • Simple debugging- and testing possibility with callbacks at application level
  • Possibility to start, exit or kill the timer directly
  • Watchdog mechanisms simply realizable
  • Timer do not interrupt each other
  • Start time provides a 0.1µs resolution (e.g. synchronization with other processes)
  • Timer period dynamical adjustable
  • The deviation amounts to 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 Modules 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 100 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 with solid-state drives (drive space up to 2 TByte). This way, via the NVMe interface, big amounts of data can be written and read with a read-write speed of 1 GByte/s. UDF is provided as data system, which also allows for packet writing.

  • Real-Time data storage via NVMe SSD (up to 2 TByte)
  • Highspeed reading & writing with over 1 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.

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

*This list always refers to the latest version of our software.

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 on the kernel-level supported by C/C++ and Delphi (Win32 native)
  • No dongle necessary, no online-activation ect.

Due to the fact that 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, adaptations can be easily implemented by themselves in contrast to a "Black Box".

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