Cálculo do tempo estimado de impressão de um arquivo já fatiado


10

Comecei a escrever um aplicativo que calcula o tempo total estimado de impressão do arquivo de código G para um modelo já fatiado.

O programa funciona e é bastante preciso.

Funciona da seguinte maneira:

  1. Ele verifica todo o arquivo de código G para identificar todos os movimentos
  2. Ele calcula o tempo de cada movimento dividindo a distância do segmento pela velocidade em mm / s.

Vamos assumir que este é o código G:

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

Este é o cálculo que faz:

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

Neste exemplo, a impressão levará aproximadamente 10,7 segundos.

De maneira mais geral, a fórmula usada é, para cada movimento:

moveTime = segmentLength / mmPerSecond

Ao resumir todos os tempos de movimentação, temos o tempo total estimado de impressão.

Vi que alguns fóruns afirmam que o tempo de impressão 3D também depende de algumas configurações da impressora 3D, especialmente Aceleração X, Aceleração Y, Aceleração Z, Jerk e Z-Jerk.

Gostaria de possibilitar o uso desses valores para calcular com mais precisão o tempo de impressão; no entanto, não entendo como esses valores afetam o tempo de movimentação:

  1. Como devem ser consideradas a aceleração e o Jerk; e como eles aceleram ou diminuem o tempo de impressão?
  2. Como devo editar minha fórmula para incluir Aceleração e Jerk no cálculo do tempo de impressão?

Quão preciso você precisa ser? Sim, você pode conectar as acelerações e compensar os curtos períodos em que os motores nunca atingem a velocidade máxima antes de desacelerar, e assim por diante, mas se o resultado líquido estiver apenas desligado em, digamos, 2%, você se importa? Tente imprimir algo simples como uma pirâmide quadrada e compare sua previsão com a realidade.
precisa saber é o seguinte

Gostaria de ser o mais preciso possível ... Agora, em uma impressão de 9 horas, a diferença entre previsão e realidade é de 10 a 15 minutos, o que é muito. Eu vou olhar para o código-fonte marlin ao descobrir como aceleração e jerk são tratados durante a impressão
barra invertida

Talvez você possa verificar o slic3r e ver como ele calcula esses parâmetros. Lembro-me de obter uma estimativa de tempo ao cortar.
FarO 25/09/19

@ Faro Eu uso o Slic3r e nunca vi uma estimativa de tempo. Talvez eu não esteja olhando para o lugar certo, mas há muitos usuários solicitando esse recurso na Web, então, receio que não haja como saber o tempo de impressão no Slic3r.
BackSlash 26/09/19

@ BackSlash Normalmente, eu o vejo no Repetier no final do fatiamento no log de saída. Acho que é do próprio Repetier!
FarO 26/09/19

Respostas:


5

Tentei examinar o firmware da impressora para ver como a configuração de aceleração afeta o movimento da máquina. Pelo que pude perceber, a aceleração parecia ser implementada de maneira diferente, dependendo do firmware que eu analisei e também foi afetada pelas configurações usadas na impressora. Não procurei mais porque escrever regras diferentes para cada firmware diferente parecia demais. Talvez alguém que saiba mais sobre isso saiba se a maioria dos firmware usa os mesmos cálculos.

Eu suspeito que a configuração de aceleração não fará muita diferença no tempo que a impressão demora. Eles não parecem fazer diferença nas pequenas impressões que eu imprimi em baixa velocidade. Se você estava imprimindo impressões maiores em velocidades mais rápidas, com longos caminhos onde o bico tinha tempo para acelerar e desacelerar, suspeito que você notaria uma diferença maior com o tempo.

Descobri que o maior erro entre o tempo previsto e o tempo real foi o tempo que a máquina gasta processando as instruções. Ao imprimir um modelo que possui muitos movimentos curtos que precisam ser enviados à impressora e precisam ser processados ​​e calculados pela impressora, notei que a impressora pausa por uma fração de segundo. Não é longo o suficiente para ver uma diferença nos movimentos da impressora, mas é perceptível o suficiente para ouvir. Eu suspeito que em impressoras mais baratas isso causaria um erro maior do que a aceleração.

Se alguém descobrir como as configurações de aceleração são calculadas pela impressora e qual comando de código G pode ser usado para obter as configurações de aceleração da impressora, eu estaria realmente interessado em saber mais sobre isso.


Obrigado pela sua resposta, continuarei pesquisando. Obrigado por me indicar a direção certa: eu posso ler o código-fonte do Marlin e procurar as partes de aceleração e controle de empurrões, isso certamente ajudará, não pensei nisso! Obrigado!
BackSlash

3
"Eu suspeito que a configuração da aceleração não fará muita diferença no tempo que a impressão demora". <- isso não poderia estar mais errado. A aceleração é o fator dominante no tempo de impressão sempre que a relação entre a velocidade de impressão e o tamanho dos detalhes for alta (por exemplo, configuração de velocidade rápida ou pequenos detalhes ou ambos). Tanto que é improvável que o aumento da configuração da velocidade [max] por um fator de 2x reduza mesmo 5% o tempo de impressão.
R .. GitHub Pare de ajudar o gelo

5

Primeiro de tudo, existem alguns analisadores de código aberto escritos em JavaScript que você pode usar on-line ou ler a fonte em https://www.gcodeanalyser.com/ e http://gcode.ws/ . Suas previsões não correspondem totalmente ao firmware real da impressora, mas fazem um trabalho razoavelmente próximo e a leitura delas seria informativa.

Basicamente, a história por trás da aceleração e do empurrão é que você não pode alterar a velocidade (velocidade ou direção) da cabeça de impressão instantaneamente. Leva tempo para acelerar e diminuir a velocidade. Aceleração é a taxa máxima na qual a velocidade da cabeça de impressão pode mudar. Jerk é uma espécie de equívoco / hack, e é a máxima alteração instantânea de velocidade instantânea permitida na junção de dois segmentos / curvas. O objetivo do empurrão é evitar movimentos irregulares ao se mover ao longo de uma curva composta de muitos segmentos, acelerando / desacelerando em cada canto minúsculo. Observe que existem dois conjuntos de configurações para aceleração e empurrão:

  • um valor absoluto máximo (comprimento do vetor 3D) que frequentemente muda como parte do gcode para usar diferentes perfis de aceleração para movimentos de impressão versus movimentos de deslocamento, paredes versus preenchimento, etc.

  • valores absolutos por eixo (valor absoluto 1D padrão) para as limitações da máquina, que geralmente são definidas nas configurações da impressora ou no perfil gcode inicial da sua impressora e nunca são alteradas.

O movimento é restrito a respeitar sempre os dois conjuntos de configurações.

O firmware da impressora usa as configurações de aceleração e jerk, juntamente com o lookahead nos próximos comandos de movimento para decidir como realmente operar os motores. Quando ele inicia um movimento, ele precisa acelerar até a velocidade máxima configurada dentro das restrições de aceleração. Ele também precisa começar a desacelerar no meio do caminho, a menos que saiba que o próximo movimento continuará exatamente na mesma direção; quanto isso tem que desacelerar depende da diferença nos vetores de movimento. Se o próximo movimento for aproximadamente na mesma direção, é possível evitar a desaceleração usando a permissão de empurrão para fazer uma mudança "instantânea" de velocidade na esquina. Somente se você tiver movimentos lineares (aproximadamente em relação à velocidade) lineares ou aproximadamente lineares, você alcançará a velocidade solicitada.

Portanto, para estimar o tempo de impressão, você precisa modelar isso. Acompanhe a velocidade da cabeça de impressão enquanto processa / simula o código g e, para cada comando de movimento, calcule a velocidade em função do tempo usando os limites de aceleração (acelerando na taxa máxima permitida). Você também precisa descobrir a velocidade final com a qual deseja finalizar o movimento para poder iniciar o próximo comando de movimento e um ponto para começar a desacelerar, se necessário, para alcançá-lo.


Jerk é o derivado da aceleração.
Trish

1
@ Trish: exceto quando não é. Veja minha pergunta 3dprinting.stackexchange.com/questions/10369/… .
R .. GitHub Pare de ajudar o gelo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.