Schaue Dir mal das Video
an.Habe einen ähnlichen Werkzeugwechsler wie Du und folgende Subroutinen verwendet
o<wzwneu> sub
#4001=45 (bei 8 WZ-Halter 360 Grad durch

#4000=1 (Wartezeit in Sekunden für die Eingänge)
M61 Q#4999 (Werkzeug aus Speicher setzen)
o500 if[#<_current_tool> EQ #<_selected_tool>]
(DEBUG,Tool bereits in Spindel)
o500 elseif [#<_current_tool> NE #<_selected_tool>]
G0 G90 G53 X200 U100 Z300
o501 if[#<_current_tool> EQ 0] (aktuelles WZ ist T0)
o<ventil_an> call
(Endposition)
G0 B[#<_selected_tool> * #4001-#4001] (Karusell drehen)
M6 G43
#4999=#5400 (WZ dauerhaft merken)
o<ventil_aus> call
o501 elseif [#<_current_tool> GT 0] (aktuelles WZ nicht T0)
o502 if [#<_selected_tool> EQ 0] (gewähltes WZ T0)
o<ventil_an> call
G0 B[#<_current_tool> * #4001-#4001] (Karusell drehen)
(Endposition)
M6 G43
#4999=#5400 (WZ dauerhaft merken)
o<ventil_aus> call
o502 elseif [#<_selected_tool> NE 0] (gewähltes WZ nicht T0)
o<ventil_an> call
G0 B[#<_current_tool> * #4001-#4001] (Karusell drehen)
G0 B[#<_selected_tool> * #4001-#4001] (Karusell drehen)
(wieder runter neues wz)
M6 G43
#4999=#5400 (WZ dauerhaft merken)
o<ventil_aus> call
o502 endif
o501 endif
o500 endif
o<wzwneu> endsub
m2
o<Ventil_an> sub
M66 P0 (Eingang ob Druck ausreichend ?)
M64 P0 (Ausgang setzen für Ventil an)
G4 P2
o100 if [#5399 EQ -1] (Stop falls kein Druck. M0)
(DEBUG,STOP: kein Druck!)
(DEBUG,Druckluft einschalten dann weiter mit Start oder Programm abbrechen! Crash Gefahr!)
M0 (Porgrammstop, mit Start geht es weiter)
o100 endif
o<Ventil_an> endsub
m2
o<Ventil_aus> sub
(M66 P0 L4 Eingang ob Klappe geschlossen?)
M65 P0 (Ausgang setzen für Ventil aus )
G4 P2
o100 if [#5399 EQ -1] (Stop falls Klappe nicht geschlossen. M0)
(DEBUG,STOP: kein Druck!)
(DEBUG,Druckluft einschalten dann weiter mit Start oder Programm abbrechen! Crash Gefahr!)
M0 (Stop falls Ventil nicht aus. M0)
o100 endif
o<Ventil_aus> endsub
m2