• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

Printer ignores Gcode pre-print

Scheduled Pinned Locked Moved
Tuning and tweaking
1
2
151
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    flobler
    last edited by flobler 17 Jul 2022, 11:11

    Hi there!

    I created a system file that can be executed as print from different macros (i.e. printer calibration macro or first layer calibration macro), called first-layer.g. This system file contains instructions to print a square that will allow to use babystepping for first layer calibration and then stores the resulting value in config-override.g. The gcode itself has been generated via Prusaslicer and I added the start and end bits.

    I'm using a Duet Mini and I'm currently on RRF 3.4.0 and DWC 3.4.0

    This is how first-layer.g is being called via the macro "First Layer Calibration":

    ;------------------------------------------------------------------------------------------------------------------------------
    ; First Layer Calibration
    ;
    ; Description:
    ; - macro file
    ; - calibrates the first layer distance between nozzle and bed
    ; - stores result in config-override.g after print completes
    ;------------------------------------------------------------------------------------------------------------------------------
    M291 P"Do you want to start calibrating the FIRST LAYER?" S3 R"FIRST LAYER CALIBRATION" ; requires user input
    M32 "0:/sys/first-layer.g" ; executes "first-layer.g" from SD card

    This is first-layer.g (removed most of the Prusaslicer generated gcode as I do not think it is relevant for my problem):

    ;----------------------------------------------------------------------------------------------
    ; First Layer Calibration
    ;
    ; Description:
    ; - gcode file
    ; - print to calibrate the distance between nozzle and bed for the first layer
    ; - required user input to dial in first layer
    ; - called via the first layer calibration macro
    ; - needs to be stored in the gcodes folder
    ;----------------------------------------------------------------------------------------------
    ;----------------------------------------------------------------------------------------------
    ; Preparation
    ;----------------------------------------------------------------------------------------------
    M98 P"0:/sys/bed-temperature.g" ; calls bed-temperature.g to set bed temperature
    M568 S160 ; set hotend temperature to 160°C
    M561 ; clear any bed transform
    M290 R0 S0 ; clear babystepping
    G31 P1000 Z0 ; set Z probe offset to 0
    ;----------------------------------------------------------------------------------------------
    ; First Layer Calibration
    ;----------------------------------------------------------------------------------------------
    M116 ; wait for bed and hotend temperature
    G32 ; true bed leveling with mesh bed leveling
    M98 P"0:/sys/hotend-temperature.g" ; calls hotend-temperature.g to set hotend temperature
    M116 ; wait for bed and hotend temperature
    G92 E0.0 ; reset extruder position to 0
    G1 X60.0 E9.0 F1000.0 ; intro line thin part
    G1 X100.0 E12.5 F1000.0 ; intro line thick part
    G92 E0.0 ; reset extruder position to 0
    M564 S0 ; allow movement beyond axis limits defined in config.g
    G21 ; set units to millimeters
    G90 ; use absolute coordinates
    M83 ; use relative distances for extrusion
    ;LAYER_CHANGE
    ;Z:0.2
    ;HEIGHT:0.2
    G92 E0.0 ; reset extruder position to 0
    ;0.2
    G1 E-1 F3000
    G1 Z.4 F7200
    G1 X61.617 Y47.564
    G1 Z.2
    G1 E1 F3000
    M204 P1000
    ;TYPE:Skirt/Brim
    ;WIDTH:0.42
    G1 F1200
    G1 X64.531 Y44.274 E.13705
    G1 X67.556 Y41.623 E.12546
    G1 X70.821 Y39.39 E.12338
    G1 X74.068 Y37.676 E.11451
    ....
    ....
    ....
    ;WIPE_START
    G1 F5760;_WIPE
    G1 X87.249 Y143.176 E-.41629
    G1 F5760;_WIPE
    G1 X87.784 Y143.176 E-.26456
    G1 F5760;_WIPE
    G1 X87.467 Y142.859 E-.22165
    ;WIPE_END
    G1 E-.0475 F3000
    G1 Z.6 F7200
    ;----------------------------------------------------------------------------------------------
    ; Saving First Layer Height
    ;----------------------------------------------------------------------------------------------
    M98 P"layer-change.g" ; execute layer-change.g to save adjusted babysteps to config-override.g
    M564 S1 ; forbid movement beyond axis limits defined in config.g
    M291 P"First Layer Calibration completed! Z Offset saved!" S1 R"FIRST LAYER CALIBRATION"
    M0 ; calls stop.g

    Here are bed-temperature.g and hotend-temperature.g:

    ;-----------------------------------------------------------------------------------------------------
    ; bed-temperature.g
    ;
    ; Description:
    ; - system file
    ; - called to auto-select the bed temperature according to the loaded filament
    ;-----------------------------------------------------------------------------------------------------
    if move.extruders[state.currentTool].filament == "ABS" ; if ABS is loaded
    M140 S{global.abs_bed_temp} ; set bed to ABS temperature
    if move.extruders[state.currentTool].filament == "GreenTec Pro" ; if GreenTec Pro is loaded
    M140 S{global.greentecpro_bed_temp} ; set bed to GreenTec Pro temperature
    if move.extruders[state.currentTool].filament == "PC" ; if PC is loaded
    M140 S{global.pc_bed_temp} ; set bed to PC temperature
    if move.extruders[state.currentTool].filament == "PTEG" ; if PETG is loaded
    M140 S{global.petg_bed_temp} ; set bed to PETG temperature
    if move.extruders[state.currentTool].filament == "PLA" ; if PLA is loaded
    M140 S{global.pla_bed_temp} ; set bed to PLA temperature
    if move.extruders[state.currentTool].filament == "TPU" ; if TPU is loaded
    M140 S{global.tpu_bed_temp} ; set bed to TPU temperature
    ;--------------------------------------------------------------------------------------------------------
    ; hotend-temperature.g
    ;
    ; Description:
    ; - system file
    ; - called to auto-select the hotend temperature according to the loaded filament
    ;--------------------------------------------------------------------------------------------------------
    if move.extruders[state.currentTool].filament == "ABS" ; if ABS is loaded
    M568 S{global.abs_hotend_temp} ; set hotend to ABS temperature
    if move.extruders[state.currentTool].filament == "GreenTec Pro" ; if GreenTec Pro is loaded
    M568 S{global.greentecpro_hotend_temp} ; set hotend to GreenTec Pro temperature
    if move.extruders[state.currentTool].filament == "PC" ; if PC is loaded
    M568 S{global.pc_hotend_temp} ; set hotend to PC temperature
    if move.extruders[state.currentTool].filament == "PTEG" ; if PETG is loaded
    M568 S{global.petg_hotend_temp} ; set hotend to PETG temperature
    if move.extruders[state.currentTool].filament == "PLA" ; if PLA is loaded
    M568 S{global.pla_hotend_temp} ; set hotend to PLA temperature
    if move.extruders[state.currentTool].filament == "TPU" ; if TPU is loaded
    M568 S{global.tpu_hotend_temp} ; set hotend to TPU temperature

    This is how the variables are defined in config.g:

    ;----------------------------------------------------------------------------------------------------------------------------------------------
    ; Global Variables
    ;----------------------------------------------------------------------------------------------------------------------------------------------
    ; Filament Temperatures
    global abs_hotend_temp = 240 ; global ABS hotend temperature variable
    global abs_bed_temp = 110 ; global ABS bed temperature variable
    global greentecpro_hotend_temp = 230 ; global GreenTec Pro hotend temperature variable
    global greentecpro_bed_temp = 60 ; GreenTec Pro bed temperature
    global pc_hotend_temp = 270 ; global GreenTec Pro hotend temperature variable
    global pc_bed_temp = 110 ; global GreenTec Pro bed temperature variable
    global petg_hotend_temp = 235 ; global PETG hotend temperature variable
    global petg_bed_temp = 80 ; global PETG bed temperature variable
    global pla_hotend_temp = 210 ; global PLA hotend temperature variable
    global pla_bed_temp = 60 ; global PLA bed temperature variable
    global tpu_hotend_temp = 230 ; global TPU hotend temperature variable
    global tpu_bed_temp = 60 ; global TPU bed temperature variable

    The problem I am currently facing is that both M98 commands who are supposed to call bed-temperature.g and hotend-temperature.g before the print are being ignored and the printer tries to start printing without the hotend or bed being heated, resulting in an error.

    Can someone help me understand what I am doing wrong?

    Thanks a lot!

    undefined 1 Reply Last reply 17 Jul 2022, 12:04 Reply Quote 0
    • undefined
      flobler @flobler
      last edited by 17 Jul 2022, 12:04

      @flobler OK, I figured it out already 😄

      This was a stupid typo that I then carried from bed-temperature.g to hotend-temperature.g via copy paste. I tried all these files with PLA previously which worked fine. This time I had PETG loaded but unfortunately looked for PTEG in the object model and not PETG.

      Therefore the loaded filament and my bed-temperature.g and hotend-temperature.g system files did not match and therefore not use PETG temperatures before trying to start the print.

      Sorry for the noise 😉

      1 Reply Last reply Reply Quote 1
      1 out of 2
      • First post
        1/2
        Last post
      Unless otherwise noted, all forum content is licensed under CC-BY-SA