Euclid Probe / Railcore frustration. Any advice?
-
@alex-cr said in Euclid Probe / Railcore frustration. Any advice?:
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.
-
@steve-lynch
No worries. Just makes it obvious when dealing with meta commands.Ill take another look now.
-
This post is deleted! -
@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?
-
@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.
-
@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.
-
@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.
-
This post is deleted! -
@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-
-
You can probe more than 3 points to calculate 3 point leveling.
-
If your LED's are on with the probe half disconnected then you have mis-wired the device.
-
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 -
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.
-
-
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.
-
@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"
-
@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'.
-
@steve-lynch Here are all my files for my RailCore, running a Duet3 Mini and 1LC toolboard.
sinned helped me as I was having an issue also.
download.zip.txt
Hope they help you. -
Hey Man,
I just noticed I had never responded to thank you for sending me these files. I wanted to apologize.
I know you probably don't Remember, but either way, it bothered me that I had not acknowledged you...So again Thanks so much!
Being able to see how you had it set up really helped me to understand how the different instruction sets interacted.
Take care!
Steve -
@steve-lynch I have removed you from my Rude User and Hit lists.
Its cool, glad it helped you.
Laters,
Paul