On Tue, 28 Jan 2025 at 16:46, Horváth Csaba <hcs....@gmail.com> wrote:
> I have an old milling machine with a hydraulic spindle speed range > switch. The hydraulic valve has 2 coils (low and high speed). There are > 2 feedback inductive sensors (for low and high speed). > How can I solve this so that when a program needs to change the speed > range, it does so automatically My lathe has a two-speed electronically controlled gearbox, but it does not have the inductive switches to indicate which gear it is in. I use this HAL component (see the halcompile documents for how to use it) Note that this works in conjunction with a three-position switch so that I can lock the spindle in high or low ratio, if I want to. component gearchange "A component to choose spindle gears according to spindle speed"; pin in float speed-command; pin in bit spindle-on; pin in bit manual-low; pin in bit manual-high; pin in bit brake-enable; pin out float motor-speed; pin out bit low-gear; pin out bit high-gear; pin out bit brake; param rw float low-ratio=3; param rw float high-ratio=1; param rw float max-low = 500; author "andy pugh"; license "GPL"; function _; ;; FUNCTION(_){ static int old_M3; if (spindle_on) { if (!old_M3){ // spindle off to on transition if (manual_high) { high_gear = 1; low_gear = 0; brake = 0; } else if (manual_low){ high_gear = 0; low_gear = 1; brake = 0; } else if (speed_command <= max_low){ high_gear = 0; low_gear = 1; brake = 0; } else { high_gear = 1; low_gear = 0; brake = 0; } } } else { //spindle off high_gear = 0; low_gear = 0; brake = brake_enable; } old_M3 = spindle_on; if (high_gear){ motor_speed = speed_command * high_ratio; } else if (low_gear){ motor_speed = speed_command * low_ratio; } } -- atp "A motorcycle is a bicycle with a pandemonium attachment and is designed for the especial use of mechanical geniuses, daredevils and lunatics." — George Fitch, Atlanta Constitution Newspaper, 1912 _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users