mycnc:independent_pulse_generator
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
mycnc:independent_pulse_generator [2019/09/23 11:25] – ivan | mycnc:independent_pulse_generator [2019/10/03 14:31] – ivan | ||
---|---|---|---|
Line 192: | Line 192: | ||
====Pulse Generator control for Spindle==== | ====Pulse Generator control for Spindle==== | ||
- | It is possible to control the spindle speed through the pulse generator. The following code describes | + | It is possible to control the spindle speed through the pulse generator. |
+ | |||
+ | When using the GUI elements (buttons, input lines, etc.) it is convenient (and necessary) to use the multiplier and frequency registers when setting the generator frequency (what you see is NOT what you get, as the multipliers convert the human-read values into real machine values). For example, when the operator changes the value of register #8133 (the preset generator frequency), myCNC software will automatically recalculate the value of this preset frequency | ||
+ | |||
+ | When utilizing the Hardware PLC, you MUST use the " | ||
+ | |||
+ | **Independent Pulse Generator Spindle implementation example** | ||
+ | |||
+ | 1. Add the code that enables the generator into the Hardware PLC procedure M03.plc (spindle ON procedure). It is convenient to add code to the end of the procedure before the exit(99); line. | ||
+ | |||
+ | <code C> | ||
+ | // Set the acceleration of the generator | ||
+ | gvarset (8131, 100000); timer = 30; do {timer -;} while (timer> 0); // Delay for 30ms | ||
+ | |||
+ | // Convert spindle speed reference to frequency. | ||
+ | // The value of the coefficient is selected in such a way as to convert | ||
+ | // 12-bit spindle speed to generator frequency | ||
+ | k = 123456; | ||
+ | freq = eparam * k; // Calculate the raw value of the generator frequency | ||
+ | |||
+ | // Send generator frequency value | ||
+ | gvarset (8130, freq); timer = 30; do {timer -;} while (timer> 0); // Delay for 30ms | ||
+ | |||
+ | exit (99); // normal exit | ||
+ | |||
+ | </ | ||
+ | |||
+ | 2. Add the following code to to enable the generator into the Hardware PLC spindle speed adjustment procedure (SPN.plc controls the speed with which the spindle is rotating). | ||
+ | |||
+ | <code C> | ||
+ | // Set the acceleration of the generator | ||
+ | gvarset (8131, 100000); timer = 30; do {timer -;} while (timer> 0); // Delay for 30ms | ||
+ | |||
+ | // Convert reference spindle speed to frequency. | ||
+ | // The value of the coefficient k is selected in such a way as to convert | ||
+ | // 12-bit spindle speed to generator frequency | ||
+ | k = 123456; | ||
+ | freq = eparam * k; // Calculate the raw value of the generator frequency by using the multiplier k | ||
+ | |||
+ | // Send the generator frequency value | ||
+ | gvarset (8130, freq); timer = 30; do {timer -;} while (timer> 0); // Delay for 30ms | ||
+ | exit (99); // normal exit | ||
+ | </ | ||
+ | |||
+ | 3. Add the generator shutdown code to the Hardware PLC spindle shutdown procedure (M05.plc turns the spindle OFF). It is also convenient to add this code right at the end of the PLC procedure, before the exit(99); line. | ||
+ | |||
+ | <code C> | ||
+ | // Send generator frequency value | ||
+ | gvarset (8130.0); timer = 30; do {timer -;} while (timer> 0); // Delay for 30ms | ||
+ | exit (99); // normal exit | ||
+ | </ | ||
+ | |||
+ | In this implementation, | ||
+ | |||
+ | < | ||
+ | If the task is to connect both spindles at the same time and switch them during operation | ||
+ | (for example, by referencing their tool number), it is necessary to organize | ||
+ | a more complex PLC procedure, which will be checking the number of the tool, | ||
+ | the value of the global variable or input controller and by this condition | ||
+ | would include only one of the spindles. | ||
+ | </ | ||
+ | |||
+ | In this example, we are assuming that the speed of a conventional spindle is 24,000 rpm. This value, respectively, | ||
+ | |||
+ | When calling the PLC procedures for turning ON the spindle (M03.plc) and changing the spindle speed (SPN.plc), the spindle speed value is stored in the **eparam** variable. | ||
+ | |||
+ | myCNC controllers have 12-bit registers for PWM and DAC at 0-10V.This means that with a maximum spindle speed of **24000 rpm** and a factor of **1**, the '' | ||
+ | |||
+ | Assume that the maximum servo spindle speed is 4,500 rpm. Then the '' | ||
+ | |||
+ | < | ||
+ | |||
+ | The Pulse-Dir input of the servo spindle is set to 10,000 pulses, i.e. the motor shaft will make a full revolution every 10,000 pulses. Then, to achieve a full speed of 4500 rpm, the following pulse rate is required: | ||
+ | |||
+ | < | ||
+ | |||
+ | The register RAW value for 750kHz (750,000Hz) should be | ||
+ | |||
+ | < | ||
+ | |||
+ | If the maximum speed corresponds to the '' | ||
+ | |||
+ | < | ||
+ | |||
+ | By setting these values in the M03.plc and SPN.plc procedures, we will generate the required 750 kHz frequency when the spindle speed is set to 4500, as well as smooth frequency control over the entire range from 0 to 4500 rpm. | ||
+ | |||
+ | |||
+ | **A method for evaluating the required acceleration of a generator** | ||
+ | |||
+ | One unit of the generator acceleration is, by a very rough approximation, | ||
+ | |||
+ | **Test code for spindle start-up and spindle speed adjustment procedures**: | ||
<code C M03.plc> | <code C M03.plc> | ||
Line 225: | Line 316: | ||
- | gvarset(8131, | + | gvarset(8131, |
k=671223; | k=671223; | ||
freq=val*k; //calculate the RAW frequency | freq=val*k; //calculate the RAW frequency | ||
if (freq> | if (freq> | ||
- | gvarset(8130, | + | gvarset(8130, |
Line 264: | Line 355: | ||
</ | </ | ||
- | |||
- | {{mycnc-spindle-pulse-dir-005.png}} | ||
- | {{mycnc-spindle-pulse-dir-006.png}} | ||
==== Low level CNC registers to control independent pulse generator ==== | ==== Low level CNC registers to control independent pulse generator ==== | ||
- | This is for records only. Users don't have to use low-level access. | + | This is for records only. Users don't have to utilize these settings which are changed by having |
^ Register Name ^ Address ^ Description ^ | ^ Register Name ^ Address ^ Description ^ |
mycnc/independent_pulse_generator.txt · Last modified: 2022/02/11 15:45 by ivan