Emco lathe - c11 breakout + 7i92 help with spindle setup

More
21 Nov 2021 01:16 - 21 Nov 2021 21:05 #227137 by blitz355
Hello All,
I'm struggling in my early journey to learning linuxcnc. I recently purchased an emco lathe conversion with a simple c11 breakout board ( manual here)

I'm not sure the next steps I need to take. Pncconf shows me two connectors, each have an 'unused pwm' signal. I'm guessing I pick the connector 1 item & then two unused inputs for the forward and reverse functions for the vfd. Does it matter which 'pin' I pick?

From all I read, pncconf only gets you so far and you need to dip into HAL hand editing. I watched a few videos but it isn't clear to me what items I need to edit. What is my next step?

So far I have I flashed my mesa board with 7i92_C11Gx2D.bit file successfully, and have been able to get both axes, x and z moving under there own power.
# Generated by PNCconf at Fri Nov 19 20:09:02 2021
# Using LinuxCNC version:  Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again

loadusr -Wn pyvcp pyvcp -c pyvcp [DISPLAY](PYVCP)
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=2 num_pwmgens=2 num_stepgens=3" 
#setp    hm2_7i92.0.pwmgen.pwm_frequency 20000
#setp    hm2_7i92.0.pwmgen.pdm_frequency 6000000
#setp    hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.z,pid.s
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle

addf hm2_7i92.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 abs.spindle              servo-thread
addf lowpass.spindle          servo-thread
addf hm2_7i92.0.write         servo-thread
setp hm2_7i92.0.dpll.01.timer-us -50
setp hm2_7i92.0.stepgen.timer-number 1

# external output signals

# external input signals

#*******************
#  AXIS X JOINT 0
#*******************

setp   pid.x.Pgain     [JOINT_0]P
setp   pid.x.Igain     [JOINT_0]I
setp   pid.x.Dgain     [JOINT_0]D
setp   pid.x.bias      [JOINT_0]BIAS
setp   pid.x.FF0       [JOINT_0]FF0
setp   pid.x.FF1       [JOINT_0]FF1
setp   pid.x.FF2       [JOINT_0]FF2
setp   pid.x.deadband  [JOINT_0]DEADBAND
setp   pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp   pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp   pid.x.maxerror 0.000500

net x-index-enable  <=> pid.x.index-enable
net x-enable        =>  pid.x.enable
net x-pos-cmd       =>  pid.x.command
net x-pos-fb        =>  pid.x.feedback
net x-output        <=  pid.x.output

# Step Gen signals/setup

setp   hm2_7i92.0.stepgen.00.dirsetup        [JOINT_0]DIRSETUP
setp   hm2_7i92.0.stepgen.00.dirhold         [JOINT_0]DIRHOLD
setp   hm2_7i92.0.stepgen.00.steplen         [JOINT_0]STEPLEN
setp   hm2_7i92.0.stepgen.00.stepspace       [JOINT_0]STEPSPACE
setp   hm2_7i92.0.stepgen.00.position-scale  [JOINT_0]STEP_SCALE
setp   hm2_7i92.0.stepgen.00.step_type        0
setp   hm2_7i92.0.stepgen.00.control-type     1
setp   hm2_7i92.0.stepgen.00.maxaccel         [JOINT_0]STEPGEN_MAXACCEL
setp   hm2_7i92.0.stepgen.00.maxvel           [JOINT_0]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net x-pos-cmd    <= joint.0.motor-pos-cmd
net x-vel-cmd    <= joint.0.vel-cmd
net x-output     <= hm2_7i92.0.stepgen.00.velocity-cmd
net x-pos-fb     <= hm2_7i92.0.stepgen.00.position-fb
net x-pos-fb     => joint.0.motor-pos-fb
net x-enable     <= joint.0.amp-enable-out
net x-enable     => hm2_7i92.0.stepgen.00.enable

# ---setup home / limit switch signals---

net x-home-sw     =>  joint.0.home-sw-in
net x-neg-limit     =>  joint.0.neg-lim-sw-in
net x-pos-limit     =>  joint.0.pos-lim-sw-in

#*******************
#  AXIS Z JOINT 1
#*******************

setp   pid.z.Pgain     [JOINT_1]P
setp   pid.z.Igain     [JOINT_1]I
setp   pid.z.Dgain     [JOINT_1]D
setp   pid.z.bias      [JOINT_1]BIAS
setp   pid.z.FF0       [JOINT_1]FF0
setp   pid.z.FF1       [JOINT_1]FF1
setp   pid.z.FF2       [JOINT_1]FF2
setp   pid.z.deadband  [JOINT_1]DEADBAND
setp   pid.z.maxoutput [JOINT_1]MAX_OUTPUT
setp   pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp   pid.z.maxerror 0.000500

net z-index-enable  <=> pid.z.index-enable
net z-enable        =>  pid.z.enable
net z-pos-cmd       =>  pid.z.command
net z-pos-fb        =>  pid.z.feedback
net z-output        <=  pid.z.output

# Step Gen signals/setup

setp   hm2_7i92.0.stepgen.02.dirsetup        [JOINT_1]DIRSETUP
setp   hm2_7i92.0.stepgen.02.dirhold         [JOINT_1]DIRHOLD
setp   hm2_7i92.0.stepgen.02.steplen         [JOINT_1]STEPLEN
setp   hm2_7i92.0.stepgen.02.stepspace       [JOINT_1]STEPSPACE
setp   hm2_7i92.0.stepgen.02.position-scale  [JOINT_1]STEP_SCALE
setp   hm2_7i92.0.stepgen.02.step_type        0
setp   hm2_7i92.0.stepgen.02.control-type     1
setp   hm2_7i92.0.stepgen.02.maxaccel         [JOINT_1]STEPGEN_MAXACCEL
setp   hm2_7i92.0.stepgen.02.maxvel           [JOINT_1]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net z-pos-cmd    <= joint.1.motor-pos-cmd
net z-vel-cmd    <= joint.1.vel-cmd
net z-output     <= hm2_7i92.0.stepgen.02.velocity-cmd
net z-pos-fb     <= hm2_7i92.0.stepgen.02.position-fb
net z-pos-fb     => joint.1.motor-pos-fb
net z-enable     <= joint.1.amp-enable-out
net z-enable     => hm2_7i92.0.stepgen.02.enable

# ---setup home / limit switch signals---

net z-home-sw     =>  joint.1.home-sw-in
net z-neg-limit     =>  joint.1.neg-lim-sw-in
net z-pos-limit     =>  joint.1.pos-lim-sw-in

#*******************
#  SPINDLE
#*******************

setp   pid.s.Pgain     [SPINDLE_0]P
setp   pid.s.Igain     [SPINDLE_0]I
setp   pid.s.Dgain     [SPINDLE_0]D
setp   pid.s.bias      [SPINDLE_0]BIAS
setp   pid.s.FF0       [SPINDLE_0]FF0
setp   pid.s.FF1       [SPINDLE_0]FF1
setp   pid.s.FF2       [SPINDLE_0]FF2
setp   pid.s.deadband  [SPINDLE_0]DEADBAND
setp   pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp   pid.s.error-previous-target true

net spindle-index-enable  <=> pid.s.index-enable
net spindle-enable        =>  pid.s.enable
net spindle-vel-cmd-rpm     => pid.s.command
net spindle-vel-fb-rpm      => pid.s.feedback
net spindle-output        <=  pid.s.output

# ---PWM Generator signals/setup---

setp   hm2_7i92.0.pwmgen.00.output-type 1
setp   hm2_7i92.0.pwmgen.00.scale  [SPINDLE_0]OUTPUT_SCALE


net spindle-vel-cmd-rpm     => hm2_7i92.0.pwmgen.00.value
net spindle-enable      => hm2_7i92.0.pwmgen.00.enable

# ---setup spindle control signals---

net spindle-vel-cmd-rps        <=  spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs    <=  spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm        <=  spindle.0.speed-out
net spindle-vel-cmd-rpm-abs    <=  spindle.0.speed-out-abs
net spindle-enable             <=  spindle.0.on
net spindle-cw                 <=  spindle.0.forward
net spindle-ccw                <=  spindle.0.reverse
net spindle-brake              <=  spindle.0.brake
net spindle-revs               =>  spindle.0.revs
net spindle-at-speed           =>  spindle.0.at-speed
net spindle-vel-fb-rps         =>  spindle.0.speed-in
net spindle-index-enable      <=>  spindle.0.index-enable

# ---Setup spindle at speed signals---

sets spindle-at-speed true


#******************************
# connect miscellaneous signals
#******************************

#  ---HALUI signals---

net axis-select-x  halui.axis.x.select
net jog-x-pos      halui.axis.x.plus
net jog-x-neg      halui.axis.x.minus
net jog-x-analog   halui.axis.x.analog
net x-is-homed     halui.joint.0.is-homed
net axis-select-z  halui.axis.z.select
net jog-z-pos      halui.axis.z.plus
net jog-z-neg      halui.axis.z.minus
net jog-z-analog   halui.axis.z.analog
net z-is-homed     halui.joint.1.is-homed
net jog-selected-pos      halui.axis.selected.plus
net jog-selected-neg      halui.axis.selected.minus
net spindle-manual-cw     halui.spindle.0.forward
net spindle-manual-ccw    halui.spindle.0.reverse
net spindle-manual-stop   halui.spindle.0.stop
net machine-is-on         halui.machine.is-on
net jog-speed             halui.axis.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---

net tool-change-request    <= iocontrol.0.tool-change
net tool-change-confirmed  => iocontrol.0.tool-changed
net tool-number            <= iocontrol.0.tool-prep-number

#  ---ignore tool prepare requests---
net tool-prepare-loopback   iocontrol.0.tool-prepare      =>  iocontrol.0.tool-prepared




Thank you to all willing to help.

Dan

Here is my emco_lathe.hal file:
Last edit: 21 Nov 2021 21:05 by andypugh.

Please Log in or Create an account to join the conversation.

More
21 Nov 2021 17:39 #227208 by andypugh
Do you have the correct firmware flashed on the 7i92?

You need this so that the PWM step/dir outputs etc appear on the correct pins to drive the C11 board.

There are a couple specific firmwares for the C11. You probably want "7i92_C11Gx2.bit"

Please Log in or Create an account to join the conversation.

More
21 Nov 2021 20:52 #227230 by blitz355
Hi Andy,
I had typed that info in my orginal post but must have deleted somehow. I updated my original post. But yes I have:

​​​​​​​So far I have I flashed my mesa board with 7i92_C11Gx2D.bit file successfully, and have been able to get both axes, x and z moving under there own power. So I'm pretty close already, only need a spindle and limit switches before I make chips!

Please Log in or Create an account to join the conversation.

More
21 Nov 2021 21:10 #227232 by andypugh
The spindle control looks like it ought to be working, assuming that the C11 is connected to the same pins as the PWM module.

There is the skeleton of a spindle PID but that seems not to be included in the loop at the moment (which is fine)

If you MDI "M3 S1000" and look at the PWM duty cycle and enable in halshow do you see what you would expect?

Please Log in or Create an account to join the conversation.

More
21 Nov 2021 23:03 #227244 by blitz355
Hello,
I will need to figure out how to do all those things and report back…

When you say “assuming that the C11 is connected to the same pins as the PWM module.” You’re referring to the 0-10v connections on the c11? Or are you referring to the two outputs that control fwd and reverse in the vfd wired to my c11?

Thanks for your support
Dan

Please Log in or Create an account to join the conversation.

More
21 Nov 2021 23:13 #227247 by andypugh

When you say “assuming that the C11 is connected to the same pins as the PWM module.” You’re referring to the 0-10v connections on the c11? Or are you referring to the two outputs that control fwd and reverse in the vfd wired to my c11?

All of the above, really. 

There are specific pins on the D-sub of the C11 that are connected to the filter that makes 0-10V from the PWM input. 

Then there are specific pins on the D-sub of the 7i92 that the PWM comes out of, and which those are depends in the firmware. 

If you start LinuxCNC from the command line then I think you get a pinout listing. That might help. Just use the command "linuxcnc" then proceed as normal. 

You can start Halshow from the menu of many of the GUIs. Which one are you using? 
 

Please Log in or Create an account to join the conversation.

More
22 Nov 2021 03:10 #227267 by blitz355
Ah ok great! I will verify wiring. The previous person who did the conversion had all working for mach3 so it should be wired right

I have it set up to run on gmoccappy

Dan

Please Log in or Create an account to join the conversation.

More
22 Nov 2021 13:36 #227294 by andypugh

I have it set up to run on gmoccappy

In the setup tab Gmoccapy has buttons at the bottom to start the HAL tools: Halshow, Hal Meter and HAL Scope. 
HAL Meter might be the simplest to use as it always shows live values. HalShow needs to have the watch-tab configured to show live values, but shows several pins simultaneously. 
 

Please Log in or Create an account to join the conversation.

More
27 Nov 2021 03:02 - 27 Nov 2021 03:09 #227721 by blitz355
Hi Andy,
I was able to look at this some more tonight.Some developments so far - I was able to 'wire up' a couple more outputs via pncconf and got the spindle fwd and rev functioning. From gmoccapy gui I can start and stop the spindle. However I don't have spindle speed control :(

A couple things first - I was looking at how my vfd was wired to the c11 breakout boards 0-10v terminals. Originally the c11's 0-10v pin was connected to vfd "Ai1" (Analog input 1), and the c11's ground (next to 0-10v) to vfd 10v terminal. That didn't make sense to me so I switched the ground from the c11 to be connected to the ground on the vfd. After the change, no success after a test and adjusting the spindle percentage slider.I did however experience at some points an 'UU' error on the vfd. Research tells me this is under voltage error on the input (odd?)I also decided to put a multi meter across the ground and 0-10v terminals on the c11 bob. Turn the spindle on in gmoccapy, I'm reading around .144vdc regardless of on/off. Pretty sure I should be getting alot more voltage - this leads me to believe the pinouts on the mesa aren't connected to the c11 correctly virtually (more likely) or via hardware (unlikely?).

Now, on the hal meter side. I'll confess, I don't totally understand what parameters I should be monitoring to show fault or function. I snapped a couple pictures of  and posted here.

---
-2 potentially unrelated items to getting the spindle functioning:
1. Image 5 appears when I start linuxcnc for the first time using my profile. I don't recall if it happens immediately or only once I start jogging axes / spindle

2. Unrelated to the spindle I have an x limit /home microswitch and spindle pulse encoder (1 pulse per rev). The x limit is connected to pin 10, and spindle pulse encoder is 15. In the pncconf g540 setup I'm not given the option to select those functions. This is something I'd like a hand on at some point as well. Spindle at this point is more important though! 

Thanks Again!
Last edit: 27 Nov 2021 03:09 by blitz355.

Please Log in or Create an account to join the conversation.

More
27 Nov 2021 21:29 #227777 by andypugh
In the pictures I see that the spindle speed is showing -100.

Try starting the spindle in the other direction.

You probably want to link to the absolute speed output from motion.
( spindle.0.speed-out-abs ) and then switch the VFD direction separately (if you even plan to support reverse rotation)

Please Log in or Create an account to join the conversation.

Time to create page: 0.115 seconds
Powered by Kunena Forum