- Configuring LinuxCNC
- Configuration Tools
- PnCConf Wizard
- Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
28 Aug 2018 14:18 #116710
by tecno
Replied by tecno on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
OK missed case numbering
Always 50Hz = no
Say I want S800
Select Motorspeed LO
Select GearShift LO
Select Gear A ===> 50Hz on that setting will give 1000rpm spindle output and via VFD regulated down to commanded 800rpm
So VFD only regulates all gear settings max/min range === this will give me (more or less) max torque on all gear settings.
component GB_2speed;
pin in bit spindle-enable-in;
pin out bit spindle-enable-out;
pin in float spindle-speed-in;
pin out float motor-speed-out;
pin in float gear.#.min-speed[12];
pin in float gear.#.max-speed[12];
pin in float gear.#.ratio[12];
pin in bit high-gear;
pin in bit gear-AH;
pin in bit gear-BH;
pin in bit gear-B;
pin in bit gear-C;
pin in bit gear-D;
pin in bit gear-E;
license "gpl";
function _;
;;
FUNCTION(_){
int gear;
if (spindle_speed_in == 0) return;
switch (gear_AH + gear_BH * 2 + gear_B * 4 + gear_C * 8 + gear_D * 16 + gear_E *32) {
case 1: // Gear AH
gear = (high_gear != 0) ? 1 : 7;
break;
case 2: // Gear BH
gear = (high_gear != 0) ? 2 : 8;
break;
case 4: // Gear B
gear = (high_gear != 0) ? 3 : 9;
break;
case 8 // Gear C
gear = (high_gear != 0) ? 4 : 10;
break;
case 16: // Gear D
gear = (high_gear != 0) ? 5 : 11;
break;
case 32: // Gear E
gear = (high_gear != 0) ? 6 : 12;
break;
default: // gear selection is bitmasked to be able to spot double-engagement
gear = 0;
}
if (gear >= 0 && spindle_speed_in >= gear_min_speed(gear) && spindle_speed_in <= gear_max_speed(gear)) {
motor_speed_out = spindle_speed_in * gear_ratio(gear);
spindle_enable_out = spindle_enable_in;
} else {
motor_speed_out = 0;
spindle_enable_out = 0;
}
}
Always 50Hz = no
Say I want S800
Select Motorspeed LO
Select GearShift LO
Select Gear A ===> 50Hz on that setting will give 1000rpm spindle output and via VFD regulated down to commanded 800rpm
So VFD only regulates all gear settings max/min range === this will give me (more or less) max torque on all gear settings.
Please Log in or Create an account to join the conversation.
28 Aug 2018 19:37 #116735
by andypugh
Replied by andypugh on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
I don't understand how BH and B are different input pins.
Why would you check for high-gear if you are already in AH?
is high_gear an input from the motor speed switch or from the gear ratio switch?
Why would you check for high-gear if you are already in AH?
is high_gear an input from the motor speed switch or from the gear ratio switch?
Please Log in or Create an account to join the conversation.
28 Aug 2018 19:47 #116737
by tecno
Replied by tecno on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
forum.linuxcnc.org/39-pncconf/33069-help...ing?start=560#116477
Have a closer look at my table that explains all gear settings.
BH = Motor at High Speed and Gear B
B = Gear B
Have a closer look at my table that explains all gear settings.
BH = Motor at High Speed and Gear B
B = Gear B
Please Log in or Create an account to join the conversation.
28 Aug 2018 21:49 #116742
by andypugh
And how is that two separate HAL pins?
Replied by andypugh on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
BH = Motor at High Speed and Gear B
B = Gear B
And how is that two separate HAL pins?
Please Log in or Create an account to join the conversation.
29 Aug 2018 07:29 - 29 Aug 2018 07:30 #116764
by tecno
Replied by tecno on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
I see your point Andy, here a new sheet with new pin names that I hope will work OK.
Last edit: 29 Aug 2018 07:30 by tecno.
Please Log in or Create an account to join the conversation.
29 Aug 2018 14:54 - 29 Aug 2018 14:57 #116774
by andypugh
Replied by andypugh on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
So, 13 valid gears.
It probably makes some sense to have overlap between gears. CL and DH are probably about as good as each other at 275 rpm
I think it would be better to _sense_ the position of the motor speed switch than to actively drive the relay. That way the VFD will not be powered up while the speed is changing-over. The VFD would most probably be damaged by that.
This adds an extra output that can be used with the message HAL component to say which gear should be selected. (using bitslice to convert the int to individual bits)
It probably makes some sense to have overlap between gears. CL and DH are probably about as good as each other at 275 rpm
I think it would be better to _sense_ the position of the motor speed switch than to actively drive the relay. That way the VFD will not be powered up while the speed is changing-over. The VFD would most probably be damaged by that.
component GB_2speed;
pin in bit spindle-enable-in;
pin out bit spindle-enable-out;
pin in float spindle-speed-in;
pin out float motor-speed-out;
pin in bit gear-high;
pin in bit motor-high;
pin in bit gear-A;
pin in bit gear-B;
pin in bit gear-C;
pin in bit gear-D;
pin in bit gear-E;
pin out unsigned gear-required;
pin out unsigned message;
license "gpl";
function _;
;;
FUNCTION(_){
int actual, reqd;
int i;
// These need to be edited to suit the gearbox
int speeds[15] = {0, 80, 125, 160, 215, 270, 360, 450, 595, 750, 1000, 1191, 1500, 2500, 1e99);
int reqd_gear[15] = {0x0, 0x01, 0x21, 0x02, 0x22, 0x04, 0x24, 0x08, 0x28, 0x10, 0x48, 0x68, 0x50, 0x70, 0x0};
if (spindle_speed_in == 0) return;
actual = (high_gear * 0x40 + motor-high * 0x20 + gear_A * 0x10 + gear_B * 0x08 + gear_C * 0x04 + gear_D * 0x02 + gear_E * 0x01);
for (i = 0, spindle_speed_in > speeds[i] && i < 14; i++);
gear_required = reqd_gear[i];
if (gear_required == actual && gear_required != 0x0){ // We are in the right gear
spindle_enable_out = spindle_enable_in;
motor_speed_out = speeds[13] * (spindle_speed_in / speeds[i]);
message = 0;
} else {
motor_speed_out = 0;
spindle_enable_out = 0;
message = i;
}
}
This adds an extra output that can be used with the message HAL component to say which gear should be selected. (using bitslice to convert the int to individual bits)
Last edit: 29 Aug 2018 14:57 by andypugh.
Please Log in or Create an account to join the conversation.
29 Aug 2018 15:03 #116775
by andypugh
Actually, requiring bitslice is laziness on my part.
Replied by andypugh on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
This adds an extra output that can be used with the message HAL component to say which gear should be selected. (using bitslice to convert the int to individual bits)
Actually, requiring bitslice is laziness on my part.
component GB_2speed;
pin in bit spindle-enable-in;
pin out bit spindle-enable-out;
pin in float spindle-speed-in;
pin out float motor-speed-out;
pin in bit gear-high;
pin in bit motor-high;
pin in bit gear-A;
pin in bit gear-B;
pin in bit gear-C;
pin in bit gear-D;
pin in bit gear-E;
pin out unsigned gear-required;
pin out bit message[14];
license "gpl";
function _;
;;
FUNCTION(_){
int actual, reqd;
int i;
// These need to be edited to suit the gearbox
int speeds[15] = {0, 80, 125, 160, 215, 270, 360, 450, 595, 750, 1000, 1191, 1500, 2500, 1e99);
int reqd_gear[15] = {0x0, 0x01, 0x21, 0x02, 0x22, 0x04, 0x24, 0x08, 0x28, 0x10, 0x48, 0x68, 0x50, 0x70, 0x0};
if (spindle_speed_in == 0) return;
actual = (high_gear * 0x40 + motor-high * 0x20 + gear_A * 0x10 + gear_B * 0x08 + gear_C * 0x04 + gear_D * 0x02 + gear_E * 0x01);
for (i = 0, spindle_speed_in > speeds[i] && i < 14; i++);
gear_required = reqd_gear[i];
if (gear_required == actual && gear_required != 0x0){ // We are in the right gear
spindle_enable_out = spindle_enable_in;
motor_speed_out = speeds[13] * (spindle_speed_in / speeds[i]);
message = 0;
} else {
int j;
motor_speed_out = 0;
spindle_enable_out = 0;
for (j = 0; j < 13; j++) { message(j) = 0; }
message(i) = 1;
}
}
Please Log in or Create an account to join the conversation.
29 Aug 2018 18:37 #116805
by tecno
Replied by tecno on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
Now this was a surprise as there are no email notifications on this subject.
Will have a look tomorrow and see if I can grasp this code, thanks Andy.
Will have a look tomorrow and see if I can grasp this code, thanks Andy.
Please Log in or Create an account to join the conversation.
29 Aug 2018 19:09 - 29 Aug 2018 19:10 #116811
by andypugh
Replied by andypugh on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
Again, done at work in Windows, so no guarantees of any sort.
Already spotted one error i have a comma where a semicolon belongs
for (i = 0; spindle_speed_in > speeds && i < 14; i++);
Already spotted one error i have a comma where a semicolon belongs
for (i = 0; spindle_speed_in > speeds && i < 14; i++);
Last edit: 29 Aug 2018 19:10 by andypugh.
Please Log in or Create an account to join the conversation.
29 Aug 2018 19:41 #116817
by tecno
speeds && i < 14; i++);
Is above OK?
Replied by tecno on topic Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
Again, done at work in Windows, so no guarantees of any sort.
Already spotted one error i have a comma where a semicolon belongs
for (i = 0; spindle_speed_in > speeds && i < 14; i++);
speeds && i < 14; i++);
Is above OK?
Please Log in or Create an account to join the conversation.
Moderators: cmorley
- Configuring LinuxCNC
- Configuration Tools
- PnCConf Wizard
- Help needed to get my 7i76E + 7i85S + 7i73 on my mill going.
Time to create page: 0.227 seconds