|
From: John T. <gi...@gi...> - 2011-12-26 17:29:12
|
Docs: markup fixes and latexmath fix Signed-off-by: John Thornton <jth...@gn...> http://git.linuxcnc.org/?p=emc2.git;a=commitdiff;h=ae545df --- docs/src/drivers/images/pico-ppmc-math.png | Bin 0 -> 4020 bytes docs/src/drivers/pico_ppmc.txt | 112 +++++++++++++------------ docs/src/drivers/pico_ppmc_de.txt | 129 +++++++++++++++------------- docs/src/drivers/pico_ppmc_es.txt | 129 +++++++++++++++------------- docs/src/drivers/pico_ppmc_pl.txt | 111 ++++++++++++------------ docs/src/drivers/pluto_p.txt | 93 ++++++++++---------- docs/src/drivers/pluto_p_de.txt | 93 ++++++++++---------- docs/src/drivers/pluto_p_es.txt | 93 ++++++++++---------- docs/src/drivers/pluto_p_pl.txt | 92 ++++++++++---------- 9 files changed, 446 insertions(+), 406 deletions(-) diff --git a/docs/src/drivers/images/pico-ppmc-math.png b/docs/src/drivers/images/pico-ppmc-math.png new file mode 100644 index 0000000..0877b0f Binary files /dev/null and b/docs/src/drivers/images/pico-ppmc-math.png differ diff --git a/docs/src/drivers/pico_ppmc.txt b/docs/src/drivers/pico_ppmc.txt index ed673e9..6e2e0e0 100644 --- a/docs/src/drivers/pico_ppmc.txt +++ b/docs/src/drivers/pico_ppmc.txt @@ -1,3 +1,6 @@ +:lang: en +:toc: + = Pico PPMC Pico Systems has a family of boards for doing analog servo, stepper, @@ -10,17 +13,18 @@ distinguish between boards, it simply numbers I/O channels (encoders, etc) starting from 0 on the first board. Installing: +---- +loadrt hal_ppmc port_addr=<addr1>[,<addr2>[,<addr3>...]] +---- - loadrt hal_ppmc port_addr=<addr1>[,<addr2>[,<addr3>...]] - -The `port_addr` parameter tells the driver what parallel port(s) to -check. By default, `<addr1>` is 0x0378, and `<addr2>` and following +The 'port_addr' parameter tells the driver what parallel port(s) to +check. By default, '<addr1>' is 0x0378, and '<addr2>' and following are not used. The driver searches the entire address -space of the enhanced parallel port(s) at `port_addr`, looking for +space of the enhanced parallel port(s) at 'port_addr', looking for any board(s) in the PPMC family. It then exports HAL pins for whatever it finds. During loading (or attempted loading) the driver prints some useful debugging messages to the kernel log, which -can be viewed with `dmesg`. +can be viewed with 'dmesg'. Up to 3 parport busses may be used, and each bus may have up to 8 devices on it. @@ -32,11 +36,11 @@ ID. According to the naming conventions the first board should always have an ID of zero. However, this driver sets the ID based on switches on the board, so it may be non-zero even if there is only one board. - - `(All s32 output) ppmc.<port>.encoder.<channel>.count` -- Encoder +* '(All s32 output) ppmc.<port>.encoder.<channel>.count' - Encoder position, in counts. - - `(All s32 output) ppmc.<port>.encoder.<channel>.delta` -- Change in +* '(All s32 output) ppmc.<port>.encoder.<channel>.delta' - Change in counts since last read, in raw encoder count units. - - (All float output) `ppmc.<port>.encoder.<channel>.velocity` -- +* '(All float output) 'ppmc.<port>.encoder.<channel>.velocity' - Velocity scaled in user units per second. On PPMC and USC this is derived from raw encoder counts per servo period, and hence is affected by encoder granularity. On UPC boards with the 8/21/09 and later @@ -45,39 +49,39 @@ on the board, so it may be non-zero even if there is only one board. to the PID HAL component to produce a more stable servo response. This function has to be enabled in the HAL command line that starts the PPMC driver, with the timestamp=0x00 option. - - `(All float output) ppmc.<port>.encoder.<channel>.position` -- +* '(All float output) ppmc.<port>.encoder.<channel>.position' - Encoder position, in user units. - - `(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable` -- +* '(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable' - Connect to axis.#.index-enable for home-to-index. This is a bidirectional HAL signal. Setting it to true causes the encoder hardware to reset the count to zero on the next encoder index pulse. The driver will detect this and set the signal back to false. - - `(PPMC float output) ppmc.<port>.DAC.<channel>.value` -- sends a +* '(PPMC float output) ppmc.<port>.DAC.<channel>.value' - sends a signed value to the 16-bit Digital to Analog Converter on the PPMC DAC16 board commanding the analog output voltage of that DAC channel. - - `(UPC bit input) ppmc.<port>.pwm.<channel>.enable` -- Enables a +* '(UPC bit input) ppmc.<port>.pwm.<channel>.enable' - Enables a PWM generator. - - `(UPC float input) ppmc.<port>.pwm.<channel>.value` -- Value +* '(UPC float input) ppmc.<port>.pwm.<channel>.value' - Value which determines the duty cycle of the PWM waveforms. The - value is divided by `pwm.<channel>.scale`, and if the result is 0.6 + value is divided by 'pwm.<channel>.scale', and if the result is 0.6 the duty cycle will be 60%, and so on. Negative values result in the duty cycle being based on the absolute value, and the direction pin is set to indicate negative. - - `(USC bit input) ppmc.<port>.stepgen.<channel>.enable` -- +* '(USC bit input) ppmc.<port>.stepgen.<channel>.enable' - Enables a step pulse generator. - - `(USC float input) ppmc.<port>.stepgen.<channel>.velocity` -- +* '(USC float input) ppmc.<port>.stepgen.<channel>.velocity' - Value which determines the step frequency. The value is multiplied - by `stepgen.<channel>.scale` , and the result is the frequency in + by 'stepgen.<channel>.scale' , and the result is the frequency in steps per second. Negative values result in the frequency being based on the absolute value, and the direction pin is set to indicate negative. - - `(All bit output) ppmc.<port>.din.<channel>.in` -- State of digital +* '(All bit output) ppmc.<port>.din.<channel>.in' - State of digital input pin, see canonical digital input. - - `(All bit output) ppmc.<port>.din.<channel>.in-not` -- Inverted +* '(All bit output) ppmc.<port>.din.<channel>.in-not' - Inverted state of digital input pin, see canonical digital input. - - `(All bit input) ppmc.<port>.dout.<channel>.out` -- Value to be +* '(All bit input) ppmc.<port>.dout.<channel>.out' - Value to be written to digital output, see canonical digital output. - - `(Option float input) ppmc.<port>.DAC8-<channel>.value` -- Value to +* '(Option float input) ppmc.<port>.DAC8-<channel>.value' - Value to be written to analog output, range from 0 to 255. This sends 8 output bits to J8, which should have a Spindle DAC board connected to it. 0 corresponds to zero Volts, 255 corresponds to 10 @@ -86,7 +90,7 @@ on the board, so it may be non-zero even if there is only one board. (minus when on). You must specify extradac = 0x00 on the HAL command line that loads the PPMC driver to enable this function on the first USC ur UPC board. - - `(Option bit input) ppmc.<port>.dout.<channel>.out` -- Value to be +* '(Option bit input) ppmc.<port>.dout.<channel>.out' - Value to be written to one of the 8 extra digital output pins on J8. You must specify extradout = 0x00 on the HAL command line that loads the ppmc driver to enable this function on the first USC or UPC @@ -96,65 +100,65 @@ on the board, so it may be non-zero even if there is only one board. == Parameters - - `(All float) ppmc.<port>.enc.<channel>.scale` -- The number of +* '(All float) ppmc.<port>.enc.<channel>.scale' - The number of counts / user unit (to convert from counts to units). - - `(UPC float) ppmc.<port>.pwm.<channel-range>.freq` -- The PWM +* '(UPC float) ppmc.<port>.pwm.<channel-range>.freq' - The PWM carrier frequency, in Hz. Applies to a group of four - consecutive PWM generators, as indicated by `<channel-range>`. Minimum + consecutive PWM generators, as indicated by '<channel-range>'. Minimum is 610Hz, maximum is 500KHz. - - `(PPMC float) ppmc.<port>.DAC.<channel>.scale` -- Sets scale +* '(PPMC float) ppmc.<port>.DAC.<channel>.scale' - Sets scale of DAC16 output channel such that an output value equal to the 1/scale - value will produce an output of + or -- value Volts. So, if the scale + value will produce an output of + or - value Volts. So, if the scale parameter is 0.1 and you send a value of 0.5, the output will be 5.0 Volts. - - `(UPC float) ppmc.<port>.pwm.<channel>.scale` -- Scaling for PWM - generator. If `scale` is X, then the duty cycle will be 100% when the - `value` pin is X (or -X). - - `(UPC float) ppmc.<port>.pwm.<channel>.max-dc` -- Maximum duty +* '(UPC float) ppmc.<port>.pwm.<channel>.scale' - Scaling for PWM + generator. If 'scale' is X, then the duty cycle will be 100% when the + 'value' pin is X (or -X). +* '(UPC float) ppmc.<port>.pwm.<channel>.max-dc' - Maximum duty cycle, from 0.0 to 1.0. - - `(UPC float) ppmc.<port>.pwm.<channel>.min-dc` -- Minimum duty +* '(UPC float) ppmc.<port>.pwm.<channel>.min-dc' - Minimum duty cycle, from 0.0 to 1.0. - - `(UPC float) ppmc.<port>.pwm.<channel>.duty-cycle` -- Actual duty +* '(UPC float) ppmc.<port>.pwm.<channel>.duty-cycle' - Actual duty cycle (used mostly for troubleshooting.) - - `(UPC bit) ppmc.<port>.pwm.<channel>.bootstrap` -- If true, the +* '(UPC bit) ppmc.<port>.pwm.<channel>.bootstrap' - If true, the PWM generator will generate a short sequence of pulses of both polarities when E-stop goes false, to charge the bootstrap capacitors used on some MOSFET gate drivers. - - `(USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time` -- Sets +* '(USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time' - Sets minimum time between direction change and step pulse, in units of 100ns. Applies to a group of four consecutive step generators, - as indicated by `<channel-range>`. - - `(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width` -- Sets + as indicated by '<channel-range>'. +* '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width' - Sets width of step pulses, in units of 100ns. Applies to a group - of four consecutive step generators, as indicated by `<channel-range>`. - - `(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min` -- Sets - minimum time between pulses, in units of 100ns. The maximum step rate is - latexmath:[$\frac{1}{ ( 100ns * ( pulse\-width + pulse\-space\-min )) }$]. - Applies to a group of four consecutive step generators, - as indicated by `<channel-range>`. - - `(USC float) ppmc.<port>.stepgen.<channel>.scale` -- Scaling for + of four consecutive step generators, as indicated by '<channel-range>'. +* '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min' - Sets + minimum time between pulses, in units of 100ns. + Applies to a group of four consecutive step generators, as indicated by + '<channel-range>'. The maximum step rate is: + image:images/pico-ppmc-math.png[] +* '(USC float) ppmc.<port>.stepgen.<channel>.scale' - Scaling for step pulse generator. The step frequency in Hz is the - absolute value of `velocity` * `scale`. - - `(USC float) ppmc.<port>.stepgen.<channel>.max-vel` -- The maximum - value for `velocity`. Commands greater than `max-vel` will be clamped. + absolute value of 'velocity' * 'scale'. +* '(USC float) ppmc.<port>.stepgen.<channel>.max-vel' - The maximum + value for 'velocity'. Commands greater than 'max-vel' will be clamped. Also applies to negative values. (The absolute value is clamped.) - - `(USC float) ppmc.<port>.stepgen.<channel>.frequency` -- Actual +* '(USC float) ppmc.<port>.stepgen.<channel>.frequency' - Actual step pulse frequency in Hz (used mostly for troubleshooting.) - - `(Option float) ppmc.<port>.DAC8.<channel>.scale` -- Sets scale +* '(Option float) ppmc.<port>.DAC8.<channel>.scale' - Sets scale of extra DAC output such that an output value equal to scale gives a magnitude of 10.0 V output. (The sign of the output is set by jumpers and/or other digital outputs.) - - `(Option bit) ppmc.<port>.dout.<channel>.invert` -- Inverts a +* '(Option bit) ppmc.<port>.dout.<channel>.invert' - Inverts a digital output, see canonical digital output. - - `(Option bit) ppmc.<port>.dout.<channel>.invert` -- Inverts a +* '(Option bit) ppmc.<port>.dout.<channel>.invert' - Inverts a digital output pin of J8, see canonical digital output. == Functions - - `(All funct) ppmc.<port>.read` -- Reads all inputs (digital inputs +* '(All funct) ppmc.<port>.read' - Reads all inputs (digital inputs and encoder counters) on one port. These reads are organized into blocks of contiguous registers to be read in a block to minimize CPU overhead. - - `(All funct) ppmc.<port>.write` -- Writes all outputs (digital +* '(All funct) ppmc.<port>.write' - Writes all outputs (digital outputs, stepgens, PWMs) on one port. These writes are organized into blocks of contiguous registers to be written in a block to minimize CPU overhead. diff --git a/docs/src/drivers/pico_ppmc_de.txt b/docs/src/drivers/pico_ppmc_de.txt index 07aa740..a43952d 100644 --- a/docs/src/drivers/pico_ppmc_de.txt +++ b/docs/src/drivers/pico_ppmc_de.txt @@ -1,3 +1,6 @@ +:lang: de +:toc: + = Pico PPMC Pico Systems has a family of boards for doing analog servo, stepper, @@ -10,17 +13,18 @@ distinguish between boards, it simply numbers I/O channels (encoders, etc) starting from 0 on the first board. Installing: +---- +loadrt hal_ppmc port_addr=<addr1>[,<addr2>[,<addr3>...]] +---- - loadrt hal_ppmc port_addr=<addr1>[,<addr2>[,<addr3>...]] - -The `port_addr` parameter tells the driver what parallel port(s) to -check. By default, `<addr1>` is 0x0378, and `<addr2>` and following +The 'port_addr' parameter tells the driver what parallel port(s) to +check. By default, '<addr1>' is 0x0378, and '<addr2>' and following are not used. The driver searches the entire address -space of the enhanced parallel port(s) at `port_addr`, looking for +space of the enhanced parallel port(s) at 'port_addr', looking for any board(s) in the PPMC family. It then exports HAL pins for whatever it finds. During loading (or attempted loading) the driver prints some useful debugging messages to the kernel log, which -can be viewed with `dmesg`. +can be viewed with 'dmesg'. Up to 3 parport busses may be used, and each bus may have up to 8 devices on it. @@ -32,11 +36,11 @@ ID. According to the naming conventions the first board should always have an ID of zero. However, this driver sets the ID based on switches on the board, so it may be non-zero even if there is only one board. - - `(All s32 output) ppmc.<port>.encoder.<channel>.count` -- Encoder +* '(All s32 output) ppmc.<port>.encoder.<channel>.count' - Encoder position, in counts. - - `(All s32 output) ppmc.<port>.encoder.<channel>.delta` -- Change in +* '(All s32 output) ppmc.<port>.encoder.<channel>.delta' - Change in counts since last read, in raw encoder count units. - - (All float output) `ppmc.<port>.encoder.<channel>.velocity` -- +* '(All float output) 'ppmc.<port>.encoder.<channel>.velocity' - Velocity scaled in user units per second. On PPMC and USC this is derived from raw encoder counts per servo period, and hence is affected by encoder granularity. On UPC boards with the 8/21/09 and later @@ -45,36 +49,39 @@ on the board, so it may be non-zero even if there is only one board. to the PID HAL component to produce a more stable servo response. This function has to be enabled in the HAL command line that starts the PPMC driver, with the timestamp=0x00 option. - - `(All float output) ppmc.<port>.encoder.<channel>.position` -- +* '(All float output) ppmc.<port>.encoder.<channel>.position' - Encoder position, in user units. - - `(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable` -- +* '(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable' - Connect to axis.#.index-enable for home-to-index. This is a bidirectional HAL signal. Setting it to true causes the encoder hardware to reset the count to zero on the next encoder index pulse. The driver will detect this and set the signal back to false. - - `(UPC bit input) ppmc.<port>.pwm.<channel>.enable` -- Enables a +* '(PPMC float output) ppmc.<port>.DAC.<channel>.value' - sends a + signed value to the 16-bit Digital to Analog Converter on the PPMC DAC16 + board commanding the analog output voltage of that DAC channel. +* '(UPC bit input) ppmc.<port>.pwm.<channel>.enable' - Enables a PWM generator. - - `(UPC float input) ppmc.<port>.pwm.<channel>.value` -- Value +* '(UPC float input) ppmc.<port>.pwm.<channel>.value' - Value which determines the duty cycle of the PWM waveforms. The - value is divided by `pwm.<channel>.scale`, and if the result is 0.6 + value is divided by 'pwm.<channel>.scale', and if the result is 0.6 the duty cycle will be 60%, and so on. Negative values result in the duty cycle being based on the absolute value, and the direction pin is set to indicate negative. - - `(USC bit input) ppmc.<port>.stepgen.<channel>.enable` -- +* '(USC bit input) ppmc.<port>.stepgen.<channel>.enable' - Enables a step pulse generator. - - `(USC float input) ppmc.<port>.stepgen.<channel>.velocity` -- +* '(USC float input) ppmc.<port>.stepgen.<channel>.velocity' - Value which determines the step frequency. The value is multiplied - by `stepgen.<channel>.scale` , and the result is the frequency in + by 'stepgen.<channel>.scale' , and the result is the frequency in steps per second. Negative values result in the frequency being based on the absolute value, and the direction pin is set to indicate negative. - - `(All bit output) ppmc.<port>.in-<channel>` -- State of digital +* '(All bit output) ppmc.<port>.din.<channel>.in' - State of digital input pin, see canonical digital input. - - `(All bit output) ppmc.<port>.in.<channel>-not` -- Inverted +* '(All bit output) ppmc.<port>.din.<channel>.in-not' - Inverted state of digital input pin, see canonical digital input. - - `(All bit input) ppmc.<port>.out-<channel>` -- Value to be - written to digital output, seen canonical digital output. - - `(Option float input) ppmc.<port>.DAC8-<channel>.value` -- Value to +* '(All bit input) ppmc.<port>.dout.<channel>.out' - Value to be + written to digital output, see canonical digital output. +* '(Option float input) ppmc.<port>.DAC8-<channel>.value' - Value to be written to analog output, range from 0 to 255. This sends 8 output bits to J8, which should have a Spindle DAC board connected to it. 0 corresponds to zero Volts, 255 corresponds to 10 @@ -83,73 +90,77 @@ on the board, so it may be non-zero even if there is only one board. (minus when on). You must specify extradac = 0x00 on the HAL command line that loads the PPMC driver to enable this function on the first USC ur UPC board. - - `(Option bit input) ppmc.<port>.dout-<channel>.out` -- Value to be +* '(Option bit input) ppmc.<port>.dout.<channel>.out' - Value to be written to one of the 8 extra digital output pins on J8. You must specify extradout = 0x00 on the HAL command line that loads the ppmc driver to enable this function on the first USC or UPC board. extradac and extradout are mutually exclusive features as they - use the same signal lines for different purposes. + use the same signal lines for different purposes. These output pins + will be enumerated after the standard digital outputs of the board. == Parameters - - `(All float) ppmc.<port>.enc.<channel>.scale` -- The number of +* '(All float) ppmc.<port>.enc.<channel>.scale' - The number of counts / user unit (to convert from counts to units). - - `(UPC float) ppmc.<port>.pwm.<channel-range>.freq` -- The PWM +* '(UPC float) ppmc.<port>.pwm.<channel-range>.freq' - The PWM carrier frequency, in Hz. Applies to a group of four - consecutive PWM generators, as indicated by `<channel-range>`. Minimum + consecutive PWM generators, as indicated by '<channel-range>'. Minimum is 610Hz, maximum is 500KHz. - - `(UPC float) ppmc.<port>.pwm.<channel>.scale` -- Scaling for PWM - generator. If `scale` is X, then the duty cycle will be 100% when the - `value` pin is X (or -X). - - `(UPC float) ppmc.<port>.pwm.<channel>.max-dc` -- Maximum duty +* '(PPMC float) ppmc.<port>.DAC.<channel>.scale' - Sets scale + of DAC16 output channel such that an output value equal to the 1/scale + value will produce an output of + or - value Volts. So, if the scale + parameter is 0.1 and you send a value of 0.5, the output will be 5.0 Volts. +* '(UPC float) ppmc.<port>.pwm.<channel>.scale' - Scaling for PWM + generator. If 'scale' is X, then the duty cycle will be 100% when the + 'value' pin is X (or -X). +* '(UPC float) ppmc.<port>.pwm.<channel>.max-dc' - Maximum duty cycle, from 0.0 to 1.0. - - `(UPC float) ppmc.<port>.pwm.<channel>.min-dc` -- Minimum duty +* '(UPC float) ppmc.<port>.pwm.<channel>.min-dc' - Minimum duty cycle, from 0.0 to 1.0. - - `(UPC float) ppmc.<port>.pwm.<channel>.duty-cycle` -- Actual duty +* '(UPC float) ppmc.<port>.pwm.<channel>.duty-cycle' - Actual duty cycle (used mostly for troubleshooting.) - - `(UPC bit) ppmc.<port>.pwm.<channel>.bootstrap` -- If true, the +* '(UPC bit) ppmc.<port>.pwm.<channel>.bootstrap' - If true, the PWM generator will generate a short sequence of pulses of both polarities when E-stop goes false, to charge the bootstrap capacitors used on some MOSFET gate drivers. - - `(USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time` -- - Sets minimum time between direction change and step pulse, in - units of 100ns. Applies to a group of four consecutive PWM generators, - as indicated by `<channel-range>`. - - `(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width` -- - Sets width of step pulses, in units of 100ns. Applies to a group - of four consecutive PWM generators, as indicated by `<channel-range>`. - - `(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min` - -- Sets minimum time between pulses, in units of 100ns. - The maximum step rate is - latexmath:[$ \frac{1}{ ( 100ns * ( `pulse-width` + `pulse-space-min` )) } $]. - Applies to a group of four consecutive PWM generators, - as indicated by `<channel-range>`. - - `(USC float) ppmc.<port>.stepgen.<channel>.scale` -- Scaling for +* '(USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time' - Sets + minimum time between direction change and step pulse, in + units of 100ns. Applies to a group of four consecutive step generators, + as indicated by '<channel-range>'. +* '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width' - Sets + width of step pulses, in units of 100ns. Applies to a group + of four consecutive step generators, as indicated by '<channel-range>'. +* '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min' - Sets + minimum time between pulses, in units of 100ns. + Applies to a group of four consecutive step generators, as indicated by + '<channel-range>'. The maximum step rate is: + image:images/pico-ppmc-math.png[] +* '(USC float) ppmc.<port>.stepgen.<channel>.scale' - Scaling for step pulse generator. The step frequency in Hz is the - absolute value of `velocity` * `scale`. - - `(USC float) ppmc.<port>.stepgen.<channel>.max-vel` -- The maximum - value for `velocity`. Commands greater than `max-vel` will be clamped. + absolute value of 'velocity' * 'scale'. +* '(USC float) ppmc.<port>.stepgen.<channel>.max-vel' - The maximum + value for 'velocity'. Commands greater than 'max-vel' will be clamped. Also applies to negative values. (The absolute value is clamped.) - - `(USC float) ppmc.<port>.stepgen.<channel>.frequency` -- Actual +* '(USC float) ppmc.<port>.stepgen.<channel>.frequency' - Actual step pulse frequency in Hz (used mostly for troubleshooting.) - - `(Option float) ppmc.<port>.DAC8.<channel>.scale` -- Sets scale +* '(Option float) ppmc.<port>.DAC8.<channel>.scale' - Sets scale of extra DAC output such that an output value equal to scale gives a magnitude of 10.0 V output. (The sign of the output is set by jumpers and/or other digital outputs.) - - `(Option bit) ppmc.<port>.out.<channel>-invert` -- Inverts a +* '(Option bit) ppmc.<port>.dout.<channel>.invert' - Inverts a digital output, see canonical digital output. - - `(Option bit) ppmc.<port>.dout.<channel>-invert` -- Inverts a +* '(Option bit) ppmc.<port>.dout.<channel>.invert' - Inverts a digital output pin of J8, see canonical digital output. == Functions - - `(All funct) ppmc.<port>.read` -- Reads all inputs (digital inputs +* '(All funct) ppmc.<port>.read' - Reads all inputs (digital inputs and encoder counters) on one port. These reads are organized into blocks of contiguous registers to be read in a block to minimize CPU overhead. - - `(All funct) ppmc.<port>.write` -- Writes all outputs (digital +* '(All funct) ppmc.<port>.write' - Writes all outputs (digital outputs, stepgens, PWMs) on one port. - These reads are organized into blocks of contiguous registers to be - read in a block to minimize CPU overhead. + These writes are organized into blocks of contiguous registers to be + written in a block to minimize CPU overhead. diff --git a/docs/src/drivers/pico_ppmc_es.txt b/docs/src/drivers/pico_ppmc_es.txt index 07aa740..c4a3645 100644 --- a/docs/src/drivers/pico_ppmc_es.txt +++ b/docs/src/drivers/pico_ppmc_es.txt @@ -1,3 +1,6 @@ +:lang: es +:toc: + = Pico PPMC Pico Systems has a family of boards for doing analog servo, stepper, @@ -10,17 +13,18 @@ distinguish between boards, it simply numbers I/O channels (encoders, etc) starting from 0 on the first board. Installing: +---- +loadrt hal_ppmc port_addr=<addr1>[,<addr2>[,<addr3>...]] +---- - loadrt hal_ppmc port_addr=<addr1>[,<addr2>[,<addr3>...]] - -The `port_addr` parameter tells the driver what parallel port(s) to -check. By default, `<addr1>` is 0x0378, and `<addr2>` and following +The 'port_addr' parameter tells the driver what parallel port(s) to +check. By default, '<addr1>' is 0x0378, and '<addr2>' and following are not used. The driver searches the entire address -space of the enhanced parallel port(s) at `port_addr`, looking for +space of the enhanced parallel port(s) at 'port_addr', looking for any board(s) in the PPMC family. It then exports HAL pins for whatever it finds. During loading (or attempted loading) the driver prints some useful debugging messages to the kernel log, which -can be viewed with `dmesg`. +can be viewed with 'dmesg'. Up to 3 parport busses may be used, and each bus may have up to 8 devices on it. @@ -32,11 +36,11 @@ ID. According to the naming conventions the first board should always have an ID of zero. However, this driver sets the ID based on switches on the board, so it may be non-zero even if there is only one board. - - `(All s32 output) ppmc.<port>.encoder.<channel>.count` -- Encoder +* '(All s32 output) ppmc.<port>.encoder.<channel>.count' - Encoder position, in counts. - - `(All s32 output) ppmc.<port>.encoder.<channel>.delta` -- Change in +* '(All s32 output) ppmc.<port>.encoder.<channel>.delta' - Change in counts since last read, in raw encoder count units. - - (All float output) `ppmc.<port>.encoder.<channel>.velocity` -- +* '(All float output) 'ppmc.<port>.encoder.<channel>.velocity' - Velocity scaled in user units per second. On PPMC and USC this is derived from raw encoder counts per servo period, and hence is affected by encoder granularity. On UPC boards with the 8/21/09 and later @@ -45,36 +49,39 @@ on the board, so it may be non-zero even if there is only one board. to the PID HAL component to produce a more stable servo response. This function has to be enabled in the HAL command line that starts the PPMC driver, with the timestamp=0x00 option. - - `(All float output) ppmc.<port>.encoder.<channel>.position` -- +* '(All float output) ppmc.<port>.encoder.<channel>.position' - Encoder position, in user units. - - `(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable` -- +* '(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable' - Connect to axis.#.index-enable for home-to-index. This is a bidirectional HAL signal. Setting it to true causes the encoder hardware to reset the count to zero on the next encoder index pulse. The driver will detect this and set the signal back to false. - - `(UPC bit input) ppmc.<port>.pwm.<channel>.enable` -- Enables a +* '(PPMC float output) ppmc.<port>.DAC.<channel>.value' - sends a + signed value to the 16-bit Digital to Analog Converter on the PPMC DAC16 + board commanding the analog output voltage of that DAC channel. +* '(UPC bit input) ppmc.<port>.pwm.<channel>.enable' - Enables a PWM generator. - - `(UPC float input) ppmc.<port>.pwm.<channel>.value` -- Value +* '(UPC float input) ppmc.<port>.pwm.<channel>.value' - Value which determines the duty cycle of the PWM waveforms. The - value is divided by `pwm.<channel>.scale`, and if the result is 0.6 + value is divided by 'pwm.<channel>.scale', and if the result is 0.6 the duty cycle will be 60%, and so on. Negative values result in the duty cycle being based on the absolute value, and the direction pin is set to indicate negative. - - `(USC bit input) ppmc.<port>.stepgen.<channel>.enable` -- +* '(USC bit input) ppmc.<port>.stepgen.<channel>.enable' - Enables a step pulse generator. - - `(USC float input) ppmc.<port>.stepgen.<channel>.velocity` -- +* '(USC float input) ppmc.<port>.stepgen.<channel>.velocity' - Value which determines the step frequency. The value is multiplied - by `stepgen.<channel>.scale` , and the result is the frequency in + by 'stepgen.<channel>.scale' , and the result is the frequency in steps per second. Negative values result in the frequency being based on the absolute val... [truncated message content] |
|
From: John T. <gi...@gi...> - 2011-12-26 17:29:30
|
Docs: markup fixes and latexmath fix Signed-off-by: John Thornton <jth...@gn...> http://git.linuxcnc.org/?p=emc2.git;a=commitdiff;h=107ef49 --- docs/src/examples/images/spindle-math.png | Bin 0 -> 2929 bytes docs/src/examples/spindle.txt | 186 ++++++++++++++++------------- docs/src/examples/spindle_de.txt | 186 ++++++++++++++++------------- docs/src/examples/spindle_es.txt | 186 ++++++++++++++++------------- docs/src/examples/spindle_pl.txt | 186 ++++++++++++++++------------- 5 files changed, 404 insertions(+), 340 deletions(-) diff --git a/docs/src/examples/images/spindle-math.png b/docs/src/examples/images/spindle-math.png new file mode 100644 index 0000000..e8a1b82 Binary files /dev/null and b/docs/src/examples/images/spindle-math.png differ diff --git a/docs/src/examples/spindle.txt b/docs/src/examples/spindle.txt index f32db6d..2deeb07 100644 --- a/docs/src/examples/spindle.txt +++ b/docs/src/examples/spindle.txt @@ -1,3 +1,6 @@ +:lang: en +:toc: + = Spindle Control[[cha:Spindle-Control]] (((Spindle Control))) @@ -10,32 +13,37 @@ you're using a DAC card like the m5i20 to output the control signal: First you need to figure the scale of spindle speed to control signal. For this example the spindle top speed of 5000 RPM is equal to 10 -volts. latexmath:[$ \frac{10 Volts}{5000 RPM} = 0.002 $] so our scale -factor is latexmath:[$ \frac{0.002 Volts}{1 RPM} $] +volts. + +image::images/spindle-math.png[align="center"] We have to add a scale component to the HAL file to scale the motion.spindle-speed-out to the 0 to 10 needed by the VFD if your DAC card does not do scaling. - loadrt scale count=1 - addf scale.0 servo-thread - setp scale.0.gain 0.002 - net spindle-speed-scale motion.spindle-speed-out => scale.0.in - net spindle-speed-DAC scale.0.out => <your DAC pin name> +---- +loadrt scale count=1 +addf scale.0 servo-thread +setp scale.0.gain 0.002 +net spindle-speed-scale motion.spindle-speed-out => scale.0.in +net spindle-speed-DAC scale.0.out => <your DAC pin name> +---- == PWM Spindle Speed (((PWM Spindle Speed))) If your spindle can be controlled by a PWM signal, use the pwmgen component to create the signal: - loadrt pwmgen output_type=0 - addf pwmgen.update servo-thread - addf pwmgen.make-pulses base-thread - net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value - net spindle-on motion.spindle-on => pwmgen.0.enable - net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out - # Set the spindle's top speed in RPM - setp pwmgen.0.scale 1800 +---- +loadrt pwmgen output_type=0 +addf pwmgen.update servo-thread +addf pwmgen.make-pulses base-thread +net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value +net spindle-on motion.spindle-on => pwmgen.0.enable +net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out +# Set the spindle's top speed in RPM +setp pwmgen.0.scale 1800 +---- This assumes that the spindle controller's response to PWM is simple: 0% PWM gives 0 RPM, 10% PWM gives 180 RPM, etc. If there is a minimum @@ -50,21 +58,25 @@ To link these pins to a parallel port pin put something like the following in your .hal file, making sure you pick the pin that is connected to your control device. - net spindle-enable motion.spindle-on => parport.0.pin-14-out +---- +net spindle-enable motion.spindle-on => parport.0.pin-14-out +---- == Spindle Direction (((Spindle Direction))) If you have direction control of your spindle the HAL pins motion.spindle-forward and motion.spindle-reverse are controlled by M3 -and M4. Spindle speed "Sn" must be set to a positive non-zero value for +and M4. Spindle speed 'Sn' must be set to a positive non-zero value for M3/M4 to turn on spindle motion. To link these pins to a parallel port pin, put something like the following in your .hal file making sure you pick the pin that is connected to your control device. - net spindle-fwd motion.spindle-forward => parport.0.pin-16-out - net spindle-rev motion.spindle-reverse => parport.0.pin-17-out +---- +net spindle-fwd motion.spindle-forward => parport.0.pin-16-out +net spindle-rev motion.spindle-reverse => parport.0.pin-17-out +---- == Spindle Soft Start (((Spindle Soft Start))) @@ -87,47 +99,48 @@ to the two HAL components used in the following example. - A "limit2" is a HAL component (floating point) that accepts an input value and provides an output that has been limited to a - max/min range, and *also* limited to not exceed a specified + max/min range, and also limited to not exceed a specified rate of change. - A "near" is a HAL component (floating point) with a binary output that says whether two inputs are approximately equal. More info is available from the documentation for HAL components, -or from the man pages, just enter "man limit2" or "man near". +or from the man pages, just enter 'man limit2' or 'man near'. ********************************************************************* - # load real time a limit2 and a near with names so it is easier to follow - loadrt limit2 names=spindle-ramp - loadrt near names=spindle-at-speed +---- +# load real time a limit2 and a near with names so it is easier to follow +loadrt limit2 names=spindle-ramp +loadrt near names=spindle-at-speed - # add the functions to a thread - addf spindle-ramp servo-thread - addf spindle-at-speed servo-thread +# add the functions to a thread +addf spindle-ramp servo-thread +addf spindle-at-speed servo-thread - # set the parameter for max rate-of-change - # (max spindle accel/decel in units per second) - setp spindle-ramp.maxv 60 +# set the parameter for max rate-of-change +# (max spindle accel/decel in units per second) +setp spindle-ramp.maxv 60 - # hijack the spindle speed out and send it to spindle ramp in - net spindle-cmd <= motion.spindle-speed-out => spindle-ramp.in +# hijack the spindle speed out and send it to spindle ramp in +net spindle-cmd <= motion.spindle-speed-out => spindle-ramp.in - # the output of spindle ramp is sent to the scale in - net spindle-ramped <= spindle-ramp.out => scale.0.in +# the output of spindle ramp is sent to the scale in +net spindle-ramped <= spindle-ramp.out => scale.0.in - # to know when to start the motion we send the near component - # (named spindle-at-speed) to the spindle commanded speed from - # the signal spindle-cmd and the actual spindle speed - # provided your spindle can accelerate at the maxv setting. - net spindle-cmd => spindle-at-speed.in1 - net spindle-ramped => spindle-at-speed.in2 +# to know when to start the motion we send the near component +# (named spindle-at-speed) to the spindle commanded speed from +# the signal spindle-cmd and the actual spindle speed +# provided your spindle can accelerate at the maxv setting. +net spindle-cmd => spindle-at-speed.in1 +net spindle-ramped => spindle-at-speed.in2 - # the output from spindle-at-speed is sent to motion.spindle-at-speed - # and when this is true motion will start - net spindle-ready <= spindle-at-speed.out => motion.spindle-at-speed +# the output from spindle-at-speed is sent to motion.spindle-at-speed +# and when this is true motion will start +net spindle-ready <= spindle-at-speed.out => motion.spindle-at-speed +---- - -= Spindle Feedback[[cha:Spindle-Feedback]] += Spindle Feedback[[spindle-feedback]] (((Spindle Feedback))) @@ -142,41 +155,43 @@ Encoder Index as inputs. Hardware assumptions: - - An encoder is connected to the spindle and puts out 100 pulses per +* An encoder is connected to the spindle and puts out 100 pulses per revolution on phase A - - The encoder A phase is connected to the parallel port pin 10 - - The encoder index pulse is connected to the parallel port pin 11 +* The encoder A phase is connected to the parallel port pin 10 +* The encoder index pulse is connected to the parallel port pin 11 Basic Steps to add the components and configure them: - # add the encoder to HAL and attach it to threads.footnote:[In this - example, we will assume that some encoders have already been issued - to axes/joints 0, 1, and 2. So the next encoder available for us to - attach to the spindle would be number 3. Your situation may differ.] - loadrt encoder num_chan=1 - addf encoder.update-counters base-thread - addf encoder.capture-position servo-thread +---- +# add the encoder to HAL and attach it to threads.footnote:[In this +example, we will assume that some encoders have already been issued +to axes/joints 0, 1, and 2. So the next encoder available for us to +attach to the spindle would be number 3. Your situation may differ.] +loadrt encoder num_chan=1 +addf encoder.update-counters base-thread +addf encoder.capture-position servo-thread - # set the HAL encoder to 100 pulses per revolution. - setp encoder.3.position-scale 100 +# set the HAL encoder to 100 pulses per revolution. +setp encoder.3.position-scale 100 - # set the HAL encoder to non-quadrature simple counting using A only. - setp encoder.3.counter-mode true +# set the HAL encoder to non-quadrature simple counting using A only. +setp encoder.3.counter-mode true - # connect the HAL encoder outputs to EMC2.footnote:[The HAL encoder - index-enable is an exception to the rule in that it behaves - as both an input and an output, see manual for details] - net spindle-position encoder.3.position => motion.spindle-revs - net spindle-velocity encoder.3.velocity => motion.spindle-speed-in - net spindle-index-enable encoder.3.index-enable <=> motion.spindle-index-enable +# connect the HAL encoder outputs to EMC2.footnote:[The HAL encoder +index-enable is an exception to the rule in that it behaves +as both an input and an output, see manual for details] +net spindle-position encoder.3.position => motion.spindle-revs +net spindle-velocity encoder.3.velocity => motion.spindle-speed-in +net spindle-index-enable encoder.3.index-enable <=> motion.spindle-index-enable - # connect the HAL encoder inputs to the real encoder. - net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in - net spindle-phase-b encoder.3.phase-B footnote:[It is because - we selected "non-quadrature simple counting..." above that we - can get away with "quadrature" counting without having any - B quadrature input.] - net spindle-index encoder.3.phase-Z <= parport.0.pin-11-in +# connect the HAL encoder inputs to the real encoder. +net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in +net spindle-phase-b encoder.3.phase-B footnote:[It is because +we selected 'non-quadrature simple counting...' above that we +can get away with 'quadrature' counting without having any +B quadrature input.] +net spindle-index encoder.3.phase-Z <= parport.0.pin-11-in +---- == Spindle At Speed[[sec:Spindle-At-Speed]] @@ -186,7 +201,7 @@ To enable EMC to wait for the spindle to be at speed before executing a series of moves you need to set motion.spindle-at-speed to true when the spindle is at the commanded speed. To do this you need spindle feedback from an encoder. Since the feedback and the commanded speed -are not usually *exactly* the same you need to use the "near" +are not usually 'exactly' the same you need to use the 'near' component to say that the two numbers are close enough. The connections needed are from the spindle @@ -202,20 +217,21 @@ file to enable Spindle At Speed. If you already have near in your HAL file then increase the count and adjust code to suit. Check to make sure the signal names are the same in your HAL file. - # load a "near" component and attach it to a thread - loadrt near - addf near.0 servo-thread - - # connect one input to the commanded spindle speed - net spindle-cmd => near.0.in1 +---- +# load a near component and attach it to a thread +loadrt near +addf near.0 servo-thread - # connect one input to the encoder-measured spindle speed - net spindle-velocity => near.0.in2 +# connect one input to the commanded spindle speed +net spindle-cmd => near.0.in1 - # connect the output to the spindle-at-speed input - net spindle-at-speed motion.spindle-at-speed <= near.0.out +# connect one input to the encoder-measured spindle speed +net spindle-velocity => near.0.in2 - # set the spindle speed inputs to agree if within 1% - setp near.0.scale 1.01 +# connect the output to the spindle-at-speed input +net spindle-at-speed motion.spindle-at-speed <= near.0.out +# set the spindle speed inputs to agree if within 1% +setp near.0.scale 1.01 +---- diff --git a/docs/src/examples/spindle_de.txt b/docs/src/examples/spindle_de.txt index f32db6d..cdc8a43 100644 --- a/docs/src/examples/spindle_de.txt +++ b/docs/src/examples/spindle_de.txt @@ -1,3 +1,6 @@ +:lang: de +:toc: + = Spindle Control[[cha:Spindle-Control]] (((Spindle Control))) @@ -10,32 +13,37 @@ you're using a DAC card like the m5i20 to output the control signal: First you need to figure the scale of spindle speed to control signal. For this example the spindle top speed of 5000 RPM is equal to 10 -volts. latexmath:[$ \frac{10 Volts}{5000 RPM} = 0.002 $] so our scale -factor is latexmath:[$ \frac{0.002 Volts}{1 RPM} $] +volts. + +image::images/spindle-math.png[align="center"] We have to add a scale component to the HAL file to scale the motion.spindle-speed-out to the 0 to 10 needed by the VFD if your DAC card does not do scaling. - loadrt scale count=1 - addf scale.0 servo-thread - setp scale.0.gain 0.002 - net spindle-speed-scale motion.spindle-speed-out => scale.0.in - net spindle-speed-DAC scale.0.out => <your DAC pin name> +---- +loadrt scale count=1 +addf scale.0 servo-thread +setp scale.0.gain 0.002 +net spindle-speed-scale motion.spindle-speed-out => scale.0.in +net spindle-speed-DAC scale.0.out => <your DAC pin name> +---- == PWM Spindle Speed (((PWM Spindle Speed))) If your spindle can be controlled by a PWM signal, use the pwmgen component to create the signal: - loadrt pwmgen output_type=0 - addf pwmgen.update servo-thread - addf pwmgen.make-pulses base-thread - net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value - net spindle-on motion.spindle-on => pwmgen.0.enable - net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out - # Set the spindle's top speed in RPM - setp pwmgen.0.scale 1800 +---- +loadrt pwmgen output_type=0 +addf pwmgen.update servo-thread +addf pwmgen.make-pulses base-thread +net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value +net spindle-on motion.spindle-on => pwmgen.0.enable +net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out +# Set the spindle's top speed in RPM +setp pwmgen.0.scale 1800 +---- This assumes that the spindle controller's response to PWM is simple: 0% PWM gives 0 RPM, 10% PWM gives 180 RPM, etc. If there is a minimum @@ -50,21 +58,25 @@ To link these pins to a parallel port pin put something like the following in your .hal file, making sure you pick the pin that is connected to your control device. - net spindle-enable motion.spindle-on => parport.0.pin-14-out +---- +net spindle-enable motion.spindle-on => parport.0.pin-14-out +---- == Spindle Direction (((Spindle Direction))) If you have direction control of your spindle the HAL pins motion.spindle-forward and motion.spindle-reverse are controlled by M3 -and M4. Spindle speed "Sn" must be set to a positive non-zero value for +and M4. Spindle speed 'Sn' must be set to a positive non-zero value for M3/M4 to turn on spindle motion. To link these pins to a parallel port pin, put something like the following in your .hal file making sure you pick the pin that is connected to your control device. - net spindle-fwd motion.spindle-forward => parport.0.pin-16-out - net spindle-rev motion.spindle-reverse => parport.0.pin-17-out +---- +net spindle-fwd motion.spindle-forward => parport.0.pin-16-out +net spindle-rev motion.spindle-reverse => parport.0.pin-17-out +---- == Spindle Soft Start (((Spindle Soft Start))) @@ -87,47 +99,48 @@ to the two HAL components used in the following example. - A "limit2" is a HAL component (floating point) that accepts an input value and provides an output that has been limited to a - max/min range, and *also* limited to not exceed a specified + max/min range, and also limited to not exceed a specified rate of change. - A "near" is a HAL component (floating point) with a binary output that says whether two inputs are approximately equal. More info is available from the documentation for HAL components, -or from the man pages, just enter "man limit2" or "man near". +or from the man pages, just enter 'man limit2' or 'man near'. ********************************************************************* - # load real time a limit2 and a near with names so it is easier to follow - loadrt limit2 names=spindle-ramp - loadrt near names=spindle-at-speed +---- +# load real time a limit2 and a near with names so it is easier to follow +loadrt limit2 names=spindle-ramp +loadrt near names=spindle-at-speed - # add the functions to a thread - addf spindle-ramp servo-thread - addf spindle-at-speed servo-thread +# add the functions to a thread +addf spindle-ramp servo-thread +addf spindle-at-speed servo-thread - # set the parameter for max rate-of-change - # (max spindle accel/decel in units per second) - setp spindle-ramp.maxv 60 +# set the parameter for max rate-of-change +# (max spindle accel/decel in units per second) +setp spindle-ramp.maxv 60 - # hijack the spindle speed out and send it to spindle ramp in - net spindle-cmd <= motion.spindle-speed-out => spindle-ramp.in +# hijack the spindle speed out and send it to spindle ramp in +net spindle-cmd <= motion.spindle-speed-out => spindle-ramp.in - # the output of spindle ramp is sent to the scale in - net spindle-ramped <= spindle-ramp.out => scale.0.in +# the output of spindle ramp is sent to the scale in +net spindle-ramped <= spindle-ramp.out => scale.0.in - # to know when to start the motion we send the near component - # (named spindle-at-speed) to the spindle commanded speed from - # the signal spindle-cmd and the actual spindle speed - # provided your spindle can accelerate at the maxv setting. - net spindle-cmd => spindle-at-speed.in1 - net spindle-ramped => spindle-at-speed.in2 +# to know when to start the motion we send the near component +# (named spindle-at-speed) to the spindle commanded speed from +# the signal spindle-cmd and the actual spindle speed +# provided your spindle can accelerate at the maxv setting. +net spindle-cmd => spindle-at-speed.in1 +net spindle-ramped => spindle-at-speed.in2 - # the output from spindle-at-speed is sent to motion.spindle-at-speed - # and when this is true motion will start - net spindle-ready <= spindle-at-speed.out => motion.spindle-at-speed +# the output from spindle-at-speed is sent to motion.spindle-at-speed +# and when this is true motion will start +net spindle-ready <= spindle-at-speed.out => motion.spindle-at-speed +---- - -= Spindle Feedback[[cha:Spindle-Feedback]] += Spindle Feedback[[spindle-feedback]] (((Spindle Feedback))) @@ -142,41 +155,43 @@ Encoder Index as inputs. Hardware assumptions: - - An encoder is connected to the spindle and puts out 100 pulses per +* An encoder is connected to the spindle and puts out 100 pulses per revolution on phase A - - The encoder A phase is connected to the parallel port pin 10 - - The encoder index pulse is connected to the parallel port pin 11 +* The encoder A phase is connected to the parallel port pin 10 +* The encoder index pulse is connected to the parallel port pin 11 Basic Steps to add the components and configure them: - # add the encoder to HAL and attach it to threads.footnote:[In this - example, we will assume that some encoders have already been issued - to axes/joints 0, 1, and 2. So the next encoder available for us to - attach to the spindle would be number 3. Your situation may differ.] - loadrt encoder num_chan=1 - addf encoder.update-counters base-thread - addf encoder.capture-position servo-thread +---- +# add the encoder to HAL and attach it to threads.footnote:[In this +example, we will assume that some encoders have already been issued +to axes/joints 0, 1, and 2. So the next encoder available for us to +attach to the spindle would be number 3. Your situation may differ.] +loadrt encoder num_chan=1 +addf encoder.update-counters base-thread +addf encoder.capture-position servo-thread - # set the HAL encoder to 100 pulses per revolution. - setp encoder.3.position-scale 100 +# set the HAL encoder to 100 pulses per revolution. +setp encoder.3.position-scale 100 - # set the HAL encoder to non-quadrature simple counting using A only. - setp encoder.3.counter-mode true +# set the HAL encoder to non-quadrature simple counting using A only. +setp encoder.3.counter-mode true - # connect the HAL encoder outputs to EMC2.footnote:[The HAL encoder - index-enable is an exception to the rule in that it behaves - as both an input and an output, see manual for details] - net spindle-position encoder.3.position => motion.spindle-revs - net spindle-velocity encoder.3.velocity => motion.spindle-speed-in - net spindle-index-enable encoder.3.index-enable <=> motion.spindle-index-enable +# connect the HAL encoder outputs to EMC2.footnote:[The HAL encoder +index-enable is an exception to the rule in that it behaves +as both an input and an output, see manual for details] +net spindle-position encoder.3.position => motion.spindle-revs +net spindle-velocity encoder.3.velocity => motion.spindle-speed-in +net spindle-index-enable encoder.3.index-enable <=> motion.spindle-index-enable - # connect the HAL encoder inputs to the real encoder. - net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in - net spindle-phase-b encoder.3.phase-B footnote:[It is because - we selected "non-quadrature simple counting..." above that we - can get away with "quadrature" counting without having any - B quadrature input.] - net spindle-index encoder.3.phase-Z <= parport.0.pin-11-in +# connect the HAL encoder inputs to the real encoder. +net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in +net spindle-phase-b encoder.3.phase-B footnote:[It is because +we selected 'non-quadrature simple counting...' above that we +can get away with 'quadrature' counting without having any +B quadrature input.] +net spindle-index encoder.3.phase-Z <= parport.0.pin-11-in +---- == Spindle At Speed[[sec:Spindle-At-Speed]] @@ -186,7 +201,7 @@ To enable EMC to wait for the spindle to be at speed before executing a series of moves you need to set motion.spindle-at-speed to true when the spindle is at the commanded speed. To do this you need spindle feedback from an encoder. Since the feedback and the commanded speed -are not usually *exactly* the same you need to use the "near" +are not usually 'exactly' the same you need to use the 'near' component to say that the two numbers are close enough. The connections needed are from the spindle @@ -202,20 +217,21 @@ file to enable Spindle At Speed. If you already have near in your HAL file then increase the count and adjust code to suit. Check to make sure the signal names are the same in your HAL file. - # load a "near" component and attach it to a thread - loadrt near - addf near.0 servo-thread - - # connect one input to the commanded spindle speed - net spindle-cmd => near.0.in1 +---- +# load a near component and attach it to a thread +loadrt near +addf near.0 servo-thread - # connect one input to the encoder-measured spindle speed - net spindle-velocity => near.0.in2 +# connect one input to the commanded spindle speed +net spindle-cmd => near.0.in1 - # connect the output to the spindle-at-speed input - net spindle-at-speed motion.spindle-at-speed <= near.0.out +# connect one input to the encoder-measured spindle speed +net spindle-velocity => near.0.in2 - # set the spindle speed inputs to agree if within 1% - setp near.0.scale 1.01 +# connect the output to the spindle-at-speed input +net spindle-at-speed motion.spindle-at-speed <= near.0.out +# set the spindle speed inputs to agree if within 1% +setp near.0.scale 1.01 +---- diff --git a/docs/src/examples/spindle_es.txt b/docs/src/examples/spindle_es.txt index f32db6d..701a2f7 100644 --- a/docs/src/examples/spindle_es.txt +++ b/docs/src/examples/spindle_es.txt @@ -1,3 +1,6 @@ +:lang: es +:toc: + = Spindle Control[[cha:Spindle-Control]] (((Spindle Control))) @@ -10,32 +13,37 @@ you're using a DAC card like the m5i20 to output the control signal: First you need to figure the scale of spindle speed to control signal. For this example the spindle top speed of 5000 RPM is equal to 10 -volts. latexmath:[$ \frac{10 Volts}{5000 RPM} = 0.002 $] so our scale -factor is latexmath:[$ \frac{0.002 Volts}{1 RPM} $] +volts. + +image::images/spindle-math.png[align="center"] We have to add a scale component to the HAL file to scale the motion.spindle-speed-out to the 0 to 10 needed by the VFD if your DAC card does not do scaling. - loadrt scale count=1 - addf scale.0 servo-thread - setp scale.0.gain 0.002 - net spindle-speed-scale motion.spindle-speed-out => scale.0.in - net spindle-speed-DAC scale.0.out => <your DAC pin name> +---- +loadrt scale count=1 +addf scale.0 servo-thread +setp scale.0.gain 0.002 +net spindle-speed-scale motion.spindle-speed-out => scale.0.in +net spindle-speed-DAC scale.0.out => <your DAC pin name> +---- == PWM Spindle Speed (((PWM Spindle Speed))) If your spindle can be controlled by a PWM signal, use the pwmgen component to create the signal: - loadrt pwmgen output_type=0 - addf pwmgen.update servo-thread - addf pwmgen.make-pulses base-thread - net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value - net spindle-on motion.spindle-on => pwmgen.0.enable - net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out - # Set the spindle's top speed in RPM - setp pwmgen.0.scale 1800 +---- +loadrt pwmgen output_type=0 +addf pwmgen.update servo-thread +addf pwmgen.make-pulses base-thread +net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value +net spindle-on motion.spindle-on => pwmgen.0.enable +net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out +# Set the spindle's top speed in RPM +setp pwmgen.0.scale 1800 +---- This assumes that the spindle controller's response to PWM is simple: 0% PWM gives 0 RPM, 10% PWM gives 180 RPM, etc. If there is a minimum @@ -50,21 +58,25 @@ To link these pins to a parallel port pin put something like the following in your .hal file, making sure you pick the pin that is connected to your control device. - net spindle-enable motion.spindle-on => parport.0.pin-14-out +---- +net spindle-enable motion.spindle-on => parport.0.pin-14-out +---- == Spindle Direction (((Spindle Direction))) If you have direction control of your spindle the HAL pins motion.spindle-forward and motion.spindle-reverse are controlled by M3 -and M4. Spindle speed "Sn" must be set to a positive non-zero value for +and M4. Spindle speed 'Sn' must be set to a positive non-zero value for M3/M4 to turn on spindle motion. To link these pins to a parallel port pin, put something like the following in your .hal file making sure you pick the pin that is connected to your control device. - net spindle-fwd motion.spindle-forward => parport.0.pin-16-out - net spindle-rev motion.spindle-reverse => parport.0.pin-17-out +---- +net spindle-fwd motion.spindle-forward => parport.0.pin-16-out +net spindle-rev motion.spindle-reverse => parport.0.pin-17-out +---- == Spindle Soft Start (((Spindle Soft Start))) @@ -87,47 +99,48 @@ to the two HAL components used in the following example. - A "limit2" is a HAL component (floating point) that accepts an input value and provides an output that has been limited to a - max/min range, and *also* limited to not exceed a specified + max/min range, and also limited to not exceed a specified rate of change. - A "near" is a HAL component (floating point) with a binary output that says whether two inputs are approximately equal. More info is available from the documentation for HAL components, -or from the man pages, just enter "man limit2" or "man near". +or from the man pages, just enter 'man limit2' or 'man near'. ********************************************************************* - # load real time a limit2 and a near with names so it is easier to follow - loadrt limit2 names=spindle-ramp - loadrt near names=spindle-at-speed +---- +# load real time a limit2 and a near with names so it is easier to follow +loadrt limit2 names=spindle-ramp +loadrt near names=spindle-at-speed - # add the functions to a thread - addf spindle-ramp servo-thread - addf spindle-at-speed servo-thread +# add the functions to a thread +addf spindle-ramp servo-thread +addf spindle-at-speed servo-thread - # set the parameter for max rate-of-change - # (max spindle accel/decel in units per second) - setp spindle-ramp.maxv 60 +# set the parameter for max rate-of-change +# (max spindle accel/decel in units per second) +setp spindle-ramp.maxv 60 - # hijack the spindle speed out and send it to spindle ramp in - net spindle-cmd <= motion.spindle-speed-out => spindle-ramp.in +# hijack the spindle speed out and send it to spindle ramp in +net spindle-cmd <= motion.spindle-speed-out => spindle-ramp.in - # the output of spindle ramp is sent to the scale in - net spindle-ramped <= spindle-ramp.out => scale.0.in +# the output of spindle ramp is sent to the scale in +net spindle-ramped <= spindle-ramp.out => scale.0.in - # to know when to start the motion we send the near... [truncated message content] |
|
From: John T. <gi...@gi...> - 2011-12-26 17:29:52
|
Docs: markup fixes and latexmath fix Signed-off-by: John Thornton <jth...@gn...> http://git.linuxcnc.org/?p=emc2.git;a=commitdiff;h=1c9d72c --- docs/src/quickstart/images/step-calc-inch-math.png | Bin 0 -> 5854 bytes docs/src/quickstart/images/step-calc-mm-math.png | Bin 0 -> 6461 bytes docs/src/quickstart/stepper_quickstart.txt | 54 ++++++++++++-------- docs/src/quickstart/stepper_quickstart_de.txt | 54 ++++++++++++-------- docs/src/quickstart/stepper_quickstart_es.txt | 54 ++++++++++++-------- docs/src/quickstart/stepper_quickstart_pl.txt | 54 ++++++++++++-------- 6 files changed, 128 insertions(+), 88 deletions(-) diff --git a/docs/src/quickstart/images/step-calc-inch-math.png b/docs/src/quickstart/images/step-calc-inch-math.png new file mode 100644 index 0000000..64137d2 Binary files /dev/null and b/docs/src/quickstart/images/step-calc-inch-math.png differ diff --git a/docs/src/quickstart/images/step-calc-mm-math.png b/docs/src/quickstart/images/step-calc-mm-math.png new file mode 100644 index 0000000..55b08ac Binary files /dev/null and b/docs/src/quickstart/images/step-calc-mm-math.png differ diff --git a/docs/src/quickstart/stepper_quickstart.txt b/docs/src/quickstart/stepper_quickstart.txt index 95fa802..928b7c4 100644 --- a/docs/src/quickstart/stepper_quickstart.txt +++ b/docs/src/quickstart/stepper_quickstart.txt @@ -11,8 +11,8 @@ installations see the Integrator Manual. The Latency Test determines how late your computer processor is in responding to a request. Some hardware can interrupt the processing which could cause missed steps when running a CNC machine. This is the -first thing you need to do. Follow the instructions in section -(<<sec:Latency-Test>>) to run the latency test. +first thing you need to do. Follow the instructions +<<latency-test,here>> to run the latency test. [[sec:Sherline]] == Sherline @@ -27,7 +27,7 @@ that matches yours and save a copy. (((Xylotex))) If you have a Xylotex you can skip the following sections and go -straight to the Stepper Config Wizard in Section(<<cha:Stepconf-Wizard>>). +straight to the Stepper Config <<stepconf-wizard,Wizard>>. EMC has provided quick setup for the Xylotex machines. == Machine Information @@ -88,21 +88,21 @@ per user unit which is used for SCALE in the .ini file. | | | | | | |============================================================================== -*Steps per revolution* is how many stepper-motor-steps it takes to turn +* 'Steps per revolution' - is how many stepper-motor-steps it takes to turn the stepper motor one revolution. Typical is 200. -*Micro Steps* is how many steps the drive needs +* 'Micro Steps' - is how many steps the drive needs to move the stepper motor one full step. If microstepping is not used, this number will be 1. If microstepping is used the value will depend on the stepper drive hardware. -*Motor Teeth* and *Leadscrew Teeth* is if you have some reduction +* 'Motor Teeth and Leadscrew Teeth' - is if you have some reduction (gears, chain, timing belt, etc.) between the motor and the leadscrew. If not, then set these both to 1. -*Leadscrew Pitch* is how much movement occurs +* 'Leadscrew Pitch' - is how much movement occurs (in user units) in one leadscrew turn. If you're setting up in inches then it is inches per turn. If you're setting up in millimeters then it is millimeters per turn. @@ -110,13 +110,16 @@ If you're setting up in millimeters then it is millimeters per turn. The net result you're looking for is how many CNC-output-steps it takes to move one user unit (inches or mm). -For Example (inches): - - Stepper = 200 steps per revolution - Drive = 10 micro steps per step - Motor Teeth = 20 - Leadscrew Teeth = 40 - Leadscrew Pitch = 0.2000 inches per turn +.Units inches +============================================ +............................................ +Stepper = 200 steps per revolution +Drive = 10 micro steps per step +Motor Teeth = 20 +Leadscrew Teeth = 40 +Leadscrew Pitch = 0.2000 inches per turn +............................................ +============================================ From the above information, the leadscrew moves 0.200 inches per turn. - The motor turns 2.000 times per 1 leadscrew turn. @@ -124,23 +127,27 @@ From the above information, the leadscrew moves 0.200 inches per turn. - The drive needs 2000 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-inch-math.png[align="center"] + +//////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{10 microsteps}{1 motor step} \times \frac{2 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{0.2000 inch} -= \frac{20,000 microsteps}{inch} -] - -Here's another example, in millimeters this time: - -For Example (mm): += \frac{20,000 microsteps}{inch} ] +/////////////////////////////////////////// +.Units mm +============================================ +............................................ Stepper = 200 steps per revolution Drive = 8 micro steps per step Motor Teeth = 30 Leadscrew Teeth = 90 Leadscrew Pitch = 5.00 mm per turn +............................................ +============================================ From the above information: - The leadscrew moves 5.00 mm per turn. @@ -149,13 +156,16 @@ From the above information: - The drive needs 1600 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-mm-math.png[align="center"] + +////////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{8 microsteps}{1 motor step} \times \frac{3 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{5.000 mm} -= \frac{960 microsteps}{mm} -] += \frac{960 microsteps}{mm} ] +///////////////////////////////////////////// // vim: set syntax=asciidoc: diff --git a/docs/src/quickstart/stepper_quickstart_de.txt b/docs/src/quickstart/stepper_quickstart_de.txt index 95fa802..928b7c4 100644 --- a/docs/src/quickstart/stepper_quickstart_de.txt +++ b/docs/src/quickstart/stepper_quickstart_de.txt @@ -11,8 +11,8 @@ installations see the Integrator Manual. The Latency Test determines how late your computer processor is in responding to a request. Some hardware can interrupt the processing which could cause missed steps when running a CNC machine. This is the -first thing you need to do. Follow the instructions in section -(<<sec:Latency-Test>>) to run the latency test. +first thing you need to do. Follow the instructions +<<latency-test,here>> to run the latency test. [[sec:Sherline]] == Sherline @@ -27,7 +27,7 @@ that matches yours and save a copy. (((Xylotex))) If you have a Xylotex you can skip the following sections and go -straight to the Stepper Config Wizard in Section(<<cha:Stepconf-Wizard>>). +straight to the Stepper Config <<stepconf-wizard,Wizard>>. EMC has provided quick setup for the Xylotex machines. == Machine Information @@ -88,21 +88,21 @@ per user unit which is used for SCALE in the .ini file. | | | | | | |============================================================================== -*Steps per revolution* is how many stepper-motor-steps it takes to turn +* 'Steps per revolution' - is how many stepper-motor-steps it takes to turn the stepper motor one revolution. Typical is 200. -*Micro Steps* is how many steps the drive needs +* 'Micro Steps' - is how many steps the drive needs to move the stepper motor one full step. If microstepping is not used, this number will be 1. If microstepping is used the value will depend on the stepper drive hardware. -*Motor Teeth* and *Leadscrew Teeth* is if you have some reduction +* 'Motor Teeth and Leadscrew Teeth' - is if you have some reduction (gears, chain, timing belt, etc.) between the motor and the leadscrew. If not, then set these both to 1. -*Leadscrew Pitch* is how much movement occurs +* 'Leadscrew Pitch' - is how much movement occurs (in user units) in one leadscrew turn. If you're setting up in inches then it is inches per turn. If you're setting up in millimeters then it is millimeters per turn. @@ -110,13 +110,16 @@ If you're setting up in millimeters then it is millimeters per turn. The net result you're looking for is how many CNC-output-steps it takes to move one user unit (inches or mm). -For Example (inches): - - Stepper = 200 steps per revolution - Drive = 10 micro steps per step - Motor Teeth = 20 - Leadscrew Teeth = 40 - Leadscrew Pitch = 0.2000 inches per turn +.Units inches +============================================ +............................................ +Stepper = 200 steps per revolution +Drive = 10 micro steps per step +Motor Teeth = 20 +Leadscrew Teeth = 40 +Leadscrew Pitch = 0.2000 inches per turn +............................................ +============================================ From the above information, the leadscrew moves 0.200 inches per turn. - The motor turns 2.000 times per 1 leadscrew turn. @@ -124,23 +127,27 @@ From the above information, the leadscrew moves 0.200 inches per turn. - The drive needs 2000 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-inch-math.png[align="center"] + +//////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{10 microsteps}{1 motor step} \times \frac{2 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{0.2000 inch} -= \frac{20,000 microsteps}{inch} -] - -Here's another example, in millimeters this time: - -For Example (mm): += \frac{20,000 microsteps}{inch} ] +/////////////////////////////////////////// +.Units mm +============================================ +............................................ Stepper = 200 steps per revolution Drive = 8 micro steps per step Motor Teeth = 30 Leadscrew Teeth = 90 Leadscrew Pitch = 5.00 mm per turn +............................................ +============================================ From the above information: - The leadscrew moves 5.00 mm per turn. @@ -149,13 +156,16 @@ From the above information: - The drive needs 1600 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-mm-math.png[align="center"] + +////////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{8 microsteps}{1 motor step} \times \frac{3 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{5.000 mm} -= \frac{960 microsteps}{mm} -] += \frac{960 microsteps}{mm} ] +///////////////////////////////////////////// // vim: set syntax=asciidoc: diff --git a/docs/src/quickstart/stepper_quickstart_es.txt b/docs/src/quickstart/stepper_quickstart_es.txt index 95fa802..928b7c4 100644 --- a/docs/src/quickstart/stepper_quickstart_es.txt +++ b/docs/src/quickstart/stepper_quickstart_es.txt @@ -11,8 +11,8 @@ installations see the Integrator Manual. The Latency Test determines how late your computer processor is in responding to a request. Some hardware can interrupt the processing which could cause missed steps when running a CNC machine. This is the -first thing you need to do. Follow the instructions in section -(<<sec:Latency-Test>>) to run the latency test. +first thing you need to do. Follow the instructions +<<latency-test,here>> to run the latency test. [[sec:Sherline]] == Sherline @@ -27,7 +27,7 @@ that matches yours and save a copy. (((Xylotex))) If you have a Xylotex you can skip the following sections and go -straight to the Stepper Config Wizard in Section(<<cha:Stepconf-Wizard>>). +straight to the Stepper Config <<stepconf-wizard,Wizard>>. EMC has provided quick setup for the Xylotex machines. == Machine Information @@ -88,21 +88,21 @@ per user unit which is used for SCALE in the .ini file. | | | | | | |============================================================================== -*Steps per revolution* is how many stepper-motor-steps it takes to turn +* 'Steps per revolution' - is how many stepper-motor-steps it takes to turn the stepper motor one revolution. Typical is 200. -*Micro Steps* is how many steps the drive needs +* 'Micro Steps' - is how many steps the drive needs to move the stepper motor one full step. If microstepping is not used, this number will be 1. If microstepping is used the value will depend on the stepper drive hardware. -*Motor Teeth* and *Leadscrew Teeth* is if you have some reduction +* 'Motor Teeth and Leadscrew Teeth' - is if you have some reduction (gears, chain, timing belt, etc.) between the motor and the leadscrew. If not, then set these both to 1. -*Leadscrew Pitch* is how much movement occurs +* 'Leadscrew Pitch' - is how much movement occurs (in user units) in one leadscrew turn. If you're setting up in inches then it is inches per turn. If you're setting up in millimeters then it is millimeters per turn. @@ -110,13 +110,16 @@ If you're setting up in millimeters then it is millimeters per turn. The net result you're looking for is how many CNC-output-steps it takes to move one user unit (inches or mm). -For Example (inches): - - Stepper = 200 steps per revolution - Drive = 10 micro steps per step - Motor Teeth = 20 - Leadscrew Teeth = 40 - Leadscrew Pitch = 0.2000 inches per turn +.Units inches +============================================ +............................................ +Stepper = 200 steps per revolution +Drive = 10 micro steps per step +Motor Teeth = 20 +Leadscrew Teeth = 40 +Leadscrew Pitch = 0.2000 inches per turn +............................................ +============================================ From the above information, the leadscrew moves 0.200 inches per turn. - The motor turns 2.000 times per 1 leadscrew turn. @@ -124,23 +127,27 @@ From the above information, the leadscrew moves 0.200 inches per turn. - The drive needs 2000 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-inch-math.png[align="center"] + +//////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{10 microsteps}{1 motor step} \times \frac{2 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{0.2000 inch} -= \frac{20,000 microsteps}{inch} -] - -Here's another example, in millimeters this time: - -For Example (mm): += \frac{20,000 microsteps}{inch} ] +/////////////////////////////////////////// +.Units mm +============================================ +............................................ Stepper = 200 steps per revolution Drive = 8 micro steps per step Motor Teeth = 30 Leadscrew Teeth = 90 Leadscrew Pitch = 5.00 mm per turn +............................................ +============================================ From the above information: - The leadscrew moves 5.00 mm per turn. @@ -149,13 +156,16 @@ From the above information: - The drive needs 1600 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-mm-math.png[align="center"] + +////////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{8 microsteps}{1 motor step} \times \frac{3 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{5.000 mm} -= \frac{960 microsteps}{mm} -] += \frac{960 microsteps}{mm} ] +///////////////////////////////////////////// // vim: set syntax=asciidoc: diff --git a/docs/src/quickstart/stepper_quickstart_pl.txt b/docs/src/quickstart/stepper_quickstart_pl.txt index 95fa802..928b7c4 100644 --- a/docs/src/quickstart/stepper_quickstart_pl.txt +++ b/docs/src/quickstart/stepper_quickstart_pl.txt @@ -11,8 +11,8 @@ installations see the Integrator Manual. The Latency Test determines how late your computer processor is in responding to a request. Some hardware can interrupt the processing which could cause missed steps when running a CNC machine. This is the -first thing you need to do. Follow the instructions in section -(<<sec:Latency-Test>>) to run the latency test. +first thing you need to do. Follow the instructions +<<latency-test,here>> to run the latency test. [[sec:Sherline]] == Sherline @@ -27,7 +27,7 @@ that matches yours and save a copy. (((Xylotex))) If you have a Xylotex you can skip the following sections and go -straight to the Stepper Config Wizard in Section(<<cha:Stepconf-Wizard>>). +straight to the Stepper Config <<stepconf-wizard,Wizard>>. EMC has provided quick setup for the Xylotex machines. == Machine Information @@ -88,21 +88,21 @@ per user unit which is used for SCALE in the .ini file. | | | | | | |============================================================================== -*Steps per revolution* is how many stepper-motor-steps it takes to turn +* 'Steps per revolution' - is how many stepper-motor-steps it takes to turn the stepper motor one revolution. Typical is 200. -*Micro Steps* is how many steps the drive needs +* 'Micro Steps' - is how many steps the drive needs to move the stepper motor one full step. If microstepping is not used, this number will be 1. If microstepping is used the value will depend on the stepper drive hardware. -*Motor Teeth* and *Leadscrew Teeth* is if you have some reduction +* 'Motor Teeth and Leadscrew Teeth' - is if you have some reduction (gears, chain, timing belt, etc.) between the motor and the leadscrew. If not, then set these both to 1. -*Leadscrew Pitch* is how much movement occurs +* 'Leadscrew Pitch' - is how much movement occurs (in user units) in one leadscrew turn. If you're setting up in inches then it is inches per turn. If you're setting up in millimeters then it is millimeters per turn. @@ -110,13 +110,16 @@ If you're setting up in millimeters then it is millimeters per turn. The net result you're looking for is how many CNC-output-steps it takes to move one user unit (inches or mm). -For Example (inches): - - Stepper = 200 steps per revolution - Drive = 10 micro steps per step - Motor Teeth = 20 - Leadscrew Teeth = 40 - Leadscrew Pitch = 0.2000 inches per turn +.Units inches +============================================ +............................................ +Stepper = 200 steps per revolution +Drive = 10 micro steps per step +Motor Teeth = 20 +Leadscrew Teeth = 40 +Leadscrew Pitch = 0.2000 inches per turn +............................................ +============================================ From the above information, the leadscrew moves 0.200 inches per turn. - The motor turns 2.000 times per 1 leadscrew turn. @@ -124,23 +127,27 @@ From the above information, the leadscrew moves 0.200 inches per turn. - The drive needs 2000 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-inch-math.png[align="center"] + +//////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{10 microsteps}{1 motor step} \times \frac{2 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{0.2000 inch} -= \frac{20,000 microsteps}{inch} -] - -Here's another example, in millimeters this time: - -For Example (mm): += \frac{20,000 microsteps}{inch} ] +/////////////////////////////////////////// +.Units mm +============================================ +............................................ Stepper = 200 steps per revolution Drive = 8 micro steps per step Motor Teeth = 30 Leadscrew Teeth = 90 Leadscrew Pitch = 5.00 mm per turn +............................................ +============================================ From the above information: - The leadscrew moves 5.00 mm per turn. @@ -149,13 +156,16 @@ From the above information: - The drive needs 1600 steps to turn the stepper one revolution. So the scale needed is: +image::images/step-calc-mm-math.png[align="center"] + +////////////////////////////////////////////// latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{8 microsteps}{1 motor step} \times \frac{3 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{5.000 mm} -= \frac{960 microsteps}{mm} -] += \frac{960 microsteps}{mm} ] +///////////////////////////////////////////// // vim: set syntax=asciidoc: |