Windows for real-time applications through Real-time Accelerator technology
Nowadays, more and more applications, particularly in the fields of industrial automation, medical technology, data acquisition, and measurement technology, require a deterministic real-time behavior. The acontis Real-time Accelerator technology (RtaccWin) enables you to run hard real-time capable applications deterministically under Windows. This is accomplished by exclusively reserving one or more CPUs for the real-time application, setting up the proper parameterization of Windows, and utilizing the acontis kernel drivers for precise timing and direct hardware access.
Windows IoT Enterprise-based PCs can benefit from acontis' RtaccWin software for stable real-time operation of applications with a guaranteed cycle time of 1 ms. In principle, faster cycle times can also be achieved. To achieve this, at least one CPU is exclusively reserved for the real-time application while the other CPUs remain available for standard Windows applications.
RtaccWin includes a Windows system driver that provides a precise and adjustable clock for the entire application. To ensure deterministic behavior, standard Windows drivers are typically not used for the real-time application. Instead, the kernel driver in RtaccWin allows direct access to hardware, such as network cards, fieldbus cards, etc., from Windows user mode, resulting in lower jitter, significantly lower CPU utilization, and a deterministic behavior. This also enables sending and receiving Ethernet frames without using the Windows network stack, and there are no adverse effects when using other network interfaces in parallel.
Configuration Tool: RtaccWinConfig
The software configuration tool, RtaccWinConfig, is used to prepare the Windows system for real-time applications. Firstly, it isolates at least one CPU, which means that regular Windows processes and services no longer use that CPU. The isolated CPU is then made exclusively available for real-time applications.
Another function of the RtaccWinConfig tool is assigning hardware to a real-time application. This means the regular Windows driver is unloaded, and the hardware can be accessed from the Windows user space. The acontis kernel driver enables fast and direct access to all memory areas of the assigned hardware.
The process of developing a real-time application is similar to that of a standard Windows application. Here are the steps to follow:
- Use the RtaccWinConfig tool to set up the system
- Create one or more threads for the real-time tasks
- Assign these threads to the previously isolated CPU
- Assign a very high priority to the threads to make them "Real-time threads"
- Optionally, generate a stable and precise clock via the acontis Windows system driver
A Windows process can include both "non-real-time threads" and "real-time threads." Both thread types can access global variables and use standard synchronization mechanisms like Events, Critical Sections, Mutexes, and Semaphores. The popular Win32 API is also available in the "Real-time threads." You can use the full functionality of Microsoft Visual Studio for the entire development process. In debug mode, all resources can be accessed by all threads. Of course, you can also execute "Real-time threads" step-by-step without real-time behavior.
A stable and precise clock with low jitter is crucial for real-time applications, particularly for executing control loops every millisecond. While an application should ideally be triggered precisely every 1000 microseconds, deviations can occur in practice, leading to longer or shorter intervals. With the acontis Real-time Accelerator technology, these deviations, also known as jitter, can be significantly reduced under Windows.
The RtaccWinConfig software tool can measure performance on an isolated CPU with a specific cycle time. It displays graphical representations of the maximum and minimum deviation values. The maximum jitter allowed depends on the application, but a deviation of up to 10% of the cycle time is generally acceptable. For instance, with a cycle time of 1000 microseconds, the minimum value should be no less than 900 microseconds, and the maximum value should be no greater than 1100 microseconds.
Without the Real-Time Accelerator technology, the cycle time can fluctuate significantly. After eight hours, tests conducted on a Minis Forum U820 (i5-8279U CPU) running Windows IoT, and heavily loaded with a Passmark burn-in test, revealed significant fluctuations.
Enabling Real-Time Accelerator technology, however, guarantees a precise clock with minimal deviations, as demonstrated by tests conducted on the same system after eight hours.
- Fast response times within microseconds
- Hard real-time with Real-Time Accelerator technology using CPU isolation
- Real-time functions and standard functions in one process on one isolated CPU
- RtaccTimer driver to generate a precise, stable clock
- RtaccDevice driver for direct access to hardware without kernel driver
- Comfortable configuration tool RtaccWinConfig
- Real-time applications can be developed like normal Windows applications
- Standard Win32 API also available in real-time threads
- Microsoft Visual Studio support. Convenient development and debugging of the entire real-time application
- Simple data exchange via variables. No complicated communication between real-time and non-real-time part of the application required.
- Very easy handling and low training effort
- Windows 10 IoT Enterprise or Windows 11 IoT Enterprise
- Quad Core CPU