Skip to main content

パスの前処理とキューサイズ

Gコード処理のパイプライン

Gコードをファイルから読み取る場合、加工を開始する前にファイル全体を読み取って処理することは現実的ではないことがよくあります。アプリケーションによっては、Gコードファイルの行数が数十万行から数百万行になることもあります。すべてを一度に読み取るには長い時間がかかり、大量のメモリも必要になります

代わりに、Gコードは1行ずつ読み取られますが、各時点でメモリに保持されるのはごく一部(数百行)だけです。この部分はキューに保持されます。つまり、「先入れ先出し」の原則、つまり生成関数ブロックがキューに要素を追加するという原則に従って機能するデータ構造に格納されます。コンシューマー・ファンクション・ブロックは、挿入されたのと同じ順序で要素の読み取りと削除を行います

この図は、システム内のGコードの流れを示しています。最初に G コードがファイルから読み込まれ、インタープリターによっていわゆる GeoInfo 要素に変換されます。これらの要素はパス前処理ファンクションブロックによって処理され、最後に補間されます。「GeoInfo」とマークされた部分はキューを表しています。複数のパスプリプロセッサ (など) の場合 SMC_SmoothPathSMC_ToolRadiusCorr、または SMC_AvoidLoop) を使用するとキューで接続されます。

_sm_img_preprocessing_queuesize.png

推奨キューサイズ

経験則として、ほとんどのキューには 16 要素のサイズが適しています。の前の最後のキュー SMC_Interpolator ファンクションブロック (通常は前のパス前処理ファンクションブロックのキュー) SMC_CheckVelocities) のキューサイズは大きいはずです。ほとんどのアプリケーションでは 100 要素から始めるとよいでしょう。

. これらのルールを理解し、いつルールから逸脱すべきかを知るために、キューサイズの影響を調べます。
  • レイテンシー 処理時間:キューが大きいほど、最初にキューがいっぱいになるまでの時間が長くなります。は SMC_Interpolator 関数ブロックは、最後のキューがいっぱいになるまで待ってから、補間を開始します。レイテンシーについては、キューの合計サイズ (すべてのキューサイズの合計)

  • 先を見据えて 補間器の:その前の最後のキューのサイズ SMC_Interpolator 補間の先読みを決定します。トラジェクトリーを計算する場合、補間器は先読みの最後までしか計画できません。ルックアヘッドが小さすぎると、補間器が全経路速度に達しない可能性があります。経路速度と要素の長さによっては、100 要素から始めるのが適切ですが、速度が速い場合や要素数が短い場合は、キューサイズを大きくする必要がある場合があります

  • への影響 特定のファンクションブロック: 次のようなファンクションブロック SMC_AvoidLoop または SMC_SmoothMerge 効果的に機能させるには、一定サイズの受信キューが必要です。たとえば、G コード内のループを検出するには、そのループがキューに収まらないようにする必要があります SMC_AvoidLoop。詳細については、パス処理パイプラインのファンクションブロックのドキュメントを確認してください。

処理関数ブロックを呼び出す

前述のように、補間はすべてのキューがいっぱいになった後にのみ開始されます。これにより、加工開始時に初期待ち時間が発生します。キューの合計サイズを減らす以外に、この待ち時間を減らす方法は他にもあります。

パス前処理関数ブロックは、次のような例に示すように、通常、周期的なバックグラウンドタスクで呼び出されます。 CNC 例 03: パスの前処理をオンラインで実行する。レイテンシーを減らすために、プログラムは呼び出します SMC_ReadNCFile2SMC_NCInterpreterまた、パスプリプロセッサをループで呼び出すこともできます。アプリケーションとタスクの優先順位によっては、1 回のタスク呼び出しでプログラムを複数回 (例:100 回) 実行するか、一定時間 (例:5 ms) 後にループを終了すれば十分な場合があります