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.
    • floblerundefined
      flobler
      last edited by flobler

      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!

      floblerundefined 1 Reply Last reply Reply Quote 0
      • floblerundefined
        flobler @flobler
        last edited by

        @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
        • First post
          Last post
        Unless otherwise noted, all forum content is licensed under CC-BY-SA