Which tool is enabled after startup?
-
@dc42 said in Which tool is enabled after startup?:
A variable would only solve that if it was persistent between power cycles.
On my tool changer I avoid the need for additional wires and inputs on the main board by using a tool board for each tool, and connecting the dock sense switches to those.
If you have a spare analog input, you could use that for the effector docking sensor, and use different value resistors on each tool.
This is a fun way! How can you read the value of a resistor?
-
-
@Phaedrux
do you have an idea?
btw. the macro "toolchange_set_tool" is called in tfree aswell -
@taconite Sorry, to be honest I'm not even sure what you're trying to do.
-
@Phaedrux
haha okay no problem
I will try to rephrase it.
I have a Delta with automatic toolchanging so assuming Tool 1 is in the effector after a power cycle (e.g. after emergency stop or manual off/on) I need to know that Tool 1 is in the effector and not tool 0 or n to avoid collision. Therefore I would like to store this information in a macro that is executed after startup.
The information (which tool is currently enabled) is written in a macro (tool_active) by a macro (toolchange_set_tool) which is called from the Tool macros (tfree and tpost) (tfree to tell the tool_active macro that no tool is enabled and tpostX to write into the macro that tool X is enabled).I have no change to use tool docking endstops because how the tools are parked. That's why I wanted to use a software solution.
I hope this makes it a little clearer
-
Yes, that part I gather. I don't understand why the macro writing isn't working for you. Can you post the exact files you are using?
-
toolchange_set_tool
if state.currentTool==0 M560 P"/sys/tool_active" T0 <!-- **EoF** --> elif state.currentTool==1 M560 P"/sys/tool_active" T1 <!-- **EoF** --> elif state.currentTool==2 M560 P"/sys/tool_active" T2 <!-- **EoF** --> elif state.currentTool==2 M560 P"/sys/tool_active" T3 <!-- **EoF** --> elif state.currentTool==4 M560 P"/sys/tool_active" T4 <!-- **EoF** --> else M560 P"/sys/tool_active" <!-- **EoF** -->
tfree0.g
... M98 P"toolchange_set_tool"
tpost0.g
... M98 P"toolchange_set_tool"
e.g. tool_active (The T1 is indent because of how the macro toolchange_set_tool is built)
T1
in config.g last command
M98 P"tool_active"
-
@Phaedrux
The core problem is, that when I run a macro that has e.g. only a "T0" command in there - the tool is not activate.
So the base question is: What happens in the background if I click "Tool0" in DWC or on Panel due? Because then the Tool is set active and the tpre0.g macro runs -
@taconite said in Which tool is enabled after startup?:
So the base question is: What happens in the background if I click "Tool0" in DWC or on Panel due? Because then the Tool is set active and the tpre0.g macro runs
When using the DWC or Panel to select a tool it would be the same as sending the tool command itself and would behave as described here: https://duet3d.dozuki.com/Wiki/Gcode#Section_T_Select_Tool
-
@Phaedrux Makes total sense but why is there a different behavior?
see:
https://youtu.be/cAUnC5YKdW8 -
-
Thanks for the video, I'm not sure what is going on under the hood here. Hopefully DC42 can get a chance to look more closely soon.
-
@dc42 any idea of the behavior?
-
A macro containing just a T0 or T1 command works for me. Tested on two machines.
-
@dc42 okay this is super strange
have you had a look at the video?
I will try it again but just have no idea why that is -
holy moly! I finally made it work. Thank you for all your support. In my tpreX.g macros I had an abort command which aborted the tool change when there was still a tool in the effector. I removed it and now it is working.
The strange thing is that it was working when manually selecting a tool on PanelDue or on the DWC and I have no idea what kept it from working when running a macro with Tn
-
@taconite what was the abort command?
-
I use the abort command (https://duet3d.dozuki.com/Wiki/GCode_Meta_Commands) to abort things that should not occur (e.g. tool still there after parking) - maybe there is a better way to do that
EDIT: @T3P3Tony
-
@taconite so you had some "if <expression> ... abort" logic to check for certain conditions and then abort if they were true or false? Maybe the issue was the expression was evaluating to true (or false) when it should not have been.
-
I had it this way (tpre.g)
if no tool in effector pick tool else {} display message "Sill tool in effector" abort
I removed the abort. Everything was correct but the execution of a macro with a Tpren.g just did not work with the abort