- Posts: 617
- Thank you received: 0
Spinx1 to 7i85
10 years 11 months ago #65960
by OT-CNC
Replied by OT-CNC on topic Spinx1 to 7i85
net spindle-pwm pwmgen.0.pwm paraport.0.pin-nn-out
I'm trying to replace with hm2_5i25.0.pwmgen.00. or something related to hm2. It tells me the pin does not exist. How do I connect properly to net spindle-pwm?
I'm trying to replace with hm2_5i25.0.pwmgen.00. or something related to hm2. It tells me the pin does not exist. How do I connect properly to net spindle-pwm?
Please Log in to join the conversation.
10 years 11 months ago #65971
by OT-CNC
Replied by OT-CNC on topic Spinx1 to 7i85
I'm re-attaching work in progress. I'm stuck with the basics of connecting the cw/ccw and pwm. I'm trying to replace the paraport examples in the file with hm2_5i25 that works.
Code:
# HAL config file for vismach simulation of vertical milling machine
# This file deomstrates closed-loop spindle control in both position and
# Velocity modes.
# see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?SpindleOrient for a diagram
# Note that the connections of the signals to "hardware" are all in the
# sim_vmc.hal file rather than here
# First load 2x pid components. These would normally have to be loaded at
# the same time as the Axis PID components
#loadrt pid num_chan=2
#addf pid.0.do-pid-calcs servo-thread # Velocity
#addf pid.1.do-pid-calcs servo-thread # Position
loadrt orient
addf orient.0 servo-thread
#loadrt mux2 -- This has already been loaded in the sim_vmc.hal
addf mux2.0 servo-thread # chooses which pid output goes to the spindle speed control
#Use this to detect that the spindle is oriented
#in the 2.8 release there will be a pin for this as an output of the orient comp
#and the edge-detector isn't needed
#loadrt near count=1 (loaded in sim_vmc.hal)
loadrt edge
addf near.0 servo-thread
addf edge.0 servo-thread
setp edge.0.both 0
setp edge.0.in-edge 0
setp edge.0.out-width-ns 10000000
net spindle-pos pid.1.feedback orient.0.position
net spindle-vel pid.0.feedback hm2_5i25.0.encoder.03.velocity
#net spindle-vel pid.0.feedback.0.encoder.03.velocity
net spindle-vel-cmd motion.spindle-speed-out pid.0.command
net spindle-vel-pid pid.0.output mux2.0.in0
net spindle-pos pid.1.feedback orient.0.position near.0.in1 hm2_5i25.0.encoder.03.position
#net spindle-pos pid.1.feedback orient.0.position near.0.in1 encoder.03.position
net spindle-pos-cmd orient.0.command pid.1.command near.0.in2
net spindle-angle motion.spindle-orient-angle orient.0.angle
net spindle-pos-pid pid.1.output mux2.0.in1
setp near.0.difference 0.0005
net spindle-in-pos-raw near.0.out edge.0.in #not needed v2.8+, use orient.0.is-oriented
net spindle-in-pos edge.0.out motion.spindle-is-oriented
# this switches modes
net orient-mode motion.spindle-orient orient.0.enable pid.1.enable mux2.0.sel
#net velocity-mode motion.spindle-on pid.0.enable pwmgen.0.enable
net velocity-mode motion.spindle-on pid.0.enable hm2_5i25.0.pwmgen.00.enable
###############################################################################################
#I'm stuck here: net spindle-pwm and net spindle-fwd/rev. I'm trying to replace paraport examples with hm2_5i25
###############################################################################################
# this is simple for the simulated spindle.
#net spindle-cmd mux2.0.out
#for a real spindle run by a VFD
loadrt abs
addf abs.0 servo-thread
net spindle-cmd mux2.0.out abs.0.in
#net spindle-cmd-abs abs.0.out pwmgen.0.value
net spindle-cmd-abs abs.0.out hm2_5i25.0.pwmgen.00.value
#net spindle-pwm pwmgen.0.pwm parport.0.pin-NN-out
#net spindle-pwm hm2_5i25.0.pwmgen.00.enable
# net spindle-fwd abs.0.is-positive parport.0.pin-NN-out
# net spindle-rev abs.0.is-negative parport.0.pin-NN-out
net spindle-cw abs.0.hm2_5i25.0.gpio.002.invert_output 1
net spindle-ccw abs.0.hm2_5i25.0.gpio.002.is_output 1
#setp hm2_5i25.0.encoder.03.velocity
setp hm2_5i25.0.encoder.03.counter-mode 0
setp hm2_5i25.0.encoder.03.filter 1
setp hm2_5i25.0.encoder.03.index-invert 0
setp hm2_5i25.0.encoder.03.index-mask 0
setp hm2_5i25.0.encoder.03.index-mask-invert 0
#setp hm2_5i25.0.encoder.03.scale [SPINDLE]ENCODER_SCALE
#setp hm2_5i25.0.encoder.03.scale [SPINDLE]OUTPUT_MIN_LIMIT
##################################################################################################
#This worked before for cw/ccw, pwm and enable can't figure out how to link that to the above cw/ccw
##################################################################################################
# ---PWM Generator signals/setup from Andy---
# PWM/dir mode and PWM rather than PDM
setp hm2_5i25.0.pwmgen.00.output-type 1
setp hm2_5i25.0.gpio.002.invert_output 1
# spindle speed at 10v output, ie max spindle speed
setp hm2_5i25.0.pwmgen.00.scale 3600
# set the PWM frequency to 5khz
setp hm2_5i25.0.pwmgen.pwm_frequency 5000
# connect the spindle speed command to the pwmgen
#net spindle-speed motion.spindle-speed-out => hm2_5i25.0.pwmgen.00.value
# connect the spindle enable to GPIO 018.
#net spindle-enable motion.spindle-on => hm2_5i25.0.gpio.018.out
net spindle-enable => hm2_5i25.0.gpio.018.out
#the SPINX1 has an enable (active low)
setp hm2_5i25.0.gpio.018.invert_output 1
setp hm2_5i25.0.gpio.018.is_output 1
#net spindle-vel-cmd-rpm => hm2_5i25.0.pwmgen.00.value
#net spindle-enable => hm2_5i25.0.pwmgen.00.enable
#############################################################################################
# Tune the PID from the INI values
setp pid.0.Pgain [SPINDLE]PGAIN_V
setp pid.0.Igain [SPINDLE]IGAIN_V
setp pid.0.Dgain [SPINDLE]DGAIN_V
setp pid.0.FF0 [SPINDLE]FF0_V
setp pid.0.FF1 [SPINDLE]FF1_V
setp pid.1.Pgain [SPINDLE]PGAIN_P
setp pid.1.Igain [SPINDLE]IGAIN_P
setp pid.1.Dgain [SPINDLE]DGAIN_P
setp pid.1.FF0 [SPINDLE]FF0_P
setp pid.1.FF1 [SPINDLE]FF1_P
Please Log in to join the conversation.
10 years 11 months ago #65981
by andypugh
Replied by andypugh on topic Spinx1 to 7i85
Thinking about this...
For closed loop speed control you might need to use the motion.spindle-speed-out-rps pin, because the encoder velocity feedback is in revs per second.
That also means setting up the pwmgen scale to max speed in revs-per-sec, not rpm.
For closed loop speed control you might need to use the motion.spindle-speed-out-rps pin, because the encoder velocity feedback is in revs per second.
That also means setting up the pwmgen scale to max speed in revs-per-sec, not rpm.
Please Log in to join the conversation.
10 years 11 months ago #66019
by OT-CNC
Replied by OT-CNC on topic Spinx1 to 7i85
I changed the pwm scale.
Where exactly do I add the motion.spindle-speed-out-rps and connect it? I'm still not getting the pwm or dir out when I check with the hal meter.
Where exactly do I add the motion.spindle-speed-out-rps and connect it? I'm still not getting the pwm or dir out when I check with the hal meter.
Please Log in to join the conversation.
10 years 11 months ago #66020
by andypugh
Use it instead of motion.spindle-speed-out throughout the file.
Replied by andypugh on topic Spinx1 to 7i85
OT-CNC wrote: Where exactly do I add the motion.spindle-speed-out-rps and connect it?
Use it instead of motion.spindle-speed-out throughout the file.
Please Log in to join the conversation.
10 years 11 months ago #66021
by OT-CNC
Replied by OT-CNC on topic Spinx1 to 7i85
Okay, I will try that now.
Please Log in to join the conversation.
10 years 11 months ago #66030
by OT-CNC
Replied by OT-CNC on topic Spinx1 to 7i85
Still not getting motion. I'm going to clean up the hal and re-attach.
What is working when I check the config, pwm gen values are changing, I can influence them by manually rotating the spindle, M19 R180 changes the status led for the orient mode, spindle-cmd-abs values are the same as pwmgen values.
I'm assuming cw/ccw is working as clicking cw/ccw on the UI initiates the pwm values. the enable led is on as well, just not on the spin x.
I need to re-connect my hm2_5i25.0.gpio.018.out (my enable to the spinx).
What is working when I check the config, pwm gen values are changing, I can influence them by manually rotating the spindle, M19 R180 changes the status led for the orient mode, spindle-cmd-abs values are the same as pwmgen values.
I'm assuming cw/ccw is working as clicking cw/ccw on the UI initiates the pwm values. the enable led is on as well, just not on the spin x.
I need to re-connect my hm2_5i25.0.gpio.018.out (my enable to the spinx).
Please Log in to join the conversation.
10 years 11 months ago #66034
by OT-CNC
Replied by OT-CNC on topic Spinx1 to 7i85
Andy,
I'm sorry to eat up your time. Can you have another look at this? I tried cleaning it up a bit. It loads but no spindle rotation.
I'm having trouble with the net spindle-pwm line and the enable out to the gpio.018 below it.
Thank you.
I'm sorry to eat up your time. Can you have another look at this? I tried cleaning it up a bit. It loads but no spindle rotation.
I'm having trouble with the net spindle-pwm line and the enable out to the gpio.018 below it.
Thank you.
Code:
# HAL config file for vismach simulation of vertical milling machine
# This file deomstrates closed-loop spindle control in both position and
# Velocity modes.
# see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?SpindleOrient for a diagram
# Note that the connections of the signals to "hardware" are all in the
# sim_vmc.hal file rather than here
# First load 2x pid components. These would normally have to be loaded at
# the same time as the Axis PID components
#loadrt pid num_chan=2
#addf pid.0.do-pid-calcs servo-thread # Velocity
#addf pid.1.do-pid-calcs servo-thread # Position
# ---PWM Generator signals/setup from Andy---
# PWM/dir mode and PWM rather than PDM
setp hm2_5i25.0.pwmgen.00.output-type 1
setp hm2_5i25.0.gpio.002.invert_output 1
# spindle speed at 10v output, ie max spindle speed in revs per second
setp hm2_5i25.0.pwmgen.00.scale 216000
# set the PWM frequency to 5khz
setp hm2_5i25.0.pwmgen.pwm_frequency 5000
############ Spindle Encoder###################################################
setp hm2_5i25.0.encoder.03.counter-mode 0
setp hm2_5i25.0.encoder.03.filter 1
setp hm2_5i25.0.encoder.03.index-invert 0
setp hm2_5i25.0.encoder.03.index-mask 0
setp hm2_5i25.0.encoder.03.index-mask-invert 0
#################################################################################
loadrt orient
addf orient.0 servo-thread
#loadrt mux2 -- This has already been loaded in the sim_vmc.hal
addf mux2.0 servo-thread # chooses which pid output goes to the spindle speed control
#Use this to detect that the spindle is oriented
#in the 2.8 release there will be a pin for this as an output of the orient comp
#and the edge-detector isn't needed
#loadrt near count=1 (loaded in sim_vmc.hal)
loadrt edge
addf near.0 servo-thread
addf edge.0 servo-thread
setp edge.0.both 0
setp edge.0.in-edge 0
setp edge.0.out-width-ns 10000000
net spindle-pos pid.1.feedback orient.0.position
net spindle-vel pid.0.feedback hm2_5i25.0.encoder.03.velocity
net spindle-vel-cmd motion.spindle-speed-out-rps pid.0.command
net spindle-vel-pid pid.0.output mux2.0.in0
net spindle-pos pid.1.feedback orient.0.position near.0.in1 hm2_5i25.0.encoder.03.position
net spindle-pos-cmd orient.0.command pid.1.command near.0.in2
net spindle-angle motion.spindle-orient-angle orient.0.angle
net spindle-pos-pid pid.1.output mux2.0.in1
setp near.0.difference 0.0005
net spindle-in-pos-raw near.0.out edge.0.in #not needed v2.8+, use orient.0.is-oriented
net spindle-in-pos edge.0.out motion.spindle-is-oriented
# this switches modes
net orient-mode motion.spindle-orient orient.0.enable pid.1.enable mux2.0.sel
net velocity-mode motion.spindle-on pid.0.enable hm2_5i25.0.pwmgen.00.enable
# this is simple for the simulated spindle.
#net spindle-cmd mux2.0.out
#for a real spindle run by a VFD
loadrt abs
addf abs.0 servo-thread
net spindle-cmd mux2.0.out abs.0.in
net spindle-cmd-abs abs.0.out hm2_5i25.0.pwmgen.00.value
#net spindle-pwm hm2_5i25.0.pwmgen.00.value ###### this section needs looking at and the one below ###
# connect the spindle enable to GPIO 018. #### this does not work #######
net spindle-pwmgen.00.enable => hm2_5i25.0.gpio.018.out
#the SPINX1 has an enable (active low)
setp hm2_5i25.0.gpio.018.invert_output 1
setp hm2_5i25.0.gpio.018.is_output 1
# Tune the PID from the INI values
setp pid.0.Pgain [SPINDLE]PGAIN_V
setp pid.0.Igain [SPINDLE]IGAIN_V
setp pid.0.Dgain [SPINDLE]DGAIN_V
setp pid.0.FF0 [SPINDLE]FF0_V
setp pid.0.FF1 [SPINDLE]FF1_V
setp pid.1.Pgain [SPINDLE]PGAIN_P
setp pid.1.Igain [SPINDLE]IGAIN_P
setp pid.1.Dgain [SPINDLE]DGAIN_P
setp pid.1.FF0 [SPINDLE]FF0_P
setp pid.1.FF1 [SPINDLE]FF1_P
Please Log in to join the conversation.
10 years 11 months ago #66047
by andypugh
<confused> Which Enable LED?
The SPIN1X enable is active-low. You will need to invert the output on that pin.
Replied by andypugh on topic Spinx1 to 7i85
OT-CNC wrote: the enable led is on as well, just not on the spin x.
<confused> Which Enable LED?
The SPIN1X enable is active-low. You will need to invert the output on that pin.
Please Log in to join the conversation.
Time to create page: 0.419 seconds
