On Tue, 28 Jan 2025 at 16:46, Horváth Csaba <[email protected]> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users