リアルタイム アクセラレータ テクノロジによるリアルタイム アプリケーション用 Windows
概要
現在、特に産業オートメーション、医療技術、データ収集、測定技術の分野で、決定論的なリアルタイム動作を必要とするアプリケーションがますます増えています。acontis リアルタイム アクセラレータ テクノロジ (RtaccWin) を使用すると、ハード リアルタイム対応アプリケーションを Windows 上で確定的に実行できます。これは、リアルタイム アプリケーション用に 1 つ以上の CPU を排他的に予約し、Windows の適切なパラメータ設定を設定し、正確なタイミングと直接ハードウェア アクセスのために acontis カーネル ドライバを利用することによって実現されます。
ソフトウェアアーキテクチャ
Windows IoT Enterprise ベースの PC は、1 ミリ秒のサイクル タイムが保証されたアプリケーションの安定したリアルタイム操作を実現する acontis の RtaccWin ソフトウェアの恩恵を受けることができます。原理的には、より速いサイクルタイムも達成できます。これを実現するために、少なくとも 1 つの CPU がリアルタイム アプリケーション専用に予約され、他の CPU は標準 Windows アプリケーションに使用可能なままになります。
RtaccWin には、アプリケーション全体に正確で調整可能なクロックを提供する Windows システム ドライバーが含まれています。確定的な動作を保証するために、標準の Windows ドライバーは通常、リアルタイム アプリケーションには使用されません。代わりに、RtaccWin のカーネル ドライバーを使用すると、Windows ユーザー モードからネットワーク カード、フィールドバス カードなどのハードウェアに直接アクセスできるため、ジッターが減少し、CPU 使用率が大幅に低下し、決定的な動作が得られます。これにより、Windows ネットワーク スタックを使用せずにイーサネット フレームの送受信も可能になり、他のネットワーク インターフェイスを並行して使用する場合にも悪影響はありません。
設定ツール: RtaccWinConfig
ソフトウェア構成ツール RtaccWinConfig は、Windows システムをリアルタイム アプリケーション用に準備するために使用されます。まず、少なくとも 1 つの CPU が分離されます。これは、通常の Windows プロセスとサービスがその CPU を使用しなくなることを意味します。分離された CPU は、リアルタイム アプリケーション専用に利用可能になります。
RtaccWinConfig ツールのもう 1 つの機能は、ハードウェアをリアルタイム アプリケーションに割り当てることです。これは、通常の Windows ドライバーがアンロードされ、Windows ユーザー空間からハードウェアにアクセスできることを意味します。acontis カーネル ドライバーを使用すると、割り当てられたハードウェアのすべてのメモリ領域に高速かつ直接アクセスできます。
ソフトウェア開発
リアルタイム アプリケーションの開発プロセスは、標準の Windows アプリケーションの開発プロセスと似ています。従うべき手順は次のとおりです。
- RtaccWinConfig ツールを使用してシステムをセットアップする
- リアルタイム タスク用に 1 つ以上のスレッドを作成します
- これらのスレッドを以前に分離された CPU に割り当てます。
- スレッドに非常に高い優先順位を割り当てて「リアルタイム スレッド」にします。
- オプションで、acontis Windows システム ドライバーを介して安定した正確なクロックを生成します。
Windows プロセスには、「非リアルタイム スレッド」と「リアルタイム スレッド」の両方が含まれる場合があります。どちらのスレッド タイプもグローバル変数にアクセスし、イベント、クリティカル セクション、ミューテックス、セマフォなどの標準同期メカニズムを使用できます。人気の Win32 API も「リアルタイム スレッド」で利用できます。開発プロセス全体で Microsoft Visual Studio のすべての機能を使用できます。デバッグ モードでは、すべてのスレッドがすべてのリソースにアクセスできます。もちろん、リアルタイム動作を行わずに「リアルタイム スレッド」を段階的に実行することもできます。
パフォーマンス
リアルタイム アプリケーション、特に制御ループをミリ秒ごとに実行するアプリケーションには、低ジッターの安定した正確なクロックが不可欠です。アプリケーションは理想的には 1000 マイクロ秒ごとに正確にトリガーされる必要がありますが、実際には逸脱が発生し、間隔が長くなったり短くなったりする可能性があります。acontis リアルタイム アクセラレータ テクノロジを使用すると、ジッターとも呼ばれるこれらの偏差を Windows で大幅に削減できます。
RtaccWinConfig ソフトウェア ツールは、特定のサイクル タイムで分離された CPU のパフォーマンスを測定できます。最大偏差値と最小偏差値がグラフで表示されます。許容される最大ジッターはアプリケーションによって異なりますが、通常はサイクル タイムの最大 10% の偏差が許容されます。たとえば、サイクル時間が 1000 マイクロ秒の場合、最小値は 900 マイクロ秒以上、最大値は 1100 マイクロ秒以下である必要があります。
リアルタイム アクセラレータ テクノロジがないと、サイクル タイムが大幅に変動する可能性があります。8 時間後、Windows IoT を実行し、Passmark バーンイン テストで高負荷をかけた Minis Forum U820 (i5-8279U CPU) でテストを実施したところ、大幅な変動が明らかになりました。
ただし、リアルタイム アクセラレータ テクノロジを有効にすると、同じシステムで 8 時間後に実施されたテストで実証されているように、誤差が最小限に抑えられた正確なクロックが保証されます。
Real-time TCP and UDP communication with lwIP (light weight TCP/IP Stack)
Using Windows it is not possible to guarantee fast network communication via TCP or UDP sockets. As one example it is not possible to use or receive and process a UDP packet every 5 milliseconds. The reason for this is not only the lack of real-time capability of the Windows operating system, but also the lack of real-time capability of the NDIS TCP/IP stack and the network card drivers.
In order to establish a stable, guaranteed, cyclical communication via sockets on Windows, a suitable TCP/IP stack and network driver must therefore be used in addition to the RtaccWin technology.
The widely used open-source software lwIP (light weight IP) is a TCP/IP stack and supports a large variety of protocols, including IP, IPv6, ICMP, ND, MLD, UDP, TCP, IGMP, ARP, PPPoS, PPPoE and contains clients for DHCP, DNS, an SNMP agent and supports AutoIP/APIPA (Zeroconf).
The lwIP TCP/IP stack is operated as a process within the Windows user space on an isolated CPU. The access to the Ethernet interface is realized using acontis Real-time Ethernet drivers. These drivers communicate directly with the hardware without usage of Windows kernel drivers. This enables the real-time threads to communicate quickly and in real time via Ethernet using the TCP and UDP protocols.
Measurements show a significant reduction of jitter
To determine the effective maximum pass-through times as well as the jitter, both for transmitting and receiving a UDP frame, acontis has set up a suitable test system: The network interface of the computer (Minis Forum U820 i5-8279U) with Windows 10 IoT is directly connected to an EtherCAT SubDevice (Beckhoff EK1100) via an Ethernet cable. The transmission rate is 100 Mbit/s and the SubDevice has a very short and uniform throughput delay of approximately one microsecond. In addition to the measurement program, a very high load using by a burn-in test running in parallel was generated on the computer to generate maximum load and stress on the system.
The measurement results clearly show the advantages of the RtaccWin technology in conjunction with the lwIP stack and the acontis Real-time Ethernet drivers:
With the standard Windows setup, it can take more than 26.000 μs in the worst case until the sent UDP frame is received again.
When using RtaccWin but still in combination with standard Windows NDIS stack and drivers, this value drops to 4.896 µs.
If the lwIP stack is used in combination with RtaccWin, the worst-case value is reduced to an impressively low 396 µs.
This enables to realize a stable exchange of cyclical data with a cycle time of one millisecond.
特徴
- マイクロ秒以内の高速応答時間
- CPU分離を使用したリアルタイムアクセラレータテクノロジーによるハードリアルタイム
- リアルタイム機能と標準機能を1つの独立CPU上の1プロセスで実現
- 正確で安定したクロックを生成する RtaccTimer ドライバー
- カーネルドライバーなしでハードウェアに直接アクセスするための RtaccDevice ドライバー
- 快適設定ツール RtaccWinConfig
利点
- リアルタイム アプリケーションは通常の Windows アプリケーションと同様に開発可能
- 標準 Win32 API はリアルタイム スレッドでも利用可能
- Microsoft Visual Studio のサポート。リアルタイム アプリケーション全体の便利な開発とデバッグ
- 変数を介した簡単なデータ交換。アプリケーションのリアルタイム部分と非リアルタイム部分の間の複雑な通信は必要ありません。
- 非常に簡単な取り扱いと少ないトレーニング労力
システム要求
- Windows 10 IoT Enterprise または Windows 11 IoT Enterprise
- クアッドコアCPU