LinuxCNCでは、位置生成はステップ生成から分離されています。位置生成ループでは、システムは現在のプリミティブ (線またはらせん) に沿って既に移動した距離を追跡し、簡単な式を使用して、そのプリミティブに沿った距離 D の位置を取得します。(通常、これはミリ秒ごとに 1 回行われます)。この位置は、サーボ、ハードウェア ステップ生成、またはソフトウェア ステップ生成のいずれかによって、さまざまな方法で使用できます。
ソフトウェア ステップ生成システムでは、古いコマンド位置と新しいコマンド位置の差が各軸に沿って決定され、これを使用して、直接デジタル合成法 (DDS) を使用してデジタル波形発生器のレートが更新されます。次に、より高いレート (通常は 20 ~ 50 マイクロ秒ごと) で、DDS は各軸について、その時点でステップを生成する必要があるかどうかを決定します。
これは、説明している設計とは異なりますが、より柔軟な設計です。たとえば、位置生成をステップ生成から分離することで、ステップ生成を修正せずに位置生成コードのブレンディング アルゴリズムを修正できます。また、ソフトウェア ステップ生成をハードウェア ステップ生成に置き換えたり、サーボ制御を PID などのアルゴリズムに置き換えることができます。
あなたの設計では、Roland が説明したようにらせん状の弧を線分にダイシングし、それらを線のみを理解するステップ生成コードへの入力として使用するだけで、上記の方法に近づけることができます。ある意味では、これは LinuxCNC が行うことと大差ありませんが、カーブ プリミティブが時間ではなく距離に従ってサンプリングされる点が異なります。