Skip to main content

大容量Gコードファイルの前処理

ザ・ CNC15_LargeGCode.project サンプルプロジェクトは、のインストールディレクトリにあります。 CODESYS 下に ..\CODESYS SoftMotion\Examples

サンプルプロジェクトは、大きなGコードファイルを処理する方法を示しています。非常に大きなファイルは CAD/CAM システムからの出力として特に一般的であるため、このケースを例として示します

CAD/CAMシステムは、数十万行のGコードファイルを生成することがよくあります。これらは非常に短い線形セグメントG1)、通常は100マイクロメートルから1ミリメートルの範囲です。これらの短い直線セグメントはワークピースの輪郭をトレースします。それらは滑らかな経路を形成しません。通常、接線は直線セグメント間を移動します。

この例は、一定のメモリ要件でこれらの大きなファイルを効率的に読み取る方法と、非常に多くの短い線形セグメントで構成されるパス上で滑らかな速度曲線を実現する方法を示しています。G コードを前処理している間に、ワークピースの元の輪郭が再構築されます

アプリケーションの構造

この構造はCNCアプリケーションでは一般的です。G コードはバックグラウンドタスクで読み込まれますPathTask)、そしてパスの前処理もここで行われます。補間はバスタスク (MainTask)。

大容量ファイルの読み取り

Gコード処理開始時のレイテンシを短くするために、バックグラウンドタスクではループが使用されます。わかりやすくするために、中止条件にはカウンタを使用します。アプリケーション、G コード、PLC のパフォーマンスによっては、タイマーなどの他の中止条件が役立つ場合があります。パスキューがいっぱいになると、この中止条件に達する前にループは終了します

// Set this value depending on your other tasks, PLC performance, and G-Code
counter := 25;

WHILE counter > 0 AND
      (poqDataOut = 0 OR_ELSE (NOT poqDataOut^.bFull AND NOT poqDataOut^.bEndOfList))
DO
     <Read G-Code and process it>

     counter := counter - 1;
END_WHILE

のパイプライン処理によって 前処理、非常に大きなGコードファイルでも、必要なメモリが少なくて一定であれば読み取ることができます。キューサイズは、それぞれのファンクションブロックが十分に予測できるように十分に大きくなるように選択されます

の出力キュー SMC_NCInterpreter の入力キューでもあります SMC_SmoothMerge。合計128+3個のエレメントが出力キュー用に予約されています。3個は出力キューの予備です SMC_OutQueue そして128は予測としてまだ使われています SMC_SmoothMergeSMC_SmoothMerge 最大 128 個の短い線形セグメントを 1 つのスプラインに結合します。

の出力キュー SMC_SmoothMerge は、の入力キューでもあります。 SMC_SmoothPathSMC_SmoothPath 、少なくとも 2 つの要素と 3 つの予備要素が必要です。M 関数が平滑化された 2 つの要素の間にある場合、M 関数の数に応じてさらに多くの要素が必要になります

の出力キュー SMC_SmoothMerge は、の入力キューでもあります。 SMC_Interpolator。100 要素の予測はほとんどのアプリケーションに適しています。詳細については、以下を参照してください パスの前処理とキューサイズ

/// Buffer of the interpreter, lookahead for SMC_SmoothMerge
aBufIp : ARRAY[0..130] OF SMC_GeoInfo;
/// Buffer of SMC_SmoothMerge
aBufSmm : ARRAY[0..15] OF SMC_GeoInfo;
/// Buffer of SMC_SmoothPath, lookahead for SMC_Interpolator
aBufSmp : ARRAY[0..99] OF SMC_GeoInfo;

線形セグメントの前処理

ザ・ SMC_SmoothMerge ファンクションブロックは、多数の非常に短い線形セグメントで滑らかな速度曲線を保証します。指定された許容値を維持しながら、できるだけ多くの連続する線形セグメントを 1 つのスプラインに結合します。この例では、X と Y の最大偏差は 0.1 mmPARAMETERS.piMaxDifference)。

. 図は段階的な処理を示しています。
  1. 短い線形セグメントの読み取り

    _sm_img_example_long_g_code1.png
  2. を使用して複数の線形セグメントをスプラインに結合する SMC_SmoothMerge

    _sm_img_example_long_g_code2.png
  3. によるスプライン間のスムージング SMC_SmoothPath これは、前述のように、スプライン同士が接線方向に接続されていないためです。

    _sm_img_example_long_g_code3.png

コミッショニング

  1. アプリケーションをビルドし、コントローラーにダウンロードします。

  2. トレースを開き、コントローラにダウンロードします。

  3. アプリケーションを起動します。

  4. Gコードの処理を追跡できます。