既にスライスされたファイルの推定印刷時間の計算


10

すでにスライスされたモデルのGコードファイルから推定総印刷時間を計算するアプリケーションの作成を開始しました。

プログラムは機能し、かなり正確です。

次のように機能します。

  1. Gコードファイル全体をスキャンして、すべての動きを特定します
  2. セグメント距離を速度(mm / s)で割ることにより、各移動の時間を計算します。

これがGコードであるとしましょう:

G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000

これは、次の計算です。

totalTime = 0

# G28 ; home all axes
currentX = 0 mm
currentY = 0 mm
currentZ = 0 mm

# G1 Z0.200 F5400.000
newZ = 0.2 mm
mmPerSecond = 5400 / 60 = 90 mm/s
deltaZ = newZ - currentZ = 0.2 - 0 = 0.2 mm
segmentLength = deltaZ  = 0.2 mm
moveTime = segmentLength / mmPerSecond = 0.2 / 90 = 0.002 s
totalTime = totalTime + moveTime = 0 + 0.002 = 0.002 s

# G1 X158.878 Y27.769 E6.65594 F900.000
newX = 158.878 mm
newY = 27.769 mm
mmPerSecond = 900 / 60 = 15 mm/s
deltaX = newX - currentX = 158.878 - 0 = 158.878 mm
deltaY = newY - currentY = 27.769 - 0  = 27.769 mm
segmentLength = square_root(deltaX² + deltaY²) = 161.287 mm
moveTime = deltaZ / mmPerSecond = 161.287 / 15 = 10.755 s
totalTime = totalTime + moveTime = 0.002 + 10.755 = 10.757 s

この例では、印刷に約10.7秒かかります。

より一般的には、使用される式は各ムーブメントに対して次のとおりです。

moveTime = segmentLength / mmPerSecond

すべての移動時間を合計することにより、合計の推定印刷時間がわかります。

一部のフォーラムでは、3D印刷時間は3Dプリンターの一部の設定、特に加速X、加速Y、加速Z、ジャーク、およびZジャークにも依存すると述べています。

これらの値を使用して、印刷時間をより正確に計算できるようにしたいと思います。ただし、これらの値が移動時間にどのように影響するかわかりません。

  1. 加速とジャークはどのように考慮されるべきですか。そして、どのようにして印刷時間を速くしたり遅くしたりしますか?
  2. 印刷時間の計算に加速度とジャークを含めるには、式をどのように編集すればよいですか?

どの程度正確である必要がありますか?はい、加速を接続し、モーターが減速する前に全速力に到達しないような短い走行時間を補償することができますが、最終結果がたとえば2%だけずれている場合、気にしますか?正方形のピラミッドのような単純なものを印刷して、予測を現実と比較してみてください。
Carl Witthoft 2016

できるだけ正確にしたいと思います...現在9時間の印刷では、予測と現実の違いは10〜15分です。marlinのソースコードを見て、印刷中にアクセラレーションとジャークがどのように処理されるかを確認します
BackSlash

多分あなたはslic3rをチェックして、それがそれらのパラメーターをどのように計算するか見ることができます。私はスライスするときに時間の見積もりを得たことを覚えています。
FarO

@FarO私はSlic3rを使用していますが、時間の見積もりはありませんでした。多分私は正しい場所を見ていませんが、ウェブ上でその機能を求める多くのユーザーがいるので、Slic3rで印刷時間を知る方法はないと思います。
BackSlash

@BackSlash通常、Repetierの出力ログのスライスの最後に表示されます。私はそれがRepetier自体からだと思います!
FarO

回答:


5

プリンタのファームウェアを調べて、加速設定がマシンの動きにどのように影響するかを確認しました。私が知ることができることから、私が見たファームウェアに応じてアクセラレーションは異なる方法で実装されているようで、プリンターで使用された設定の影響も受けました。ファームウェアごとに異なるルールを書くのは面倒すぎるようだったので、これ以上は調べませんでした。たぶん、これについてもっと知っている人なら、ほとんどのファームウェアが同じ計算を使用するかどうかわかるでしょう。

アクセラレーションの設定は、印刷にかかる時間に大きな違いをもたらさないと思います。彼らは私が遅い速度で印刷した小さなプリントに違いをもたらすようには見えません。ノズルが加速および減速する時間のある長い経路があり、高速で大きなプリントを印刷する場合、時間との差が大きくなることに気付くと思います。

予測時間と実際の時間の最大の誤差は、マシンが命令の処理に費やした時間であることがわかりました。プリンターに送信する必要のある短い動きが多く、それらをプリンターで処理および計算する必要があるモデルを印刷するとき、プリンターがほんの一瞬停止することに気付きました。プリンタの動きの違いを確認するのに十分な長さではありませんが、聞こえるほど目立ちます。安いプリンターでは、これはアクセラレーションよりも大きなエラーを引き起こすのではないかと思います。

誰かが加速設定をプリンターで計算する方法と、プリンターから加速設定を取得するためにどのGコードコマンドを使用できるかを知ることができれば、私はこれについてもっと知りたいと思います。


答えてくれてありがとう、探し続けます。私を正しい方向に向けてくれてありがとう:Marlinのソースコードを読んで、アクセラレーションとジャークコントロールのパーツを検索できます。きっと役に立ちますが、考えていませんでした。ありがとうございました!
BackSlash 2016

3
「アクセラレーションの設定は、印刷にかかる時間に大きな違いをもたらさないと思います。」<-これはもっと間違っていることはありません。印刷速度と詳細サイズの比率が高い場合(つまり、高速設定または小さな詳細、あるいはその両方)は常に、印刷時間の中で主要な要素は加速です。[max]速度設定を2倍に増加しても、印刷時間を5%削減することはできません。
R .. GitHub ICE HELPING ICEの停止

5

まず、https://www.gcodeanalyser.com/およびhttp://gcode.ws/で、オンラインで使用したり、ソースを読んだりできるJavaScriptで記述された優れたオープンソースアナライザーがいくつかあります。彼らの予測は実際のプリンターファームウェアと完全には一致しませんが、かなり近い仕事をしているので、それらを読むことは有益です。

基本的に、加速とジャークの背後にある話は、プリントヘッドの速度(速度または方向)を瞬時に変更できないことです。スピードアップとスローダウンには時間がかかります。加速度は、プリントヘッドの速度が変化する最大速度です。ジャークは、誤った名称/ハックのようなものであり、2つのセグメント/カーブの接合部で許容される速度の最大の偽の瞬間的な変化です。ジャークのポイントは、各小さなコーナーで加速/減速することにより、多くのセグメントで構成されるカーブに沿って移動するときの途切れ途切れの動きを避けることです。加速とジャークの両方に2セットの設定があることに注意してください。

  • 印刷の移動と移動の移動、壁と面材などで異なる加速プロファイルを使用するために、gcodeの一部として頻繁に変更される最大絶対値(3Dベクトル長)

  • マシンの制限に対する軸ごとの絶対値(標準の1D絶対値)。通常、プリンターの設定またはプリンターの開始gcodeプロファイルで設定され、変更されません。

移動は常に両方の設定セットを尊重するように制限されています。

プリンタファームウェアは、加速とジャークの設定を使用して、今後のモーションコマンドの先読みを行い、実際にモーターを操作する方法を決定します。モーションを開始するとき、加速制約内で構成された最大速度まで加速する必要があります。また、次のモーションがまったく同じ方向に続くことを認識していない限り、途中でスローダウンを開始する必要があります。どれだけ遅くする必要があるかは、動きのベクトルの違いに依存します。次のモーションがほぼ同じ方向になる場合、ジャーク許容値を使用してコーナーで速度を「瞬間的に」変化させることにより、速度が低下するのを回避できる場合があります。(速度に対して)長い直線運動またはほぼ直線運動がある場合にのみ、実際に要求された速度に到達します。

したがって、印刷時間を見積もるには、これをモデル化する必要があります。gcodeを処理/シミュレーションしている間、プリントヘッドの速度を追跡し、各モーションコマンドについて、速度を加速制限(最大許容速度で加速)を使用して時間の関数として計算します。また、次のモーションコマンドを開始できるように、モーションを終了する最終速度と、それに到達するために必要に応じて減速を開始するポイントを把握する必要があります。


ジャークは加速の派生物です。
Trish

1
@trish:そうでない場合を除いて。私の質問3dprinting.stackexchange.com/questions/10369/…を参照してください。
R .. GitHub ICEのヘルプ停止
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.