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

    Euclid Probe / Railcore frustration. Any advice?

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    6
    23
    2.0k
    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.
    • Steve Lynchundefined
      Steve Lynch
      last edited by Steve Lynch

      Hey all!

      I've been running absolutely fine for quite some time, so I decided to make life interesting, and change probes.
      I've been reading for days.

      Running: Board: Duet 2 WiFi (2WiFi)
      Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.1.1 (2020-05-19b2)
      Duet WiFi Server Version: 1.23

      I tried about 3 different people's scripting for the euclid, and I still cannot complete a homing cycle.

      I was finally pointed to the euclid example firmware files for the probe, and while they get "most of the way there", they continually tell me I have to replace the probe to it's dock manually"

      If I post My files, would anyone mind checking to see where I'm going wrong?

      Thanks so much!
      -Steve

      ; Configuration file for Duet WiFi (firmware version 3)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v3.1.1 on Tue Jun 09 2020 01:46:51 GMT-0400 (Eastern Daylight Time)
      
      ; General preferences
      G90                                            ; send absolute coordinates...
      M83                                            ; ...but relative extruder moves
      M550 P"RailCore II ZL"                         ; set printer name
      M669 K1                                        ; select CoreXY mode
      
      ;Paneldue
      M575 P1 B57600 S1	                           ; paneldue comms parameters
      
      
      
      ; Network
      M552 S1
      M557 S"Lynch WiFi Main" P"internet4u" 
      M586 P0 S1                                     ; enable HTTP
      M586 P1 S0                                     ; disable FTP
      M586 P2 S0                                     ; disable Telnet
      
      
      ;Filament Sensor
      M591 D0 P1 C"e0_stop" S1 D0; Simple Filament sensor for extruder drive 0 is connected to E0 endstop input, enabled, 
      M591 D0 ; display filament sensor parameters for extruder drive 0
      
      ;Leadscrew locations
      M671 X-16.22:-16.22:290 Y23:274:150 S10 ;Front left,(-10,22.5) Rear Left (-10.,227.5) , Right (333,160) S7.5 is the max correction - measure your own offsets, to the bolt for the yoke of each leadscrew
      
      ; Drives
      M569 P0 S0 ; physical drive 0 goes forwards
      M569 P1 S1 ; physical drive 1 goes backwards
      M569 P2 S1 ; physical drive 2 goes forwards
      M569 P3 S0 ; physical drive 3 goes backwards
      M569 P5 S0							; Drive 5 goes backwards	Front Left Z
      M569 P6 S0							; Drive 6 goes backwards	Rear Left Z
      M569 P7 S0							; Drive 7 goes backwards	Right Z
      M584 X0 Y1 Z5:6:7 E3 
      
      ; set drive mapping
      M350 ; configure microstepping without interpolation
      M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
      M92 X201.50 Y201.50 Z800.00 E386 ; set steps per mm
      M566 X900.00 Y900.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min)
      M201 X3000.00 Y3000.00 Z500.00 E1200.00 ; set accelerations (mm/s^2)
      M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent
      M84 S30 ; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y0 Z0 S1 ; set axis minima
      M208 X320 Y320 Z280 S0 ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"xstop" ; configure active-low endstop for low end on X via pin xstop
      M574 Y1 S1 P"ystop" ; configure active-low endstop for low end on Y via pin ystop
      
      ; EUCLID Probe
      
      
      
      M574 Z1 S2                                       ; configure Z-probe endstop for low end on Z
      
      ;
      M558 K0 P5 C"^zprobe.in" H8 F300 60 T9000 A3 S0.01      
                                                    ; K0 for probe 0, P5 for NC switch, C for input pin, 
                                                    ; ^ for enabling the native pullup resistor on Duet 2 
                                                    ; hardware running RRF3  
                                                    ; H dive height of 8mm, F300 probing speed 6mm/sec, 
                                                    ; T9000 travel speed 150mm/sec,   
                                                    ; A3 number of probes 1, S0.01 max tolerance of 0.01 
      
      ;
      G31 K0 P500 X-16.4 Y-29.4 Z0.90               ; CHECK for LOOSE things first! set Z probe trigger 
                                                    ; value, offset and trigger height.  Higher numbers
                                                    ; makes nozzle closer to bed
                                                    ; switch plunger is 16.4mm to the LEFT and 29.27mm in
                                                    ; FRONT of the nozzle. Switch triggers 0.9mm BELOW nozzle
                                                    ; 
                                                    ; if you have to move the nozzle away from the bed, 
                                                    ; decrease the G31 Z value by the amount of baby stepping used.
      M557 X7:305 Y1:303 S20                        ; define mesh grid
      
      
      ; Heaters
      M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp
      M950 H0 C"bedheat" T0                          ; create bed heater output on bedheat and map it to sensor 0
      ;M307 H0 B0 S1.00                              ; enable bang-bang mode for the bed heater and set PWM limit
      M140 H0                                        ; map heated bed to heater 0
      M143 H0 S120                                   ; set temperature limit for heater 0 to 120C
      M308 S1 P"e0temp" Y"thermistor" T100000 B4725  ; configure sensor 1 as thermistor on pin e0temp
      M950 H1 C"e0heat" T1                           ; create nozzle heater output on e0heat and map it to sensor 1
      
      M307 H0 A240.3 C608.7 D8.2 S1.00 V24.1 B0 ; Bed Heater
      M307 H1 A270.7 C90.4 D6.7 B0 S1.0 ;Heater 1 model
      
      ; Fans
      M950 F0 C"fan0" Q500                           ; create fan 0 on pin fan0 and set its frequency
      M106 P0 S0 H-1                                 ; set fan 0 value. Thermostatic control is turned off
      M950 F1 C"fan1" Q500                           ; create fan 1 on pin fan1 and set its frequency
      M106 P1 S0 H1 T45                              ; set fan 1 value. Thermostatic control is turned on
      ;M950 F2 C"fan1" Q500                           ; create fan 2 on pin fan1 and set its frequency
      ;M106 P2 S1 H1 T45                              ; set fan 2 value. Thermostatic control is turned on
      
      
      ; Tools
      M563 P0 S"Extruder" D0 H1 F0                   ; define tool 0
      G10 P0 X0 Y0 Z0                             ; set tool 0 axis offsets
      G10 P0 R0 S0                                   ; set initial tool 0 active and standby temperatures to 0C
      
      ; Custom settings are not defined
      M950 F3 C"duex.fan3"
      M950 F4 C"duex.fan4"
      
      
      M106 P3 S0.5 ; LED half brightness
      M106 P4 S0.5 ; LED half brightness
      
      ; Miscellaneous
      T0                                             ; select first tool
      
      ; ***********************************************************
      ; Euclid Probe Fixed Dock M401 Deploy Probe Macro
      ; RRF3.X Firmware Example
      ; saveas system/deployprobe.g
      ; comments and echo statements throughout are provided for convenience
      ; ***********************************************************
      ; echo "Running deployprobe.g"
      ; if !move.axes[0].homed || !move.axes[1].homed     ; If the printer hasn't been homed, home it
      ;    M98 P"0:/sys/homexy.g" 
      
      ; uncomment next line to echo the probe deploy state 
      echo "Object Model deployuser token =" ^sensors.probes[0].deployedByUser
      
      
      
      M564 H1 S0               ; Allow movement BEYOND axes boundaries (for Y to reach probe dock)
      
      G91                      ; relative positioning
      echo "Lift Z in advance of deploy" 
      G1 H2 Z15 F3000          ; move Z 15 for clearance above dock.
      ;                        ; need to figure out some safety check on this
      G90                                   ; absolute positioning
      
      ; echo "Probe Value =" ^sensors.probes[0].value[0]
      
      if sensors.probes[0].value[0]!=1000    ; if sensor is value other than 1000 do this
        ; uncomment next line to echo the probe deploy state 
        ; echo "deployuser token = " ^sensors.probes[0].deployedByUser
        ; echo "Probe State = " ^sensors.probes[0].value[0]
          abort "deployprobe start value Probe already picked up.  Manually return probe to the dock"
      
      
      
      ; if we're here we know it's becasue the above is true which I assume is because you have an NC switch as a probe.
      ; echo "Passed first logic test to deploy probe"
      ;G1 x17 y292 ; Stow Clear point
      ;G1 x17 Y295 ; Stow Home Point
      ;G1 X48 Y295 ; Stow Enter Point
      
      
      
      G1 x17 y292 F6000           ; move adjacent to probe dock location
      M400                         ; wait for moves to finish
      
      ; echo "Probe Pickup while loop running"
      
      ; uncomment next line to echo the probe deplot state 
      ; echo "Object Model Deployuser token (before while loop) = " ^sensors.probes[0].deployedByUser
      
      while sensors.probes[0].value[0]=1000
        G1 x17 Y295 F3000            ;  move over dock 
        G4 S1                       ; pause for pickup 
        echo "Probe Value =" ^sensors.probes[0].value[0]
        G1 X48 Y295 F1200           ;  slide probe out of dock - slowly
        M400
        ; G4 S1                     ; pause 1 seconds
        ; the following check is to halt the while loop from repeating after 1 try at deploying the probe
        echo "Iteration = " ^iterations
        if iterations=1
           break
      
      echo "Probe Pickup while loop complete"
      
      ; uncomment to echo the probe deplot state 
      ; echo "Object Model Deployuser token (after while loop) = " ^sensors.probes[0].deployedByUser
      
      G90                           ; absolute positioning
      G1 X150 Y150 Z10 F3000        ; move bed to clear probe from build surface 
      M400                          ; wait for moves to finish
      
      
      if sensors.probes[0].value[0]!=0
        ; uncomment to echo the probe deploy state 
        echo "Object Model Deployuser token (in abort if section)= " ^sensors.probes[0].deployedByUser
        abort "Deployprobe endvalue not 0 Probe not picked up!  Deploy cancelled."
        
      M564 H1 S1                    ; Restrict movement to within axes boundaries (for normal Y movement)
      
      echo "Macro deployprobe.g complete"
      
      
      ; ***********************************************************
      ; Euclid Probe homez.g Example Macro
      ; RRF3.X Firmware Example
      ; saveas system/homez.g
      ; comments and echo statements throughout are provided for convenience
      ; ***********************************************************
      
      
      if !move.axes[0].homed || !move.axes[1].homed     ; If the printer hasn't been homed, home it
         M98 P"0:/sys/homexy.g"  
      
      M561                                            ; clear any bed transform
      M290 S0 R0                                      ; clear baby steps per Wes C
      G91                                             ; relative positioning
      M400
      
      ; G1 H2 Z6 F6000                                ; lift Z relative to current position
      G90                                             ; absolute positioning
      
      ; echo "Call deployprobe.g macro" 
      M401 P0                                         ; This runs macro file deployprobe
      
      ; echo "Return"
      G1 X145 Y162.5 F9000                            ; go to first probe point
      M400
      
      ; echo "G30 S-2 Command"
      G30 -2
      
      G1 Z10
      M400
      G4 P500
      ; echo "Call bed.g macro"
      M98 P"0:/sys/bed.g"                       ; tram bed
      
      ; echo "Return"
      G1 X145 Y165 F9000                              ; go back to the first probe point and reprobe 0 in case it moved
      G30
      
      ; echo "Call retractprobe.g macro"
      M402 P0                                         ; retract probe
      ; echo "Return"
      
      G1 Z10 F600                                     ; lift Z relative to current position
      G90                                             ; absolute positioning
      M564 S1 H0
      ; G1 X150 Y0 F9000                              ; move carraige to center front
      
      Steve Lynchundefined 2 Replies Last reply Reply Quote 0
      • Steve Lynchundefined
        Steve Lynch @Steve Lynch
        last edited by

        @steve-lynch

        Euclid provides a 4 point bed leveling example, I have a railcore, which uses 3 point tramming, so I pointed the script to My Bed.g script.

        I assume that is correct?

        sorry for the huge post.

        Steve Lynchundefined 1 Reply Last reply Reply Quote 0
        • Steve Lynchundefined
          Steve Lynch @Steve Lynch
          last edited by

          @steve-lynch

          This is the error I keep getting....

          1/15/2022, 9:23:15 PM deployprobe start value Probe already picked up. Manually return probe to the dock
          Error: Homing failed

          I was told that the script setup as I have it, should be able to tell whether or not the probe is already picked up, and simply act accordingly.

          That does not appear to be the case.

          Using the three wires, My probe lights are on all of the time, and turn off when it probes.

          Normal probe state shows "not triggered" and changes if I hit the micro switch.

          My homeall.g is the only script that runs all the way through.

          If I try to home only Z, it defaults to the above error.

          Alex.crundefined 1 Reply Last reply Reply Quote 0
          • Alex.crundefined
            Alex.cr @Steve Lynch
            last edited by

            @steve-lynch

            Can you please re-submit your code from your first5 post but using the code insert function of the forum? (The button looks like </>).

            I have a sneaking suspicion that your code is not indented properly so your if commands are not working properly so it is just aborting instead of jumping past the abort.

            Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

            Steve Lynchundefined 2 Replies Last reply Reply Quote 0
            • zaptaundefined
              zapta
              last edited by

              @steve-lynch said in Euclid Probe / Railcore frustration. Any advice?:

              ; echo "Probe State = " ^sensors.probes[0].value[0]

              Have you tried to uncomment this? It will tell you what switch value the duet sees before it aborts.

              ; echo "Probe State = " ^sensors.probes[0].value[0]
              

              Also, in the DWC dashboard, the probe value should be 1000 when the Euclid is not attached to the head and 0 when it is (and 1000 if it is attached to the head and you press the switch).

              Steve Lynchundefined 1 Reply Last reply Reply Quote 0
              • Steve Lynchundefined
                Steve Lynch @Steve Lynch
                last edited by

                This post is deleted!
                1 Reply Last reply Reply Quote 0
                • Steve Lynchundefined
                  Steve Lynch @Alex.cr
                  last edited by

                  @alex-cr My apologies... I didn't even know that was a thing.... I fixed it! I can see where this makes it much easier.. again, sorry about that.

                  Alex.crundefined 1 Reply Last reply Reply Quote 0
                  • Steve Lynchundefined
                    Steve Lynch @zapta
                    last edited by

                    @zapta Probe value is reading properly as you asked.

                    This is what it's showing for probe value in console:

                    1/16/2022, 12:48:55 AM G28
                    Object Model deployuser token =false
                    Lift Z in advance of deploy

                    1/16/2022, 12:49:00 AM Probe Value =0
                    deployprobe start value Probe already picked up. Manually return probe to the dock
                    Object Model deployuser token =true
                    Lift Z in advance of deploy

                    1/16/2022, 12:49:05 AM Probe Value =0
                    deployprobe start value Probe already picked up. Manually return probe to the dock
                    Error: Homing failed

                    1 Reply Last reply Reply Quote 0
                    • Steve Lynchundefined
                      Steve Lynch @Alex.cr
                      last edited by

                      @alex-cr said in Euclid Probe / Railcore frustration. Any advice?:

                      @steve-lynch

                      Can you please re-submit your code from your first5 post but using the code insert function of the forum? (The button looks like </>).

                      Fixed! Submitted as requested.

                      I have a sneaking suspicion that your code is not indented properly so your if commands are not working properly so it is just aborting instead of jumping past the abort.

                      This is the 2nd time someone has mentioned indentation today... I'm not clear as to what the rules are for indent.

                      1 Reply Last reply Reply Quote 0
                      • Alex.crundefined
                        Alex.cr @Steve Lynch
                        last edited by

                        @steve-lynch
                        No worries. Just makes it obvious when dealing with meta commands.

                        Ill take another look now.

                        Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                        1 Reply Last reply Reply Quote 0
                        • A Former User?
                          A Former User
                          last edited by A Former User

                          This post is deleted!
                          Steve Lynchundefined 1 Reply Last reply Reply Quote 1
                          • zaptaundefined
                            zapta
                            last edited by

                            @arnold_r_clark said in Euclid Probe / Railcore frustration. Any advice?:

                            no conditional g code required

                            @Arnold_R_Clark, your code looks clean and easy to read. One reason people add conditional gcode is for extra safety. For example, what will happen with your code if something will go wrong with placing the probe away and it will stay on the head? Will it then crash when you will try to print?

                            Steve Lynchundefined A Former User? 2 Replies Last reply Reply Quote 0
                            • Steve Lynchundefined
                              Steve Lynch @zapta
                              last edited by Steve Lynch

                              @zapta Thanks for the second set of eyes on this dude!

                              That's kind of where I'm at... I can make the machine move anywhere I want, moves are easy... it's the conditional code as you guys call it, that's got me twisted. I understand that it's supposed to be an "If This, Then That" type of flow, but That's kind of above My pay grade. I'm not finding much in the manual to outline how that type of code works.

                              Like I always do, I'll at least document, and share My working code with others if I ever get it sorted.

                              I'm almost 100% certain that My problem is that I need to either uncomment, or change variables in the conditional stuff. The problem is, the example scripts provided by Euclid don't really make it clear to a non-coder like me, what variables are there for reference, and which ones should be changed.

                              1 Reply Last reply Reply Quote 0
                              • Steve Lynchundefined
                                Steve Lynch @A Former User
                                last edited by Steve Lynch

                                @arnold_r_clark

                                Thank you very much! The conditional code is what I'm struggling with. I'm concerned about it crashing if it doesn't get stowed before it gets turned off, or if a print fails, and I re-start it remotely, or whatever.

                                Your code is basically how I started off.... Just a series of movements.

                                Then everyone started telling me that I was going to destroy my machine, and I had to set it up to detect the presence of the probe.

                                I think at 48 years old, considering that I've never stepped in front of a moving train, or fallen off a building, or anything like that, It's probably safe to say that I'm capable of checking the head before I start a print.. 😁

                                It would just be nice to have the safety of the code.

                                sinned6915undefined 1 Reply Last reply Reply Quote 0
                                • zaptaundefined
                                  zapta
                                  last edited by

                                  @steve-lynch, this is how I check after the probe was supposed to drop.

                                  M400
                                  G4 P250   ; Wait 250ms
                                  if {sensors.probes[0].value[0]} < 750
                                    echo "Error: Clickey not dropped. Value: " ^ {sensors.probes[0].value[0]}
                                    M112  ; Emergency stop.
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • A Former User?
                                    A Former User @zapta
                                    last edited by A Former User

                                    This post is deleted!
                                    1 Reply Last reply Reply Quote 0
                                    • sinned6915undefined
                                      sinned6915 @Steve Lynch
                                      last edited by

                                      @steve-lynch the conditional gcode checks in the Euclid examples ARE safety checks. You don't need extra devices or sensors or anything. The change in probe state is reliable.

                                      If you dont want conditional gcode checks then use the Euclid RRF2 macro examples. Those are tried and true. The developement of Euclid was done under RRF2.

                                      Where have you been soliciting advice from? I do not see any questions or requests for help either at the Euclid discord channel, or in the Railcore discord. The Euclid discord is primary support venue.

                                      As to the answers to some of your questions- which are hard because of the deleted posts along the way-

                                      1. You can probe more than 3 points to calculate 3 point leveling.

                                      2. If your LED's are on with the probe half disconnected then you have mis-wired the device.

                                      3. condiotnal gcode documentation- I am not a coder either but the documentation here in the conditional gcode forum and the dozuki are where I learned what I needed to know and implement.
                                        https://duet3d.dozuki.com/Wiki/GCode_Meta_Commands

                                      4. As to whether or not the checks are required- I think that they are worth having. As all things mechanical, nothing is foolproof, only small probablilities. You'd be surprised how quick an errant screw or nozzle clearing needle will find its way to the magnets and complete the circuit.

                                      If you need more specific help, come join us at the Discord channel linked in the docs.

                                      Steve Lynchundefined 1 Reply Last reply Reply Quote 0
                                      • Steve Lynchundefined
                                        Steve Lynch @sinned6915
                                        last edited by Steve Lynch

                                        @sinned6915

                                        I'm not a discord user, I mean, I occasionally log in if I have to, but I can't stand the platform. I have been seeking help in the railcore group, and a couple other 3d printing groups. I didn't know there was an official support discord.

                                        My probe is behaving as it should. Probe value is zero if it's connected, and 1000 if button is depressed, or probe is removed.

                                        I actually want to use the conditional code, I just don't understand it. I have the example .g files you provide, but I don't know what to uncomment, or any of that.

                                        I build CNC tool changers, I'm quite aware that errant debris can cause huge problems in devices. I realize a probe will probably just break, or fall off, but I'm used to a 3 LB razor blade going 25,000 rpm.... one of those gets away from you, and it's a real shit show. So I'm a big fan of safety checks.

                                        I'll follow your link for the meta commands.

                                        If I can't sort it out, I'll bite the bullet, and hop on discord I guess.

                                        sinned6915undefined PaulHewundefined 2 Replies Last reply Reply Quote 0
                                        • sinned6915undefined
                                          sinned6915 @Steve Lynch
                                          last edited by

                                          @steve-lynch I watch the Euclid channel and some of the other printer channels there. It the least of the evils...

                                          To confirm, what is the issue you are trying to wrangle?

                                          I assume that you are using fixed dock setup.

                                          To confirm, you are using the examples from either the euclidprobe.com or git.io/euclid repo. They should be the same.

                                          As far as the echo statements, and which need to or are are commented out, you should not have to touch them. There are really debug statements to aid users in tracking what is going on. you can comment them all out if you want.

                                          I put them in and left them because of all the effort to figure out the proper syntax. I felt it was easier to keep in and comment it out in case someone down the road needed them.

                                          For example in the deployprobe.g, the "Probe Value =" is the token that is displayed on the DWC interface.

                                          ; ***********************************************************
                                          ; Euclid Probe Fixed Dock M401 Deploy Probe Macro
                                          ; RRF3.X Firmware Example
                                          ; saveas system/deployprobe.g
                                          ; comments and echo statements throughout are provided for convenience
                                          ; ***********************************************************
                                          ; echo "Running deployprobe.g"
                                          ; if !move.axes[0].homed || !move.axes[1].homed     ; If the printer hasn't been homed, home it
                                          ;    M98 P"0:/sys/homexy.g" 
                                          
                                          ; uncomment next line to echo the probe deploy state 
                                          echo "Object Model Deployuser token =" ^sensors.probes[0].deployedByUser
                                          
                                          M564 H1 S0                   ; Allow movement BEYOND axes boundaries (for Y to reach probe dock)
                                          
                                          G91                          ; relative positioning
                                          echo "Lift Z in advance of deploy" 
                                          G1 H2 Z15 F3000              ; move Z 15 for clearance above dock.
                                          ;                            ; need to figure out some safety check on this
                                          G90                          ; absolute positioning
                                          
                                          ; uncomment next line to echo the probe value 
                                          ; echo "Probe Value =" ^sensors.probes[0].value[0]
                                          
                                          if sensors.probes[0].value[0]!=1000    ; if sensor is value other than 1000 do this
                                            ; uncomment next line to echo the probe deploy state 
                                            ; echo "deployuser token = " ^sensors.probes[0].deployedByUser
                                            ; echo "Probe State = " ^sensors.probes[0].value[0]
                                            abort "deployprobe start value Probe already picked up.  Manually return probe to the dock"
                                          
                                          ; if we're here we know it's becasue the above is true which I assume is because you have an NC switch as a probe.
                                          ; echo "Passed first logic test to deploy probe"
                                          
                                          ; Dock side position is at X0 Y30
                                          ; Docked probe postion is at X0 Y0 
                                          ; Dock exit point is at X65 Y0 
                                          
                                          G1 X5.0 Y30 F6000             ; move adjacent to probe dock location
                                          M400                          ; wait for moves to finish
                                          
                                          ; echo "Probe Pickup macro running"
                                          
                                          ; uncomment next line to echo the probe deplot state 
                                          ; echo "Object Model Deployuser token (before while loop) = " ^sensors.probes[0].deployedByUser
                                          
                                          G1 X0 Y0 F3000                ; move over dock 
                                          G4 S1                         ; pause 1.0 sec for pickup 
                                          
                                          ; uncomment next line to echo the probe value 
                                          ; echo "Probe Value =" ^sensors.probes[0].value[0]
                                          
                                          G1 X65 Y0 F1200               ;  slide probe out of dock - slowly
                                          M400
                                          G4 P500                       ; pause 0.5 seconds
                                          
                                          echo "Probe Pickup complete"
                                          
                                          ; uncomment to echo the probe deploy state 
                                          ; echo "Object Model Deployuser token (after while loop) = " ^sensors.probes[0].deployedByUser
                                          
                                          G90                           ; absolute positioning
                                          G1 X150 Y150 G3000            ; move to the center of the bed
                                          M400                          ; wait for moves to finish
                                          
                                          
                                          if sensors.probes[0].value[0]!=0
                                            ; uncomment to echo the probe deploy state 
                                            echo "Object Model Deployuser token (in abort if section)= " ^sensors.probes[0].deployedByUser
                                            abort "Deployprobe endvalue not 0 Probe not picked up!  Deployt cancelled."
                                            
                                          M564 H1 S1                    ; Restrict movement to within axes boundaries (for normal Y movement)
                                          
                                          echo "Macro deployprobe.g complete"
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • zaptaundefined
                                            zapta
                                            last edited by

                                            @arnold_r_clark said in Euclid Probe / Railcore frustration. Any advice?:

                                            conditional g code is NOT required for that to process to occur.

                                            This practice is called 'defensive programming'. That's having a gracefully handling also for conditions that 'can never occur'. 😉

                                            https://en.wikipedia.org/wiki/Defensive_programming

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