PnCConf Setup issue with the Spindle

More
10 years 6 months ago #73258 by twender
I recently upgraded to Mesa (6i25 & 7i76) boards from Parallel control on my lathe. Having some trouble understanding my error when starting linuxcnc. Trying to use Analog out to control my spindle (0-10 VDC).

My error is: ./lathe.hal:178: parameter or pin 'hm2_5i25.0.7i76.0.0.spinout-minlim' not found

Error log
Code:
Print file information: RUN_IN_PLACE=no LINUXCNC_DIR= LINUXCNC_BIN_DIR=/usr/bin LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc LINUXCNC_SCRIPT_DIR= LINUXCNC_RTLIB_DIR=/usr/realtime-3.4-9-rtai-686-pae/modules/linuxcnc LINUXCNC_CONFIG_DIR= LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs INIVAR=inivar HALCMD=halcmd LINUXCNC_EMCSH=/usr/bin/wish8.5 LINUXCNC - 2.7.0 Machine configuration directory is '/home/tim/linuxcnc/configs/lathe' Machine configuration file is 'lathe.ini' INIFILE=/home/tim/linuxcnc/configs/lathe/lathe.ini PARAMETER_FILE=linuxcnc.var TASK=milltask HALUI=halui DISPLAY=axis Starting LinuxCNC... Starting LinuxCNC server program: linuxcncsvr Loading Real Time OS, RTAPI, and HAL_LIB modules Starting LinuxCNC IO program: io Starting HAL User Interface program: halui Found file(REL): ./lathe.hal Shutting down and cleaning up LinuxCNC... Running HAL shutdown script Killing task linuxcncsvr, PID=5111 Removing HAL_LIB, RTAPI, and Real Time OS modules Removing NML shared memory segments Debug file information: ./lathe.hal:178: parameter or pin 'hm2_5i25.0.7i76.0.0.spinout-minlim' not found 5111 PID TTY STAT TIME COMMAND Stopping realtime threads Unloading hal components
hal file:
Code:
# Generated by PNCconf at Tue Apr 12 16:29:59 2016 # If you make changes to this file, they will be # overwritten when you run PNCconf again loadrt trivkins loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES loadrt hostmot2 loadrt hm2_pci config=" num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=00xxxx" setp hm2_5i25.0.watchdog.timeout_ns 5000000 loadrt pid names=pid.x,pid.z,pid.s loadrt abs names=abs.spindle loadrt lowpass names=lowpass.spindle loadrt scale names=scale.spindle addf hm2_5i25.0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf pid.x.do-pid-calcs servo-thread addf pid.z.do-pid-calcs servo-thread addf pid.s.do-pid-calcs servo-thread addf scale.spindle servo-thread addf abs.spindle servo-thread addf lowpass.spindle servo-thread addf hm2_5i25.0.write servo-thread # external output signals # --- SPINDLE-CW --- setp hm2_5i25.0.gpio.006.is_output true net spindle-cw hm2_5i25.0.gpio.006.out # --- SPINDLE-CCW --- setp hm2_5i25.0.gpio.007.is_output true net spindle-ccw hm2_5i25.0.gpio.007.out # external input signals # --- HOME-X --- net home-x <= hm2_5i25.0.gpio.017.in # --- HOME-Z --- net home-z <= hm2_5i25.0.gpio.018.in # --- HOME-A --- net home-a <= hm2_5i25.0.gpio.019.in # --- SPINDLE-AT-SPEED --- net spindle-at-speed <= hm2_5i25.0.gpio.020.in #******************* # AXIS X #******************* setp pid.x.Pgain [AXIS_0]P setp pid.x.Igain [AXIS_0]I setp pid.x.Dgain [AXIS_0]D setp pid.x.bias [AXIS_0]BIAS setp pid.x.FF0 [AXIS_0]FF0 setp pid.x.FF1 [AXIS_0]FF1 setp pid.x.FF2 [AXIS_0]FF2 setp pid.x.deadband [AXIS_0]DEADBAND setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT setp pid.x.error-previous-target true setp pid.x.maxerror .0005 net x-index-enable <=> pid.x.index-enable net x-enable => pid.x.enable net x-pos-cmd => pid.x.command net x-vel-cmd => pid.x.command-deriv net x-pos-fb => pid.x.feedback net x-output => pid.x.output # Step Gen signals/setup setp hm2_5i25.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP setp hm2_5i25.0.stepgen.00.dirhold [AXIS_0]DIRHOLD setp hm2_5i25.0.stepgen.00.steplen [AXIS_0]STEPLEN setp hm2_5i25.0.stepgen.00.stepspace [AXIS_0]STEPSPACE setp hm2_5i25.0.stepgen.00.position-scale [AXIS_0]STEP_SCALE setp hm2_5i25.0.stepgen.00.step_type 0 setp hm2_5i25.0.stepgen.00.control-type 1 setp hm2_5i25.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL setp hm2_5i25.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL # ---closedloop stepper signals--- net x-pos-cmd <= axis.0.motor-pos-cmd net x-vel-cmd <= axis.0.joint-vel-cmd net x-output <= hm2_5i25.0.stepgen.00.velocity-cmd net x-pos-fb <= hm2_5i25.0.stepgen.00.position-fb net x-pos-fb => axis.0.motor-pos-fb net x-enable <= axis.0.amp-enable-out net x-enable => hm2_5i25.0.stepgen.00.enable # ---setup home / limit switch signals--- net home-x => axis.0.home-sw-in net x-neg-limit => axis.0.neg-lim-sw-in net x-pos-limit => axis.0.pos-lim-sw-in #******************* # AXIS Z #******************* setp pid.z.Pgain [AXIS_2]P setp pid.z.Igain [AXIS_2]I setp pid.z.Dgain [AXIS_2]D setp pid.z.bias [AXIS_2]BIAS setp pid.z.FF0 [AXIS_2]FF0 setp pid.z.FF1 [AXIS_2]FF1 setp pid.z.FF2 [AXIS_2]FF2 setp pid.z.deadband [AXIS_2]DEADBAND setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT setp pid.z.error-previous-target true setp pid.z.maxerror .0005 net z-index-enable <=> pid.z.index-enable net z-enable => pid.z.enable net z-pos-cmd => pid.z.command net z-vel-cmd => pid.z.command-deriv net z-pos-fb => pid.z.feedback net z-output => pid.z.output # Step Gen signals/setup setp hm2_5i25.0.stepgen.01.dirsetup [AXIS_2]DIRSETUP setp hm2_5i25.0.stepgen.01.dirhold [AXIS_2]DIRHOLD setp hm2_5i25.0.stepgen.01.steplen [AXIS_2]STEPLEN setp hm2_5i25.0.stepgen.01.stepspace [AXIS_2]STEPSPACE setp hm2_5i25.0.stepgen.01.position-scale [AXIS_2]STEP_SCALE setp hm2_5i25.0.stepgen.01.step_type 0 setp hm2_5i25.0.stepgen.01.control-type 1 setp hm2_5i25.0.stepgen.01.maxaccel [AXIS_2]STEPGEN_MAXACCEL setp hm2_5i25.0.stepgen.01.maxvel [AXIS_2]STEPGEN_MAXVEL # ---closedloop stepper signals--- net z-pos-cmd <= axis.2.motor-pos-cmd net z-vel-cmd <= axis.2.joint-vel-cmd net z-output <= hm2_5i25.0.stepgen.01.velocity-cmd net z-pos-fb <= hm2_5i25.0.stepgen.01.position-fb net z-pos-fb => axis.2.motor-pos-fb net z-enable <= axis.2.amp-enable-out net z-enable => hm2_5i25.0.stepgen.01.enable # ---setup home / limit switch signals--- net home-z => axis.2.home-sw-in net z-neg-limit => axis.2.neg-lim-sw-in net z-pos-limit => axis.2.pos-lim-sw-in #******************* # SPINDLE S #******************* setp pid.s.Pgain [SPINDLE_9]P setp pid.s.Igain [SPINDLE_9]I setp pid.s.Dgain [SPINDLE_9]D setp pid.s.bias [SPINDLE_9]BIAS setp pid.s.FF0 [SPINDLE_9]FF0 setp pid.s.FF1 [SPINDLE_9]FF1 setp pid.s.FF2 [SPINDLE_9]FF2 setp pid.s.deadband [SPINDLE_9]DEADBAND setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT setp pid.s.error-previous-target true setp pid.s.maxerror .0005 net spindle-index-enable <=> pid.s.index-enable net spindle-enable => pid.s.enable net spindle-vel-cmd-rpm-abs => pid.s.command net spindle-vel-fb-rpm-abs => pid.s.feedback net spindle-output <= pid.s.output # ---digital potentionmeter output signals/setup--- setp hm2_5i25.0.7i76.0.0.spinout-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i76.0.0.spinout-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT setp hm2_5i25.0.7i76.0.0.spinout-scalemax [SPINDLE_9]OUTPUT_SCALE net spindle-vel-cmd-abs => hm2_5i25.0.7i76.0.0.spinout net machine-is-enabled => hm2_5i25.0.7i76.0.0.spinena net spindle-ccw => hm2_5i25.0.7i76.0.0.spindir # ---Encoder feedback signals/setup--- setp hm2_5i25.0.encoder.00.counter-mode 0 setp hm2_5i25.0.encoder.00.filter 1 setp hm2_5i25.0.encoder.00.index-invert 0 setp hm2_5i25.0.encoder.00.index-mask 0 setp hm2_5i25.0.encoder.00.index-mask-invert 0 setp hm2_5i25.0.encoder.00.scale [SPINDLE_9]ENCODER_SCALE net spindle-revs <= hm2_5i25.0.encoder.00.position net spindle-vel-fb-rps <= hm2_5i25.0.encoder.00.velocity net spindle-index-enable <=> hm2_5i25.0.encoder.00.index-enable # ---setup spindle control signals--- net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs net spindle-vel-cmd-rpm <= motion.spindle-speed-out net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs net spindle-enable <= motion.spindle-on net spindle-cw <= motion.spindle-forward net spindle-ccw <= motion.spindle-reverse net spindle-brake <= motion.spindle-brake net spindle-revs => motion.spindle-revs net spindle-at-speed => motion.spindle-at-speed net spindle-vel-fb-rps => motion.spindle-speed-in net spindle-index-enable <=> motion.spindle-index-enable # Use ACTUAL spindle velocity from spindle encoder # spindle-velocity bounces around so we filter it with lowpass # spindle-velocity is signed so we use absolute component to remove sign # ACTUAL velocity is in RPS not RPM so we scale it. setp scale.spindle.gain 60 setp lowpass.spindle.gain 1.000000 net spindle-vel-fb-rps => scale.spindle.in net spindle-fb-rpm scale.spindle.out => abs.spindle.in net spindle-fb-rpm-abs abs.spindle.out => lowpass.spindle.in net spindle-fb-rpm-abs-filtered lowpass.spindle.out #****************************** # connect miscellaneous signals #****************************** # ---HALUI signals--- net joint-select-a halui.joint.0.select net x-is-homed halui.joint.0.is-homed net jog-x-pos halui.jog.0.plus net jog-x-neg halui.jog.0.minus net jog-x-analog halui.jog.0.analog net joint-select-c halui.joint.2.select net z-is-homed halui.joint.2.is-homed net jog-z-pos halui.jog.2.plus net jog-z-neg halui.jog.2.minus net jog-z-analog halui.jog.2.analog net jog-selected-pos halui.jog.selected.plus net jog-selected-neg halui.jog.selected.minus net spindle-manual-cw halui.spindle.forward net spindle-manual-ccw halui.spindle.reverse net spindle-manual-stop halui.spindle.stop net machine-is-on halui.machine.is-on net jog-speed halui.jog-speed net MDI-mode halui.mode.is-mdi # ---coolant signals--- net coolant-mist <= iocontrol.0.coolant-mist net coolant-flood <= iocontrol.0.coolant-flood # ---probe signal--- net probe-in => motion.probe-input # ---motion control signals--- net in-position <= motion.in-position net machine-is-enabled <= motion.motion-enabled # ---digital in / out signals--- # ---estop signals--- net estop-out <= iocontrol.0.user-enable-out net estop-out => iocontrol.0.emc-enable-in # ---manual tool change signals--- loadusr -W hal_manualtoolchange net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared

ini file
Code:
# Generated by PNCconf at Tue Apr 12 16:29:59 2016 # If you make changes to this file, they will be # overwritten when you run PNCconf again [EMC] MACHINE = lathe DEBUG = 0 [DISPLAY] DISPLAY = axis POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 2.000000 MAX_SPINDLE_OVERRIDE = 1.000000 MIN_SPINDLE_OVERRIDE = 0.500000 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = /home/tim/linuxcnc/nc_files PYVCP = pyvcp-panel.xml INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in LATHE = 1 POSITION_FEEDBACK = ACTUAL DEFAULT_LINEAR_VELOCITY = 0.250000 MAX_LINEAR_VELOCITY = 1.000000 MIN_LINEAR_VELOCITY = 0.010000 DEFAULT_ANGULAR_VELOCITY = 0.250000 MAX_ANGULAR_VELOCITY = 1.000000 MIN_ANGULAR_VELOCITY = 0.010000 EDITOR = gedit GEOMETRY = xyz [FILTER] PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image PROGRAM_EXTENSION = .py Python Script png = image-to-gcode gif = image-to-gcode jpg = image-to-gcode py = python [TASK] TASK = milltask CYCLE_TIME = 0.010 [RS274NGC] PARAMETER_FILE = linuxcnc.var [EMCMOT] EMCMOT = motmod COMM_TIMEOUT = 1.0 COMM_WAIT = 0.010 SERVO_PERIOD = 1000000 [HOSTMOT2] # **** This is for info only **** # DRIVER0=hm2_pci # BOARD0=5i25 [HAL] HALUI = halui HALFILE = lathe.hal HALFILE = custom.hal POSTGUI_HALFILE = postgui_call_list.hal SHUTDOWN = shutdown.hal [HALUI] [TRAJ] AXES = 3 COORDINATES = X Z LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 0.10 MAX_LINEAR_VELOCITY = 0.83 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl #******************** # Axis X #******************** [AXIS_0] TYPE = LINEAR HOME = 0.0 FERROR = 0.5 MIN_FERROR = 0.05 MAX_VELOCITY = 0.766666666667 MAX_ACCELERATION = 50.0 # The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION # If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger. STEPGEN_MAXVEL = 0.96 STEPGEN_MAXACCEL = 62.50 P = 50.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 0.958333333334 # these are in nanoseconds DIRSETUP = 1000 DIRHOLD = 1000 STEPLEN = 1000 STEPSPACE = 1000 STEP_SCALE = 20370.0 MIN_LIMIT = -0.001 MAX_LIMIT = 8.0 HOME_OFFSET = 0.000000 HOME_SEARCH_VEL = -0.050000 HOME_LATCH_VEL = -0.016667 HOME_FINAL_VEL = 0.000000 HOME_USE_INDEX = NO HOME_SEQUENCE = 1 #******************** # Axis Z #******************** [AXIS_2] TYPE = LINEAR HOME = 0.0 FERROR = 0.5 MIN_FERROR = 0.05 MAX_VELOCITY = 0.833333333333 MAX_ACCELERATION = 30.0 # The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION # If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger. STEPGEN_MAXVEL = 1.04 STEPGEN_MAXACCEL = 37.50 P = 50.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 1.04166666667 # these are in nanoseconds DIRSETUP = 1000 DIRHOLD = 1000 STEPLEN = 1000 STEPSPACE = 1000 STEP_SCALE = 20370.0 MIN_LIMIT = -4.0 MAX_LIMIT = 0.001 HOME_OFFSET = 0.000000 HOME_SEARCH_VEL = -0.050000 HOME_LATCH_VEL = -0.016667 HOME_FINAL_VEL = 0.000000 HOME_USE_INDEX = NO HOME_SEQUENCE = 0 #******************** # Spindle #******************** [SPINDLE_9] P = 0.0 I = 0.0 D = 0.0 FF0 = 1.0 FF1 = 0.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 4800.0 ENCODER_SCALE = 1000.0 OUTPUT_SCALE = 4800.0 OUTPUT_MIN_LIMIT = 0.0 OUTPUT_MAX_LIMIT = 4800.0

A solution is good, but understanding is what I am after.
Any guiding help is greatly appreciated!

Please Log in to join the conversation.

More
10 years 6 months ago #73262 by PCW
A couple of possibilities:

1. No field power to the 7I76 (or no 5V)
both yellow LEDS on the top edge of the 7I76 should be illuminated

2. 6I25 has wrong firmware (if it was ordered as a set with the 7I76 it should be correct )
verify/reprogram with mesaflash

Please Log in to join the conversation.

More
10 years 6 months ago #73263 by twender
Thanks. Will check tonight

Please Log in to join the conversation.

More
10 years 6 months ago #73352 by twender
It was my ignorance. No power connected to TB1 (Field Power). I didn't realize you had to have voltage applied to start linuxcnc.
So, Thanks again!
I am still having issue with my spindle in that it won't show signs of life, but I need to take a closer look to ensure I have not done something wrong again... :blush: ...Likely.

On TB4 of the 7i76, I have:
PIN1: 0VDC
PIN2: OUT TO MY SPEED CONTROLLER (Previously working with PWM to a cheap 0-10 VDC board with no feedback)
PIN3: +15VDC
PIN4: NC
PIN5: SPINDLE ENA-
PIN6: SPINDLE ENA+
PIN7: SPINDLE DIR-
PIN8: SPINDLE DIR+

I plan on using the ENA and DIR outputs to control ON/OFF and DIRECTION of my spindle. Is this correct? I think I could also, pick another GPIO on the 7i76 to accomplish the same task. Correct? I am trying to understand behind the curtain, and I hope not to ask too many ignorant questions. But, at this point I am that.
Before Mesa I previously used PWM and a cheap board with no feedback. I have the encoder working within pncconf, but no spindle movement. My axes configuration appears to work fine.

Does a cursory look at my .hal and .ini reveal any obvious issues with regards to spindle control? There may be none, but I have been unable to run the spindle (After power to the field I/O and TB4) and I thought an expert could say "Looks good" or "This may be your problem".

Thanks

Please Log in to join the conversation.

More
10 years 6 months ago #73354 by PCW
Some versions of PnCConf have a hal file error with the spindle signal names.
I would look carefully at how the spindle signal is connected in hal

The ENA and DIR signals have an advantage over other 7I76 outputs in that they are uncommitted switches
so can either pull-up or pull down to any required voltage. The 7I76 output can only pull-up to the common field voltage

Please Log in to join the conversation.

More
10 years 6 months ago #73422 by twender
Running 2.7.4
Finally got the spindle spinning in Pncconf Spindle Open Loop test. But, I still can't run in linuxcnc.
I currently have the spindle configured to Turn ON, CW rotation, and CCW rotation via Outputs on TB5.These worked in PnCConf, but not in linuxcnc. I did not use the connections on the spindle connector because I was not sure how to use them. Any help on understanding the 2 signals from a hookup pov is appreciated (SPINDLE ENA-, SPINDLE ENA+, SPINDLE DIR-, SPINDLE DIR+).

I am hoping my issue at this point relates to the fact that I did not use the spindle connector for Spindle ENA and Spindle DIR.

Here are my latest hal file and ini file:
hal:
Code:
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES loadrt hostmot2 loadrt hm2_pci config=" num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=0xxxxx" setp hm2_5i25.0.watchdog.timeout_ns 5000000 loadrt pid names=pid.x,pid.z,pid.s loadrt abs names=abs.spindle loadrt lowpass names=lowpass.spindle loadrt scale names=scale.spindle loadrt near addf hm2_5i25.0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf pid.x.do-pid-calcs servo-thread addf pid.z.do-pid-calcs servo-thread addf pid.s.do-pid-calcs servo-thread addf scale.spindle servo-thread addf abs.spindle servo-thread addf lowpass.spindle servo-thread addf near.0 servo-thread addf hm2_5i25.0.write servo-thread # external output signals # --- SPINDLE-ON --- net spindle-on hm2_5i25.0.7i76.0.0.output-13 # --- SPINDLE-CW --- net spindle-cw hm2_5i25.0.7i76.0.0.output-14 # --- SPINDLE-CCW --- net spindle-ccw hm2_5i25.0.7i76.0.0.output-15 # external input signals #******************* # AXIS X #******************* setp pid.x.Pgain [AXIS_0]P setp pid.x.Igain [AXIS_0]I setp pid.x.Dgain [AXIS_0]D setp pid.x.bias [AXIS_0]BIAS setp pid.x.FF0 [AXIS_0]FF0 setp pid.x.FF1 [AXIS_0]FF1 setp pid.x.FF2 [AXIS_0]FF2 setp pid.x.deadband [AXIS_0]DEADBAND setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT setp pid.x.error-previous-target true setp pid.x.maxerror .0005 net x-index-enable <=> pid.x.index-enable net x-enable => pid.x.enable net x-pos-cmd => pid.x.command net x-vel-cmd => pid.x.command-deriv net x-pos-fb => pid.x.feedback net x-output => pid.x.output # Step Gen signals/setup setp hm2_5i25.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP setp hm2_5i25.0.stepgen.00.dirhold [AXIS_0]DIRHOLD setp hm2_5i25.0.stepgen.00.steplen [AXIS_0]STEPLEN setp hm2_5i25.0.stepgen.00.stepspace [AXIS_0]STEPSPACE setp hm2_5i25.0.stepgen.00.position-scale [AXIS_0]STEP_SCALE setp hm2_5i25.0.stepgen.00.step_type 0 setp hm2_5i25.0.stepgen.00.control-type 1 setp hm2_5i25.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL setp hm2_5i25.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL # ---closedloop stepper signals--- net x-pos-cmd <= axis.0.motor-pos-cmd net x-vel-cmd <= axis.0.joint-vel-cmd net x-output <= hm2_5i25.0.stepgen.00.velocity-cmd net x-pos-fb <= hm2_5i25.0.stepgen.00.position-fb net x-pos-fb => axis.0.motor-pos-fb net x-enable <= axis.0.amp-enable-out net x-enable => hm2_5i25.0.stepgen.00.enable # ---setup home / limit switch signals--- net x-home-sw => axis.0.home-sw-in net x-neg-limit => axis.0.neg-lim-sw-in net x-pos-limit => axis.0.pos-lim-sw-in #******************* # AXIS Z #******************* setp pid.z.Pgain [AXIS_2]P setp pid.z.Igain [AXIS_2]I setp pid.z.Dgain [AXIS_2]D setp pid.z.bias [AXIS_2]BIAS setp pid.z.FF0 [AXIS_2]FF0 setp pid.z.FF1 [AXIS_2]FF1 setp pid.z.FF2 [AXIS_2]FF2 setp pid.z.deadband [AXIS_2]DEADBAND setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT setp pid.z.error-previous-target true setp pid.z.maxerror .0005 net z-index-enable <=> pid.z.index-enable net z-enable => pid.z.enable net z-pos-cmd => pid.z.command net z-vel-cmd => pid.z.command-deriv net z-pos-fb => pid.z.feedback net z-output => pid.z.output # Step Gen signals/setup setp hm2_5i25.0.stepgen.01.dirsetup [AXIS_2]DIRSETUP setp hm2_5i25.0.stepgen.01.dirhold [AXIS_2]DIRHOLD setp hm2_5i25.0.stepgen.01.steplen [AXIS_2]STEPLEN setp hm2_5i25.0.stepgen.01.stepspace [AXIS_2]STEPSPACE setp hm2_5i25.0.stepgen.01.position-scale [AXIS_2]STEP_SCALE setp hm2_5i25.0.stepgen.01.step_type 0 setp hm2_5i25.0.stepgen.01.control-type 1 setp hm2_5i25.0.stepgen.01.maxaccel [AXIS_2]STEPGEN_MAXACCEL setp hm2_5i25.0.stepgen.01.maxvel [AXIS_2]STEPGEN_MAXVEL # ---closedloop stepper signals--- net z-pos-cmd <= axis.2.motor-pos-cmd net z-vel-cmd <= axis.2.joint-vel-cmd net z-output <= hm2_5i25.0.stepgen.01.velocity-cmd net z-pos-fb <= hm2_5i25.0.stepgen.01.position-fb net z-pos-fb => axis.2.motor-pos-fb net z-enable <= axis.2.amp-enable-out net z-enable => hm2_5i25.0.stepgen.01.enable # ---setup home / limit switch signals--- net z-home-sw => axis.2.home-sw-in net z-neg-limit => axis.2.neg-lim-sw-in net z-pos-limit => axis.2.pos-lim-sw-in #******************* # SPINDLE S #******************* setp pid.s.Pgain [SPINDLE_9]P setp pid.s.Igain [SPINDLE_9]I setp pid.s.Dgain [SPINDLE_9]D setp pid.s.bias [SPINDLE_9]BIAS setp pid.s.FF0 [SPINDLE_9]FF0 setp pid.s.FF1 [SPINDLE_9]FF1 setp pid.s.FF2 [SPINDLE_9]FF2 setp pid.s.deadband [SPINDLE_9]DEADBAND setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT setp pid.s.error-previous-target true setp pid.s.maxerror .0005 net spindle-index-enable <=> pid.s.index-enable net spindle-enable => pid.s.enable net spindle-vel-cmd-rpm-abs => pid.s.command net spindle-vel-fb-rpm-abs => pid.s.feedback net spindle-output <= pid.s.output # ---digital potentionmeter output signals/setup--- setp hm2_5i25.0.7i76.0.0.spinout-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i76.0.0.spinout-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT setp hm2_5i25.0.7i76.0.0.spinout-scalemax [SPINDLE_9]OUTPUT_SCALE net spindle-vel-cmd-abs => hm2_5i25.0.7i76.0.0.spinout net machine-is-enabled => hm2_5i25.0.7i76.0.0.spinena net spindle-ccw => hm2_5i25.0.7i76.0.0.spindir # ---Encoder feedback signals/setup--- setp hm2_5i25.0.encoder.00.counter-mode 0 setp hm2_5i25.0.encoder.00.filter 1 setp hm2_5i25.0.encoder.00.index-invert 0 setp hm2_5i25.0.encoder.00.index-mask 0 setp hm2_5i25.0.encoder.00.index-mask-invert 0 setp hm2_5i25.0.encoder.00.scale [SPINDLE_9]ENCODER_SCALE net spindle-revs <= hm2_5i25.0.encoder.00.position net spindle-vel-fb-rps <= hm2_5i25.0.encoder.00.velocity net spindle-index-enable <=> hm2_5i25.0.encoder.00.index-enable # ---setup spindle control signals--- net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs net spindle-vel-cmd-rpm <= motion.spindle-speed-out net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs net spindle-enable <= motion.spindle-on net spindle-cw <= motion.spindle-forward net spindle-ccw <= motion.spindle-reverse net spindle-brake <= motion.spindle-brake net spindle-revs => motion.spindle-revs net spindle-at-speed => motion.spindle-at-speed net spindle-vel-fb-rps => motion.spindle-speed-in net spindle-index-enable <=> motion.spindle-index-enable # ---Setup spindle at speed signals--- net spindle-vel-cmd-rps => near.0.in1 net spindle-vel-fb-rps => near.0.in2 net spindle-at-speed <= near.0.out setp near.0.scale 1.000000 setp near.0.difference 3.333333 # Use ACTUAL spindle velocity from spindle encoder # spindle-velocity bounces around so we filter it with lowpass # spindle-velocity is signed so we use absolute component to remove sign # ACTUAL velocity is in RPS not RPM so we scale it. setp scale.spindle.gain 60 setp lowpass.spindle.gain 1.100000 net spindle-vel-fb-rps => scale.spindle.in net spindle-fb-rpm scale.spindle.out => abs.spindle.in net spindle-fb-rpm-abs abs.spindle.out => lowpass.spindle.in net spindle-fb-rpm-abs-filtered lowpass.spindle.out #****************************** # connect miscellaneous signals #****************************** # ---HALUI signals--- net joint-select-a halui.joint.0.select net x-is-homed halui.joint.0.is-homed net jog-x-pos halui.jog.0.plus net jog-x-neg halui.jog.0.minus net jog-x-analog halui.jog.0.analog net joint-select-c halui.joint.2.select net z-is-homed halui.joint.2.is-homed net jog-z-pos halui.jog.2.plus net jog-z-neg halui.jog.2.minus net jog-z-analog halui.jog.2.analog net jog-selected-pos halui.jog.selected.plus net jog-selected-neg halui.jog.selected.minus net spindle-manual-cw halui.spindle.forward net spindle-manual-ccw halui.spindle.reverse net spindle-manual-stop halui.spindle.stop net machine-is-on halui.machine.is-on net jog-speed halui.jog-speed net MDI-mode halui.mode.is-mdi # ---coolant signals--- net coolant-mist <= iocontrol.0.coolant-mist net coolant-flood <= iocontrol.0.coolant-flood # ---probe signal--- net probe-in => motion.probe-input # ---motion control signals--- net in-position <= motion.in-position net machine-is-enabled <= motion.motion-enabled # ---digital in / out signals--- # ---estop signals--- net estop-out <= iocontrol.0.user-enable-out net estop-out => iocontrol.0.emc-enable-in # ---manual tool change signals--- loadusr -W hal_manualtoolchange net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared

ini:
Code:
# Generated by PNCconf at Sat Apr 16 09:55:01 2016 # If you make changes to this file, they will be # overwritten when you run PNCconf again [EMC] MACHINE = lathe DEBUG = 0 [DISPLAY] DISPLAY = axis POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 2.000000 MAX_SPINDLE_OVERRIDE = 1.000000 MIN_SPINDLE_OVERRIDE = 0.500000 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = /home/tim/linuxcnc/nc_files PYVCP = pyvcp-panel.xml INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in LATHE = 1 POSITION_FEEDBACK = ACTUAL DEFAULT_LINEAR_VELOCITY = 0.250000 MAX_LINEAR_VELOCITY = 1.000000 MIN_LINEAR_VELOCITY = 0.010000 DEFAULT_ANGULAR_VELOCITY = 0.250000 MAX_ANGULAR_VELOCITY = 1.000000 MIN_ANGULAR_VELOCITY = 0.010000 EDITOR = gedit GEOMETRY = xyz [FILTER] PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image PROGRAM_EXTENSION = .py Python Script png = image-to-gcode gif = image-to-gcode jpg = image-to-gcode py = python [TASK] TASK = milltask CYCLE_TIME = 0.010 [RS274NGC] PARAMETER_FILE = linuxcnc.var [EMCMOT] EMCMOT = motmod COMM_TIMEOUT = 1.0 COMM_WAIT = 0.010 SERVO_PERIOD = 500000 [HOSTMOT2] # **** This is for info only **** # DRIVER0=hm2_pci # BOARD0=5i25 [HAL] HALUI = halui HALFILE = lathe.hal HALFILE = custom.hal POSTGUI_HALFILE = postgui_call_list.hal SHUTDOWN = shutdown.hal [HALUI] [TRAJ] AXES = 3 COORDINATES = X Z LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 0.10 MAX_LINEAR_VELOCITY = 1.00 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl #******************** # Axis X #******************** [AXIS_0] TYPE = LINEAR HOME = 0.0 FERROR = 0.5 MIN_FERROR = 0.05 MAX_VELOCITY = 1.0 MAX_ACCELERATION = 30.0 # The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION # If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger. STEPGEN_MAXVEL = 1.25 STEPGEN_MAXACCEL = 37.50 P = 50.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 1.25 # these are in nanoseconds DIRSETUP = 1000 DIRHOLD = 1000 STEPLEN = 1000 STEPSPACE = 1000 STEP_SCALE = 20370.0 MIN_LIMIT = -0.001 MAX_LIMIT = 8.0 HOME_OFFSET = 0.0 #******************** # Axis Z #******************** [AXIS_2] TYPE = LINEAR HOME = 0.0 FERROR = 0.5 MIN_FERROR = 0.05 MAX_VELOCITY = 1.0 MAX_ACCELERATION = 30.0 # The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION # If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger. STEPGEN_MAXVEL = 1.25 STEPGEN_MAXACCEL = 37.50 P = 50.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 1.25 # these are in nanoseconds DIRSETUP = 1000 DIRHOLD = 1000 STEPLEN = 1000 STEPSPACE = 1000 STEP_SCALE = 20370.0 MIN_LIMIT = -4.0 MAX_LIMIT = 0.001 HOME_OFFSET = 0.0 #******************** # Spindle #******************** [SPINDLE_9] P = 0.0 I = 0.0 D = 0.0 FF0 = 1.0 FF1 = 0.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 4000.0 ENCODER_SCALE = -100.0 OUTPUT_SCALE = 4000.0 OUTPUT_MIN_LIMIT = 0.0 OUTPUT_MAX_LIMIT = 4000.0

Again, Thank you for your help!

Please Log in to join the conversation.

More
10 years 6 months ago #73426 by PCW
The error in PnCConf (this has been fixed in later versions) is this:

net spindle-vel-cmd-abs => hm2_5i25.0.7i76.0.0.spinout

net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs

Note the the actual physical HAL pin is unconnected do to a net name error (the missing rpm in the top line)


The ENA and DIR outputs are simple switches.
so for example if your VFD needs a +24V signal to enable, you would wire the ENA signal like this:

+24V --> ENA+ -->ENA- -->VFD Enable input

if your VFD needed a signal to be grounded to enable you would wire the ENA pins like this:

VFD Enable input --> ENA+ --> ENA- --> GND

Please Log in to join the conversation.

More
10 years 6 months ago #73435 by twender
Your explanation of the switch makes sense now. You indicated a simple switch earlier, but it now makes sense to me. I guess switch means switch. Thank you for your patience.

I am still a bit confused about the spindle error...Not surprising given my history of questions.

I have read the explanation of net in the Basic HAL tutorial, but I don't think I understand well enough to explain what is going on with the net command. Does the net command do the following with the line in question: spindle-vel-cmd-rpm-abs (linuxcnc code signal) is "sent to" the Mesa card analog out.

Are you indicating PnCConf has a error in creating a connection to the intended signal name "spindle-vel-cmd-rpm-abs" since PnCConf creates "spindle-vel-cmd-abs"?
  • If this is the case, I assume I should edit my hal file with the correction...net spindle-vel-cmd-rpm-abs => hm2_5i25.0.7i76.0.0.spinout?
  • If the above is the case, can I add this command to my custom.hal file? Will it assign it correctly since it is the last connection made to the 7i76...spinout?

Please Log in to join the conversation.

More
10 years 6 months ago #73441 by PCW
Yes (your version of) PnCConf has mis-matched net names so the desired connection
from motion.spindle-speed-out-abs to hm2_5i25.0.7i76.0.0.spinout is not made
(Note that net names are completely arbitrary, they are really just a wire or signal names )
so

net blue_wire => hm2_5i25.0.7i76.0.0.spinout
net blue_wire <= motion.spindle-speed-out-abs

will work

but
net blue_wire => hm2_5i25.0.7i76.0.0.spinout
net red_wire <= motion.spindle-speed-out-abs

is legal but does not connect the desired pins

Please Log in to join the conversation.

More
10 years 6 months ago #73442 by twender
I changed the .hal file to reflect "net spindle-vel-cmd-rpm-abs => hm2_5i25.0.7i76.0.0.spinout"
I now have the spindle turning in linuxcnc with manual and MDI controls. I also changed my wiring to utilize the switches on the the spindle connector. Works perfectly! Thanks

I also have an encoder (1000ppr, A,B, with index). It shows positional changes and speed inside of PnCConf (Though it is wrong at this point... I will setup the scale later). But, when I use linuxcnc I show no speed when the spindle runs. I assume there is another wrong signal connection. Is this the case when looking at my above hal file?

Thank you.

Please Log in to join the conversation.

Time to create page: 0.063 seconds
Powered by Kunena Forum