이미 슬라이스 된 파일의 예상 인쇄 시간 계산


10

이미 조각난 모델의 G 코드 파일에서 예상 총 인쇄 시간을 계산하는 응용 프로그램을 작성하기 시작했습니다.

프로그램이 작동하고 꽤 정확합니다.

다음과 같이 작동합니다.

  1. 모든 G 코드 파일을 스캔하여 모든 움직임을 식별합니다.
  2. 세그먼트 거리를 속도 / mm로 나누어 각 이동 시간을 계산합니다.

이것이 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-Jerk에 따라 달라짐을 확인했습니다.

이 값을 사용하여 인쇄 시간을보다 정확하게 계산할 수 있기를 원합니다. 그러나 이러한 값이 이동 시간에 어떤 영향을 미치는지 이해하지 못합니다.

  1. 가속과 저크는 어떻게 고려해야합니까? 그리고 인쇄 속도를 어떻게 높이거나 낮추는가?
  2. 인쇄 시간 계산에 가속 및 저크를 포함 시키려면 공식을 어떻게 편집해야합니까?

얼마나 정확해야합니까? 그렇습니다. 가속을 연결하고 감속하기 전에 모터가 최고 속도에 도달하지 않는 짧은 실행 시간을 보상 할 수 있습니다. 그러나 최종 결과가 2 %만으로 만 벗어나도 상관합니까? 정사각형 피라미드와 같은 간단한 것을 인쇄하고 예측을 현실과 비교하십시오.
Carl Witthoft

가능한 한 정확하게 말씀 드리고 싶습니다 ... 지금 9 시간 동안 인쇄하면 예측과 현실의 차이는 10-15 분입니다.
Marlin

어쩌면 slic3r을 확인하고 해당 매개 변수를 계산하는 방법을 볼 수 있습니다. 슬라이싱 할 때 예상 시간을 얻는 것을 기억합니다.
FarO

@FarO Slic3r을 사용하는데 시간 추정을 본 적이 없습니다. 어쩌면 나는 올바른 장소를 찾지 않고 있지만 웹을 통해 해당 기능을 요구하는 많은 사용자가 있으므로 Slic3r에서 인쇄 시간을 알 수있는 방법이 없습니다.
BackSlash

@BackSlash 나는 보통 출력 로그에서 슬라이싱이 끝날 때 Repetier에서 봅니다. 그렇다면 Repetier 자체에서 온 것 같습니다!
FarO

답변:


5

가속 설정이 기계의 움직임에 어떤 영향을 미치는지 확인하기 위해 프린터 펌웨어를 조사했습니다 . 내가 알 수 있듯이 Acceleration 은 내가 본 펌웨어에 따라 다르게 구현되는 것처럼 보였으며 프린터에서 사용 된 설정의 영향을 받았습니다. 다른 펌웨어마다 다른 규칙을 작성하는 것이 너무 많은 문제로 보였기 때문에 더 이상 보지 않았습니다. 아마도 이것에 대해 더 잘 아는 사람은 대부분의 펌웨어가 동일한 계산을 사용하는지 알고있을 것입니다.

가속 설정이 인쇄 시간에 큰 차이를 만들지 않을 것으로 생각됩니다. 느린 속도로 인쇄 한 작은 인쇄물에는 차이가없는 것 같습니다. 노즐이 가속 및 감속 할 시간이있는 긴 경로를 가진 빠른 속도로 더 큰 인쇄물을 인쇄하는 경우 시간과 더 큰 차이가있을 것으로 생각됩니다.

예상 시간과 실제 시간 사이의 가장 큰 오류는 기계가 명령 처리에 소비 한 시간이라는 것을 알았습니다. 프린터로 전송해야하는 짧은 동작이 많고 프린터에서 처리 및 계산해야하는 모델을 인쇄 할 때 프린터가 1 초 동안 일시 정지하는 것을 알았습니다. 프린터 움직임의 차이를 볼 수있을만큼 길지는 않았지만들을 수있을 정도로 눈에 is니다. 저렴한 프린터에서는 가속보다 더 큰 오류가 발생할 것으로 생각됩니다.

누군가가 프린터에서 가속 설정을 계산하는 방법과 프린터에서 가속 설정을 얻는 데 사용할 수있는 G 코드 명령을 알 수 있다면 이것에 대해 더 많이 알고 싶습니다.


답변 주셔서 감사합니다. 계속 검색하겠습니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다. Marlin 소스 코드를 읽고 가속 및 저크 컨트롤 부품을 검색 할 수 있습니다. 확실히 도움이 될 것입니다. 감사합니다!
백 슬래시

3
"가속도 설정이 인쇄 시간에 큰 영향을 미치지 않을 것으로 생각됩니다." <-이것은 더 잘못 될 수 없습니다. 인쇄 속도와 디테일 크기의 비율이 높을 때마다 (즉, 빠른 속도 설정 또는 작은 디테일 또는 둘 다) 인쇄 시간의 주요 요소는 가속입니다. [최대] 속도 설정을 2 배로 늘리면 인쇄 시간이 5 % 단축되지는 않습니다.
R .. GitHub 중지 지원 얼음

5

우선, https://www.gcodeanalyser.com/http://gcode.ws/ 에서 온라인으로 사용하거나 소스를 읽을 수있는 JavaScript로 작성된 멋진 오픈 소스 분석기가 있습니다 . 그들의 예측은 실제 프린터 펌웨어와 완전히 일치하지는 않지만 합리적으로 가까운 작업을 수행하며 읽는 것이 유익합니다.

기본적으로 가속 및 저크의 기본은 프린트 헤드의 속도 (속도 또는 방향)를 즉시 변경할 수 없다는 것입니다. 속도를 높이고 늦추는 데 시간이 걸립니다. 가속은 프린트 헤드의 속도가 변할 수있는 최대 속도입니다. 저크는 잘못 / 해킹 된 것으로, 두 개의 세그먼트 / 커브의 교차점에서 허용되는 최대 가짜 순간 속도 변화입니다. 저크 포인트는 각 작은 코너에서 가속 / 감속하여 많은 세그먼트로 구성된 곡선을 따라 움직일 때 고르지 않은 움직임을 피하는 것입니다. 가속 및 저크에 대한 두 가지 설정 세트가 있습니다.

  • 인쇄 이동 대 이동 이동, 벽 대 충전재 등에 대해 서로 다른 가속 프로파일을 사용하기 위해 gcode의 일부로 자주 변경되는 최대 절대 값 (3D 벡터 길이)

  • 기계의 한계에 대한 축별 절대 값 (표준 1D 절대 값). 일반적으로 프린터 설정 또는 프린터의 시작 gcode 프로파일에서 설정되며 절대 변경되지 않습니다.

이동은 항상 두 설정 세트를 모두 준수하도록 제한됩니다.

프린터 펌웨어는 가속 및 저크 설정과 향후 모션 명령을 미리 보면서 모터를 실제로 작동하는 방법을 결정합니다. 모션을 시작할 때 가속 제한 내에서 구성된 최대 속도까지 가속해야합니다. 또한 다음 동작이 정확히 같은 방향으로 계속 될 것이라는 것을 알지 못한다면 중도에서 속도를 늦추기 시작해야합니다. 운동 속도의 차이는 운동 벡터의 차이에 따라 다릅니다. 다음 동작이 거의 같은 방향으로 진행될 경우 저크 허용을 사용하여 코너에서 속도를 "즉시"변경함으로써 속도 저하를 피할 수 있습니다. 길거나 (속도에 비례 한) 선형 또는 대략 선형 모션이있는 경우에만 실제로 요청 된 속도에 도달합니다.

따라서 인쇄 시간을 추정하려면이를 모델링 해야합니다 . gcode를 처리 / 시뮬레이션하는 동안 프린트 헤드 속도를 추적하고 각 동작 명령에 대해 가속 한계를 사용하여 시간의 함수로 속도를 계산합니다 (허용되는 최대 속도로 가속). 또한 다음 모션 명령을 시작하기 위해 모션을 끝내고 자하는 최종 속도와 그에 도달하기 위해 감속을 시작할 지점을 알아 내야합니다.


저크는 가속의 파생물입니다.
Trish

1
@ trish : 그렇지 않은 경우를 제외하고. 내 질문 3dprinting.stackexchange.com/questions/10369/…를 참조하십시오 .
R .. GitHub 중지 지원 얼음
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.