Hi ..
I have finally made it work.
At least the PlanetCNC controller with the Rapidchange ATC
The endmills are changed successfully, but now I need to add automated system for dust boot.
I have designed the boot myself, and also the holding mechanism. which work for me.

I need only to know where and what to add into the M6 script.

I need to add only 6 steps

1 wait 2-5s till spindle stop
2 go to xyz coordinates (over the boot holder)
3 go down to xyz and next forward to losk the boot and then just up to release it.
4 do the Rapidchange tool change with offset measure
5 go back over the boot holder , go down to grab the boot and go back to release it from holder.
6 go up to safe z , start spindle and wait 2-5s for spindle to spin.
continue..

CAN anyone try to help ?

Dust boot and holder short video in attachments

Thank you


The M6 script is here to view

(M6 for PlanetCNC)
(Adapted from PlanetCNC's provided M6 macro)
(Modified by Greilick Industries for RapidChange ATC)

(Subroutines)
o<go_to_safe_height> sub
G53 G00 Z#<_tc_safeheight>
G09
o<go_to_safe_height> endsub

o<go_to_manual_pos> sub
G53 G00 Z#<_tc_safeheight>
o<use_enabled_pos> if [#<_tc_pos_en>]
G53 G00 X#<_tc_pos_x> Y#<_tc_pos_y>
G53 G00 Z#<_tc_pos_z>
o<use_enabled_pos> endif
G09
o<go_to_manual_pos> endsub

o<engage_and_retreat> sub
G53 G00 Z#<_rc_z_engage>
G09
G53 G00 Z#<_rc_z_retreat>
G09
o<engage_and_retreat> endsub

o<close_cover> sub
o<cover_enabled> if [#<_rc_cover_enabled> EQ 1]
(print, Close dust cover)
o<close_cover_method> if [#<_rc_cover_mode> EQ 1]
o<move_cover_axis> if [#<_rc_cover_axis> EQ 2]
G53 G00 B#<_rc_cover_closed_pos>
o<move_cover_axis> elseif [#<_rc_cover_axis> EQ 3]
G53 G00 C#<_rc_cover_closed_pos>
o<move_cover_axis> else
G53 G00 A#<_rc_cover_closed_pos>
o<move_cover_axis> endif
G09
o<close_cover_method> elseif [#<_rc_cover_mode> EQ 2]
M62 P#<_rc_cover_output> Q0
G4 P#<_rc_cover_dwell>
G09
o<close_cover_method> endif
o<cover_enabled> else
(print, Cover disabled)
o<cover_enabled> endif
o<close_cover> endsub

o<open_cover> sub
o<cover_enabled> if [#<_rc_cover_enabled> EQ 1]
(print, Open dust cover)
o<open_cover_method> if [#<_rc_cover_mode> EQ 1]
o<move_cover_axis> if [#<_rc_cover_axis> EQ 2]
G53 G00 B#<_rc_cover_open_pos>
o<move_cover_axis> elseif [#<_rc_cover_axis> EQ 3]
G53 G00 C#<_rc_cover_open_pos>
o<move_cover_axis> else
G53 G00 A#<_rc_cover_open_pos>
o<move_cover_axis> endif
G09
o<open_cover_method> elseif [#<_rc_cover_mode> EQ 2]
M62 P#<_rc_cover_output> Q1
G4 P#<_rc_cover_dwell>
G09
o<open_cover_method> endif
o<cover_enabled> else
(print, Cover disabled)
o<cover_enabled> endif
o<open_cover> endsub


(Macro)
(print,Tool change)
o<skip_not_running> if[LNOT[ACTIVE[]]]
(print, G-code not running)
(print, BYPASSED)
M6
M99
o<skip_not_running> endif

o<skip_tc_disabled> if [LNOT[#<_tc_enable>]]
(print, Tool change not enabled)
(print, BYPASSED)
M6
M99
o<skip_tc_disabled> endif

o<ensure_probe_pin> if[[#<_tc_toolmeasure>] AND [#<_probe_pin_1> EQ 0] AND [#<_probe_pin_2> EQ 0]]
(msg,Configuration Error: Program terminated.\\Tool offset measurement is enabled without the tool length sensor being properly configured.)
(print, Tool length sensor not configured)
(print, TERMINATED)
M2
o<ensure_probe_pin> endif

o<ensure_safe_height> if [LNOT[#<_tc_safeheight_en>]]
(msg,Configuration Error: Program terminated.\\Safe height is not enabled. The RapidChange ATC M6 macro requires 'Safe Height' to be enabled and configured in File/Settings/Program Options/Tool Change.)
(print, Safe height not enabled)
(print, TERMINATED)
M2
o<ensure_safe_height> endif

o<skip_same_tool> if [#<_tc_skipsame> AND [#<_current_tool> EQ #<_selected_tool>]]
(print, Same tool selected)
(print, BYPASSED)
M99
o<skip_same_tool> endif

o<ensure_atc_config> if [#<_tc_atc_en>]
o<ensure_alignment> if [LNOT[[#<_rc_alignment> EQ 1] OR [#<_rc_alignment> EQ 2]]]
(msg,Configuration Error: Program terminated.\\RapidChange ATC alignment is not configured.)
(print, ATC alignment not configured)
(print, TERMINATED)
M2
o<ensure_alignment> endif
o<ensure_direction> if [LNOT[[#<_rc_direction> EQ 1] OR [#<_rc_direction> EQ 2]]]
(msg,Configuration Error: Program terminated.\\RapidChange ATC direction is not configured.)
(print, ATC direction not configured)
(print, TERMINATED)
M2
o<ensure_direction> endif
o<ensure_pocket_offset> if [LNOT[#<_rc_pocket_offset> GT 0]]
(msg,Configuration Error: Program terminated.\\RapidChange ATC pocket offset is not configured.)
(print, ATC pocket offset not configured)
(print, TERMINATED)
M2
o<ensure_pocket_offset> endif
o<ensure_atc_config> endif

#<toisset>=0
#<wstartx> = #<_x>
#<wstarty> = #<_y>
#<wstartz> = #<_z>

#<spindle> = #<_spindle>
#<spindlespeed> = #<_spindlespeed>
#<units> = #<_units>

o<set_direction> if [#<_rc_direction> EQ 1]
#<direction> = 1
o<set_direction> else
#<direction> = -1
o<set_direction> endif

#<unload_slot> = #<_current_tool>
o<set_unload_slot> if [[#<unload_slot> GT #<_rc_pockets>] OR [#<unload_slot> EQ 0]]
#<unload_slot_valid> = 0
o<set_unload_slot> else
#<unload_slot_valid> = 1
o<set_unload_slot_pos> if [#<_rc_alignment> EQ 1]
#<unload_slot_y> = #<_rc_y_pocket_1>
#<unload_slot_x> = [#<_rc_x_pocket_1> + [[#<unload_slot> - 1] * #<_rc_pocket_offset> * #<direction>]]
o<set_unload_slot_pos> else
#<unload_slot_x> = #<_rc_x_pocket_1>
#<unload_slot_y> = [#<_rc_y_pocket_1> + [[#<unload_slot> - 1] * #<_rc_pocket_offset> * #<direction>]]
o<set_unload_slot_pos> endif
o<set_unload_slot> endif

#<load_slot> = #<_selected_tool>
o<set_load_slot> if [[#<load_slot> GT #<_rc_pockets>] OR [#<load_slot> EQ 0]]
#<load_slot_valid> = 0
o<set_load_slot> else
#<load_slot_valid> = 1
o<set_load_slot_pos> if [#<_rc_alignment> EQ 1]
#<load_slot_y> = #<_rc_y_pocket_1>
#<load_slot_x> = [#<_rc_x_pocket_1> + [[#<load_slot> - 1] * #<_rc_pocket_offset> * #<direction>]]
o<set_load_slot_pos> else
#<load_slot_x> = #<_rc_x_pocket_1>
#<load_slot_y> = [#<_rc_y_pocket_1> + [[#<load_slot> - 1] * #<_rc_pocket_offset> * #<direction>]]
o<set_load_slot_pos> endif
o<set_load_slot> endif

(Prepare modal state)
M5
M9
G90 G#<_set_units>

o<handle_action> if [AND[#<_tc_action>, 1]]
o<tn> if [#<_toolchangename>]
(msg,Change tool to\ $<toolchangename>)
o<tn> else
(msg,Change tool:\ #<_current_tool,0>: $<current_toolname>\to\ #<_selected_tool,0>: $<selected_toolname>)
o<tn> endif
o<handle_action> else
o<tn> if [#<_toolchangename>]
(print, Change tool to $<toolchangename>)
o<tn> else
(print, Change tool #<_current_tool,0> to #<_selected_tool,0>)
o<tn> endif
o<handle_action> endif
o<handle_action> if [AND[#<_tc_action>, 2]]
M0
o<handle_action> endif
G09

o<handle_atc> if [#<_tc_atc_en>]
(print,ATC enabled)

o<ensure_current_tool_exists> if [[#<_tool_exists|#<_current_tool>> EQ 0] AND [#<_current_tool> GT 0]]
(msg,Current tool: #<_current_tool,0> does not exist in tool table.)
(print, Tool #<_current_tool,0> does not exist)
(print, TERMINATED)
M2
o<ensure_current_tool_exists> endif

o<ensure_selected_tool_exists> if [[#<_tool_exists|#<_selected_tool>> EQ 0] AND [#<_selected_tool> GT 0]]
(msg,Selected tool: #<_selected_tool,0> does not exist in tool table.)
(print, Tool #<_selected_tool,0> does not exist)
(print, TERMINATED)
M2
o<ensure_selected_tool_exists> endif

o<go_to_safe_height> call
o<open_cover> call

o<unload> if [#<_current_tool> GT 0]
(print, Unload tool #<_current_tool,0>)

o<unload_method> if [#<unload_slot_valid> EQ 0]
(print, Pocket #<unload_slot> out of range)
(print, Manual action required)
o<go_to_manual_pos> call
(print, Pause for manual unload)
(msg,Pocket #<unload_slot> is out of range. Manually unload tool #<_current_tool>.)
(print, Continue)
o<unload_method> else

G53 G00 X#<unload_slot_x> Y#<unload_slot_y>
G53 G00 Z#<_rc_z_spin_start>
M4 S#<_rc_unload_rpm>
G09
o<engage_and_retreat> call

o<confirm_unload> if [#<_rc_tool_rec_enabled> EQ 1]
G53 G00 Z#<_rc_z_zone_1>
G09
o<check_nut_presence> if [#<_hw_input|#<_rc_ir_input>> EQ #<_rc_beam_broken_state>]
G53 G00 Z#<_rc_z_spin_start>
o<engage_and_retreat> call
G53 G00 Z#<_rc_z_zone_1>
G09
o<check_nut_presence_again> if [#<_hw_input|#<_rc_ir_input>> EQ #<_rc_beam_broken_state>]
M5
o<go_to_manual_pos> call
(print, Tool #<_current_tool> failed to unload)
(msg,Pocket #<unload_slot> failed to unload. Manually unload tool #<_current_tool>.)
(print, Continue)
G53 G00 Z#<_tc_safeheight>
G09
o<check_nut_presence_again> else
M5
G53 G00 Z#<_rc_z_move_to_load>
G09
o<check_nut_presence_again> endif
o<check_nut_presence> else
M5
G53 G00 Z#<_rc_z_move_to_load>
G09
o<check_nut_presence> endif
o<confirm_unload> elseif [#<_rc_tool_rec_enabled> EQ 2]
M5
G53 G00 Z#<_tc_safeheight>
G09
o<confirm_unload> else
M5
G53 G00 Z#<_rc_z_move_to_load>
G09
(msg,Confirm tool #<_current_tool> has properly unloaded.)
o<confirm_unload> endif
o<unload_method> endif
o<unload> endif
M61 Q0

o<load> if [#<_selected_tool> GT 0]
(print, Load tool #<_selected_tool,0>)
o<load_method> if [#<load_slot_valid> EQ 0]
(print, Pocket #<load_slot> out of range)
(print, Manual action required)
o<go_to_manual_pos> call
(print, Pause for manual load)
(msg,Pocket #<load_slot> is out of range. Manually load tool #<_selected_tool>.)
(print, Continue)
o<load_method> else
G53 G00 X#<load_slot_x> Y#<load_slot_y>
G53 G00 Z#<_rc_z_spin_start>
M3 S#<_rc_load_rpm>
G09
o<engage_and_retreat> call
o<engage_and_retreat> call
M5

o<confirm_load> if [#<_rc_tool_rec_enabled> EQ 1]
G53 G00 Z#<_rc_z_zone_1>
G09
o<check_zone_1> if [#<_hw_input|#<_rc_ir_input>> EQ #<_rc_beam_broken_state>]
G53 G00 Z#<_rc_z_zone_2>
G09
o<check_zone_2> if [#<_hw_input|#<_rc_ir_input>> EQ #<_rc_beam_broken_state>]
o<go_to_manual_pos> call
(print, Tool #<_selected_tool> failed in zone 2.)
(msg,Pocket #<unload_slot> failed zone 2. Manually load tool #<_selected_tool>.)
(print, Continue)
o<check_zone_2> endif
o<check_zone_1> else
o<go_to_manual_pos> call
(print, Tool #<_selected_tool> failed in zone 1.)
(msg,Pocket #<unload_slot> failed zone 1. Manually load tool #<_selected_tool>.)
(print, Continue)
o<check_zone_1> endif
o<confirm_load> elseif [#<_rc_tool_rec_enabled> EQ 2]
G53 G00 Z#<_tc_safeheight>
G09
o<confirm_load> else
G53 G00 Z#<_tc_safeheight>
G09
(msg,Confirm tool #<_current_tool> has properly loaded.)
o<confirm_load> endif
o<load_method> endif
o<load> endif

M6
o<handle_atc> else
(print,ATC disabled)
o<go_to_safe_height> call
o<go_to_manual_pos> call
(print, Pause for manual tool change)
(msg,ATC is disabled. Your program will be paused.\\Change Tool #<_current_tool,0>: $<current_toolname> to #<_selected_tool,0>: $<selected_toolname>)
(print,Continue)
M6
o<handle_atc> endif


(Tool measure and return state from original M6)
o<tm> if [[#<_tc_toolmeasure> GT 0] AND [#<_tool_skipmeasure|#<_current_tool>> EQ 0]]
G09
(print, Measure tool)
#<sox> = [DEF[#<_tool_so_x|#<_current_tool>>,0]]
#<soy> = [DEF[#<_tool_so_y|#<_current_tool>>,0]]
#<soz> = [DEF[#<_tool_so_z|#<_current_tool>>,0]]

G53 G00 Z#<_tooloff_safeheight>
G53 G00 X[#<_tooloff_sensorx> - #<sox>] Y[#<_tooloff_sensory> - #<soy>]
G53 G00 Z#<_tooloff_rapidheight>

M11P0
G53 G38.2 Z-100000 F#<_tooloff_speed>
G91 G53 G01 Z[+#<_tooloff_swdist>]
o<low> if [#<_tooloff_speed_low> GT 0]
G90 G53 G38.2 Z-100000 F#<_tooloff_speed_low>
G91 G53 G01 Z[+#<_tooloff_swdist>] F#<_tooloff_speed>
o<low> endif
M11P1 G90

G53 G00 Z#<_tooloff_safeheight>
o<chk> if[ACTIVE[] AND NOTEXISTS[#<_probe_z>]]
(msg,Measuring failed)
M2
o<chk> endif

#<off> = [#<_probe_z> - #<_tooloff_sensorz> - #<soz>]

o<tmset> if [#<_tc_toolmeasure> EQ 2]
(print, Set tooltable Z#<off>)
G10 L1 P#<_current_tool> Z#<off>
#<toisset>=2
o<tmset> elseif [#<_tc_toolmeasure> EQ 1]
(print, Set tool offset Z#<off>)
G43.1 Z#<off>
#<toisset>=1
o<tmset> endif
o<tm> endif

o<toen> if [#<_tc_tooloff_en>]
(print, Enable tool offset)
o<tois> if [#<_tc_tooloff_en> EQ 2]
G43
o<tois> elseif [#<_tc_tooloff_en> EQ 1]
G43.1
o<tois> endif
o<toen> endif

o<close_cover> call

G#<units>
G09

o<ar> if [#<_tc_autoreturn>]
(print,AutoReturn)
o<chk> if [#<_z> LT #<wstartz>]
G00 Z#<wstartz>
o<chk> endif
G00 X#<wstartx> Y#<wstarty>
G00 Z#<wstartz>
o<ar> endif

o<sp> if [#<_tc_spindlecheck> AND [#<spindle> EQ 3]]
(print, Turn spindle CW)
S#<spindlespeed>
M3
o<sp> elseif [#<_tc_spindlecheck> AND [#<spindle> EQ 4]]
(print, Turn spindle CCW)
S#<spindlespeed>
M4
o<sp> endif