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

    M671 like function for Delta printer

    Scheduled Pinned Locked Moved
    Gcode meta commands
    7
    45
    1.2k
    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.
    • achrnundefined
      achrn @tecno
      last edited by

      @tecno said in M671 like function for Delta printer:

      @OwenD

      Error: in file macro line 8 column 8: meta command: expected string expression

      None of the macro extracts you've posted in teh thread recently even have an eighth line. What does line 8 of the macro file say?

      tecnoundefined 1 Reply Last reply Reply Quote 0
      • tecnoundefined
        tecno @achrn
        last edited by

        @achrn

        echo >>>"0:\sys\testFile.csv" ^ move.axes[2].machinePosition ^ ","
        
        achrnundefined 1 Reply Last reply Reply Quote 0
        • achrnundefined
          achrn @tecno
          last edited by

          @tecno https://docs.duet3d.com/en/User_manual/Reference/Gcode_meta_commands#echo-command says >>> is only supported in firmware 3.5beta2 and later, what are you running?

          tecnoundefined 1 Reply Last reply Reply Quote 0
          • tecnoundefined
            tecno @achrn
            last edited by

            @achrn
            3.4.5 and nobody has said this before.

            It runs now but still I need to get correct syntax for the csv file for all results on same line.

            echo >>"0:\sys\testFile.csv" {move.axes[2].machinePosition} ,","
            
            point1,point2,point3,point4
            0.858 ,
            0.824 ,
            1.322 ,
            0.821 ,
            
            
            achrnundefined 1 Reply Last reply Reply Quote 0
            • achrnundefined
              achrn @tecno
              last edited by achrn

              @tecno said in M671 like function for Delta printer:

              @achrn
              3.4.5 and nobody has said this before.

              Well, it's been in the docs a while, I think.

              It runs now but still I need to get correct syntax for the csv file for all results on same line.

              I don't think you can, working it in a loop like that. you could dump the loop and do five separate probes storing in single variables then write to file with a single line, I think. e.g.

                  G30 S-1  ; probe
                  set var.z1 = move.axes[2].machinePosition ; memorise probe position
                  G30 S-1
                  set var.z2 = move.axes[2].machinePosition
                  G30 S-1
                  set var.z3 = move.axes[2].machinePosition
                  G30 S-1
                  set var.z4 = move.axes[2].machinePosition
                  G30 S-1
                  set var.z5 = move.axes[2].machinePosition
                 echo >>"0:\sys\testFile.csv" "whatever", var.z1,  var.z2, var.z3, var.z4, var.z5
              
              tecnoundefined 1 Reply Last reply Reply Quote 0
              • tecnoundefined
                tecno @achrn
                last edited by tecno

                @achrn

                OK, will play with your suggestion and see the results.

                tecnoundefined 1 Reply Last reply Reply Quote 0
                • tecnoundefined
                  tecno @tecno
                  last edited by

                  M98 P"0:/macros/test var.g"
                  Stopped at height 0.708 mm
                  Error: in file macro line 7 column 13: meta command: unknown variable 'z1'
                  
                  G28
                  M562                    ; clear any bed transform from mesh leveling
                  G90                     ; absolute positioning
                  G1 Z50 F4000            
                  G1 X0 Y0				; 1 point
                  G30 S-1
                  set var.z1 = move.axes[2].machinePosition
                  G1 Z50 F4000 
                  G1 X-154 Y-164 F4000    ; 2 point   
                  G30 S-1
                  set var.z2 = move.axes[2].machinePosition
                  G1 Z50 F4000
                  G1 X-63 Y214 F4000      ; 3 point   
                  G30 S-1
                  set var.z3 = move.axes[2].machinePosition
                  G1 Z50 F4000
                  G1 X217 Y-52 F4000      ; 4 point   
                  G30 S-1
                  set var.z4 = move.axes[2].machinePosition
                  G1 Z50 F4000
                  echo >>"0:\sys\testFile.csv" "whatever", var.z1, var.z2, var.z3, var.z4
                  G28
                  
                  
                  achrnundefined 1 Reply Last reply Reply Quote 0
                  • achrnundefined
                    achrn @tecno
                    last edited by

                    @tecno said in M671 like function for Delta printer:

                    Error: in file macro line 7 column 13: meta command: unknown variable 'z1'
                    

                    Well yes, you need to initialise the variables.

                    var z1 = 0
                    var z2 = 0
                    var z3 = 0
                    var z4 = 0
                    var z5 = 0
                    

                    before you first refer to any of them.

                    tecnoundefined 1 Reply Last reply Reply Quote 0
                    • tecnoundefined
                      tecno @achrn
                      last edited by

                      @achrn said in M671 like function for Delta printer:

                      @tecno said in M671 like function for Delta printer:

                      Error: in file macro line 7 column 13: meta command: unknown variable 'z1'
                      

                      Well yes, you need to initialise the variables.

                      var z1 = 0
                      var z2 = 0
                      var z3 = 0
                      var z4 = 0
                      var z5 = 0
                      

                      before you first refer to any of them.

                      Works like a charm now!

                      Is there a way to replace "whatever" with date + time?

                      1 Reply Last reply Reply Quote 0
                      • dc42undefined
                        dc42 administrators @tecno
                        last edited by dc42

                        @tecno said in M671 like function for Delta printer:

                        echo >>"Stopped at height" ^ move.axes[2].machinePosition ^ "mm"

                        Should be:

                        echo >>"0:/sys/savedData.txt" "Stopped at height" ^ move.axes[2].machinePosition ^ "mm"
                        

                        i.e. you need to specify the filename again.

                        Instead of using move.axes[2].machinePosition I suggest you use sensors.probes[0].lastStopHeight as I suggested earlier.

                        Duet WiFi hardware designer and firmware engineer
                        Please do not ask me for Duet support via PM or email, use the forum
                        http://www.escher3d.com, https://miscsolutions.wordpress.com

                        tecnoundefined 1 Reply Last reply Reply Quote 1
                        • tecnoundefined
                          tecno @dc42
                          last edited by

                          This is what works now, only missing part is date/time stamp.

                          ; test var.g macro
                          datetime 0.758 1.074 1.122 0.821
                          datetime 0.708 1.074 1.022 0.771
                          
                          G28
                          var z1 = 0
                          var z2 = 0
                          var z3 = 0
                          var z4 = 0
                          M562                    ; clear any bed transform from mesh leveling
                          G90                     ; absolute positioning
                          G1 Z50 F4000            
                          G1 X0 Y0				; 1 point
                          G30 S-1
                          set var.z1 =  sensors.probes[0].lastStopHeight
                          G1 Z50 F4000 
                          G1 X-154 Y-164 F4000    ; 2 point   
                          G30 S-1
                          set var.z2 = sensors.probes[0].lastStopHeight
                          G1 Z50 F4000
                          G1 X-63 Y214 F4000      ; 3 point   
                          G30 S-1
                          set var.z3 = sensors.probes[0].lastStopHeight
                          G1 Z50 F4000
                          G1 X217 Y-52 F4000      ; 4 point   
                          G30 S-1
                          set var.z4 = sensors.probes[0].lastStopHeight
                          G1 Z50 F4000
                          echo >>"testFile.csv" "datetime", var.z1, var.z2, var.z3, var.z4
                          G28
                          
                          
                          achrnundefined 1 Reply Last reply Reply Quote 0
                          • achrnundefined
                            achrn @tecno
                            last edited by

                            @tecno said in M671 like function for Delta printer:

                            echo >>"testFile.csv" "datetime", var.z1, var.z2, var.z3, var.z4

                            echo >>"testFile.csv" state.time, var.z1, var.z2, var.z3, var.z4

                            tecnoundefined 1 Reply Last reply Reply Quote 1
                            • tecnoundefined
                              tecno @achrn
                              last edited by

                              @achrn

                              Is there a way to format output to 0,000 and not 0.000 as this is a language problem?

                              dc42undefined 1 Reply Last reply Reply Quote 0
                              • dc42undefined
                                dc42 administrators @tecno
                                last edited by

                                @tecno if the format is CSV then you must use '.' as the decimal separator character, because ',' is used to separate one field from the next. The program you use to import the .csv file should recognise '.' as the decimal separator.

                                Duet WiFi hardware designer and firmware engineer
                                Please do not ask me for Duet support via PM or email, use the forum
                                http://www.escher3d.com, https://miscsolutions.wordpress.com

                                tecnoundefined 1 Reply Last reply Reply Quote 0
                                • tecnoundefined
                                  tecno @dc42
                                  last edited by

                                  @dc42 said in M671 like function for Delta printer:

                                  @tecno if the format is CSV then you must use '.' as the decimal separator character, because ',' is used to separate one field from the next. The program you use to import the .csv file should recognise '.' as the decimal separator.

                                  I use LibreOffice Calc in Swedish and the import is now in TEXT mode with '.' and needs to be in NUM mode with ',' to work OK

                                  dabb6cd0-9377-47aa-988d-c7caa44dd9f4-image.png

                                  As you can see only fields with NUM values can be used for calc and that is with comma. Field separator should be something else to be imported correctly.

                                  dc42undefined 1 Reply Last reply Reply Quote 0
                                  • dc42undefined
                                    dc42 administrators @tecno
                                    last edited by

                                    @tecno I suggest you import in CSV mode instead and change the macro to insert commas between the fields.

                                    Duet WiFi hardware designer and firmware engineer
                                    Please do not ask me for Duet support via PM or email, use the forum
                                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                                    tecnoundefined 1 Reply Last reply Reply Quote 0
                                    • tecnoundefined
                                      tecno @dc42
                                      last edited by

                                      @dc42

                                      Have to change import to UK language settings, so it kinda works 😉

                                      So the datafields will have commas as decimal separators! The field separators works OK with commas.
                                      I am sure others will have issues with this where decimal separators are commas.

                                      Have had this kind of problems with other software where '.' was used as decimal separator. So maybe you guys should look to see what you can do to get things working all over the planet. My 2cents.

                                      dc42undefined 1 Reply Last reply Reply Quote 0
                                      • dc42undefined
                                        dc42 administrators @tecno
                                        last edited by

                                        @tecno it looks like Excel allows you to specify the decimal separator when importing but Libre Office doesn't. https://ask.libreoffice.org/t/specify-decimal-separator-in-text-import/53621

                                        Duet WiFi hardware designer and firmware engineer
                                        Please do not ask me for Duet support via PM or email, use the forum
                                        http://www.escher3d.com, https://miscsolutions.wordpress.com

                                        tecnoundefined 1 Reply Last reply Reply Quote 0
                                        • tecnoundefined
                                          tecno @dc42
                                          last edited by

                                          @dc42

                                          Only way around this is to set the import to:
                                          1c4eb7d9-5f8e-4bf9-910c-0085394d0f71-image.png

                                          Exel >>>>>>>>>>>>>>> no way I will pay for that MS shit 😉

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