Cabling a 7i76e to a Lichuan B2 Servodriver

More
04 Oct 2021 09:26 #222179 by olli.fink
Hello,

I have a mesa 7i76e board and I want to connect it to a Lichuan B2 Servodriver in Step/Dir (Positioning Mode)...as a Spindle.

I connected the pins 1,2,3, and 4 to the Step/Dir Connections of the MesaCard. (like its said in Documentation)
 
but nothing happens if I try to turn the Spindle....
I think I also have to connect the pin 5 to the mesacard to enable the Servodrive.
But what pin on mesacard can I use to connect to pin5  (Servo-on / SON)
 

Thanks a lot for your help

Greetings Olli
 
Attachments:

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

More
04 Oct 2021 11:16 - 04 Oct 2021 11:16 #222188 by aleksamc
When you made configugation of your machine at start, you must saw "Amplifier EN" or so-on. That pin you connect to enable servodrives.
You can add your .hal file to get more answers for your topic
Last edit: 04 Oct 2021 11:16 by aleksamc.

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

More
04 Oct 2021 15:08 - 04 Oct 2021 15:08 #222201 by PCW
For the active low spindle enable, I would use the 7I76E spindle enable output:
7I76E          DRIVE
6 ENA+ --> 5 SERVO-ON
5 ENA- --> 31 COM
Last edit: 04 Oct 2021 15:08 by PCW.

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

More
04 Oct 2021 16:40 #222206 by olli.fink
I will try that ...

Thanks to you
aleksamc and
PCW

Greetings Olli

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

More
04 Oct 2021 18:28 #222212 by olli.fink
I did that cabling like you said PCW ...
I am rather new to LINUXCNC -
I am trying to tell in PNCConf the "SPIN enable" but in in PNCConf the pins habe other number than on card - there is no TB2 TB3 ...
The pins are just numbered up to pin50.
Does anybody habe a pivture of the mapping?

Thanks a lot in advance!

Olli

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

More
04 Oct 2021 18:46 #222213 by PCW
The pin you need to link to spindle on in the hal file is hm2_7i76e.0.7i76.0.0.spinena

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

More
05 Oct 2021 09:00 #222260 by olli.fink
Thanks a lot PCW,

I will try that today in the evening ....

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

More
06 Oct 2021 16:41 #222378 by olli.fink
Hi,
Today I tried to include your command "hm2_7i76e.0.7i76.0.0.spinena "

But it doesnt work ...
I used pncconf and just tried to include your command:

here is my hal:

# Erstellt von PNCconf am Wed Oct 6 18:34:45 2021
# Using LinuxCNC version: 2.8
# Änderungen an dieser Datei werden beim nächsten
# overwritten when you run PNCconf again

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=1 num_pwmgens=0 num_stepgens=5"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle

addf [HMOT](CARD0).read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.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 [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1

# external output signals

# --- SPINDLE-ENABLE ---
net spindle-enable => hm2_7i76e.0.7i76.0.0.spinena

# 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.012700

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 [HMOT](CARD0).stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 <= [HMOT](CARD0).stepgen.00.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).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 Y JOINT 1
#*******************

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

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

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output <= [HMOT](CARD0).stepgen.01.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.01.enable

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

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

#*******************
# AXIS Z JOINT 2
#*******************

setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]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.012700

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 [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.02.enable

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

net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.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
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.s.maxerror 0.012700

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

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.04.dirsetup [SPINDLE_0]DIRSETUP
setp [HMOT](CARD0).stepgen.04.dirhold [SPINDLE_0]DIRHOLD
setp [HMOT](CARD0).stepgen.04.steplen [SPINDLE_0]STEPLEN
setp [HMOT](CARD0).stepgen.04.stepspace [SPINDLE_0]STEPSPACE
setp [HMOT](CARD0).stepgen.04.position-scale [SPINDLE_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.04.step_type 0
setp [HMOT](CARD0).stepgen.04.control-type 1
setp [HMOT](CARD0).stepgen.04.maxaccel [SPINDLE_0]MAX_ACCELERATION
setp [HMOT](CARD0).stepgen.04.maxvel [SPINDLE_0]MAX_VELOCITY

net spindle-enable => [HMOT](CARD0).stepgen.04.enable
net spindle-vel-cmd-rps => [HMOT](CARD0).stepgen.04.velocity-cmd
net spindle-vel-fb-rps <= [HMOT](CARD0).stepgen.04.velocity-fb
# ---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-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.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.2.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---

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

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

More
06 Oct 2021 16:59 #222379 by PCW
When hm2_7i76e.0.7i76.0.0.spinena is true, the ENA+ and ENA- pins on the
7I76E should be connected. You should be able to verify this with halshow and an Ohmmeter

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

More
06 Oct 2021 18:59 #222390 by olli.fink
Hi PCW,

Yes - you did it ...
Now I see that the motor is activated - one step futher!
By the way I really want to thank you for help. I really do appreciate that!!!
Thanks a lot.

But the motor doesn't turn if I try to ...
Tomorrow I will check if I did all the settings in the servodriver right and the cabling:
I connected:
Servodriverside to /i76e
Pulse+ to Step+
Pulse- to Step-
Dir+ to Dir+
Dir- to Dir-

Thanks a lot
Olli

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

Moderators: PCWjmelson
Time to create page: 0.125 seconds
Powered by Kunena Forum