initial setup before srvo tuning
- bevins
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 1937
- Thank you received: 335
18 Feb 2021 13:33 #199250
by bevins
initial setup before srvo tuning was created by bevins
Is it deadband you ned to stop creep? I dont know if this is servo creep but when I
enable the drives the Y axis starts moving until it reaches f-error limit and throws joint following error.
I need to stop this before I can start tuning. Is there a trick? X and Z axis is ok, and the encoder scale is correct also.
enable the drives the Y axis starts moving until it reaches f-error limit and throws joint following error.
I need to stop this before I can start tuning. Is there a trick? X and Z axis is ok, and the encoder scale is correct also.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19488
- Thank you received: 6535
18 Feb 2021 14:16 #199255
by tommylight
Replied by tommylight on topic initial setup before srvo tuning
Only one axis ?
Things to check:
-tacho feedbak/polarity/direction
-encoder wiring/polarity/direction
-pid setup in hal - feedback might be disconnected
-output polarity to drive input
Disconnect the servo input and enable the drive while the input is not connected to anything, it should creep slowly.
When connected and controlled by LinuxCNC, no creep should occur under any circumstances
Deadband will not help.
Things to check:
-tacho feedbak/polarity/direction
-encoder wiring/polarity/direction
-pid setup in hal - feedback might be disconnected
-output polarity to drive input
Disconnect the servo input and enable the drive while the input is not connected to anything, it should creep slowly.
When connected and controlled by LinuxCNC, no creep should occur under any circumstances
Deadband will not help.
Please Log in or Create an account to join the conversation.
- bevins
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 1937
- Thank you received: 335
18 Feb 2021 14:36 - 18 Feb 2021 14:38 #199259
by bevins
Only one axis is doing it,
encoder is connected and working and in the correct direction.
If I disconnect the servo input it doesnt do it.
I'll check hal FB connection but I think the servo would runaway alot faster if this was the case.
I am just trying to get it to a point where I can start tuning the servos. It's annoying....
I'm stumped.
Replied by bevins on topic initial setup before srvo tuning
Only one axis ?
Things to check:
-tacho feedbak/polarity/direction
-encoder wiring/polarity/direction
-pid setup in hal - feedback might be disconnected
-output polarity to drive input
Disconnect the servo input and enable the drive while the input is not connected to anything, it should creep slowly.
When connected and controlled by LinuxCNC, no creep should occur under any circumstances
Deadband will not help.
Only one axis is doing it,
encoder is connected and working and in the correct direction.
If I disconnect the servo input it doesnt do it.
I'll check hal FB connection but I think the servo would runaway alot faster if this was the case.
I am just trying to get it to a point where I can start tuning the servos. It's annoying....
I'm stumped.
Last edit: 18 Feb 2021 14:38 by bevins.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19488
- Thank you received: 6535
18 Feb 2021 15:02 #199261
by tommylight
Also check the drive pots, maybe someone messed with them ...
Replied by tommylight on topic initial setup before srvo tuning
It should, so check the tacho, namely the brushes if they are clean and in good condition.If I disconnect the servo input it doesnt do it.
Also check the drive pots, maybe someone messed with them ...
Please Log in or Create an account to join the conversation.
- Hakan
- Offline
- Platinum Member
Less
More
- Posts: 504
- Thank you received: 157
18 Feb 2021 16:31 #199289
by Hakan
Replied by Hakan on topic initial setup before srvo tuning
That creep thing just happened to me too. It was before feedback was engaged (P=I=D=0).
There is a deadband setting in the servo drive and I set it to 50 mV. The servo drive displayed -30 mV
when it was supposed to be 0 mV. No more creep. I suppose I can remove that setting when feedback
is engaged,
There is a deadband setting in the servo drive and I set it to 50 mV. The servo drive displayed -30 mV
when it was supposed to be 0 mV. No more creep. I suppose I can remove that setting when feedback
is engaged,
Please Log in or Create an account to join the conversation.
- bevins
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 1937
- Thank you received: 335
18 Feb 2021 21:48 #199352
by bevins
Replied by bevins on topic initial setup before srvo tuning
It is creeping with it unplugged.
Please Log in or Create an account to join the conversation.
- PCW
- Away
- Moderator
Less
More
- Posts: 17983
- Thank you received: 4834
18 Feb 2021 22:37 #199355
by PCW
Replied by PCW on topic initial setup before srvo tuning
Sounds like you don't have the drive enable working
the drive should be disabled until LinuxCNC closes the loop
And perhaps more importantly when LinuxCNC detects a problem
like a following error or a watchdog bite
Normally you dont want any analog deadband
the drive should be disabled until LinuxCNC closes the loop
And perhaps more importantly when LinuxCNC detects a problem
like a following error or a watchdog bite
Normally you dont want any analog deadband
Please Log in or Create an account to join the conversation.
- Michael
- Offline
- Platinum Member
Less
More
- Posts: 335
- Thank you received: 59
19 Feb 2021 01:33 #199364
by Michael
Replied by Michael on topic initial setup before srvo tuning
What drives and mode of operation? Have you tuned the drive yet?
Please Log in or Create an account to join the conversation.
- Hakan
- Offline
- Platinum Member
Less
More
- Posts: 504
- Thank you received: 157
19 Feb 2021 07:09 #199375
by Hakan
Replied by Hakan on topic initial setup before srvo tuning
In my case it is well understood why it happened. It was the very first test with the servo
connected to linuxcnc and I just wanted to test that it at all reacts to commands without
needing to worry about reactions from the feedback system. Already here the thought might be wrong.
The encoders are connected, but P,I and D are all set to zero. So no feedback used.
Instead FF1 has got the right value, feed forward velocity value and we all know how to calculate that value.
When hitting the "machine on" button, servo enable goes high and the 7i83 outputs 0.0 V as measured by the dmm.
It is just that the driver has a small 30 mV offset in the input so it takes it as 30 mV input and starts to move slowly.
No feedback is engaged in linuxcnc so nothing will tell it to stop moving. And there we have the creep.
What I did was to set an analog deadband which stopped the creep. I could verify that the servo moved and
that it went in the wrong direction so I changed that. After that I started to tune the servo, gave P a value
and by that the analog deadband value I had set in the servo drive wasn't needed (or wanted) so was removed.
Instead an offset value could be set to compensate for that 30 mV reading. Kind of stupid, it would be better if it actually
understood that 0.0V actually is 0.0V.
tldr; Can/will happen when no feedback is engaged and the servo drive doesn't read exactly 0V when 0V is output
connected to linuxcnc and I just wanted to test that it at all reacts to commands without
needing to worry about reactions from the feedback system. Already here the thought might be wrong.
The encoders are connected, but P,I and D are all set to zero. So no feedback used.
Instead FF1 has got the right value, feed forward velocity value and we all know how to calculate that value.
When hitting the "machine on" button, servo enable goes high and the 7i83 outputs 0.0 V as measured by the dmm.
It is just that the driver has a small 30 mV offset in the input so it takes it as 30 mV input and starts to move slowly.
No feedback is engaged in linuxcnc so nothing will tell it to stop moving. And there we have the creep.
What I did was to set an analog deadband which stopped the creep. I could verify that the servo moved and
that it went in the wrong direction so I changed that. After that I started to tune the servo, gave P a value
and by that the analog deadband value I had set in the servo drive wasn't needed (or wanted) so was removed.
Instead an offset value could be set to compensate for that 30 mV reading. Kind of stupid, it would be better if it actually
understood that 0.0V actually is 0.0V.
tldr; Can/will happen when no feedback is engaged and the servo drive doesn't read exactly 0V when 0V is output
Please Log in or Create an account to join the conversation.
- bevins
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 1937
- Thank you received: 335
19 Feb 2021 12:17 - 19 Feb 2021 12:18 #199409
by bevins
I will check if the drive is enabled. I am pretty sure it is. But I can check. It is a retrofit so I am just closing one contact that sends 0v to all three drives on the enable pin. The two other axis seems ok. But willcheck further today.
INI
HAL
Replied by bevins on topic initial setup before srvo tuning
Sounds like you don't have the drive enable working
the drive should be disabled until LinuxCNC closes the loop
And perhaps more importantly when LinuxCNC detects a problem
like a following error or a watchdog bite
Normally you dont want any analog deadband
I will check if the drive is enabled. I am pretty sure it is. But I can check. It is a retrofit so I am just closing one contact that sends 0v to all three drives on the enable pin. The two other axis seems ok. But willcheck further today.
INI
Warning: Spoiler!
# Generated by PNCconf at Tue Jan 19 17:48:04 2021
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = rover20
DEBUG = 0
VERSION = 1.1
[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/ray/linuxcnc/nc_files
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.250000
MAX_LINEAR_VELOCITY = 2.000000
MIN_LINEAR_VELOCITY = 0.016670
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
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
SERVO_PERIOD = 1000000
[HMOT]
# **** This is for info only ****
CARD0=hm2_7i92.0
[HAL]
HALUI = halui
HALFILE = rover20.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.10
MAX_LINEAR_VELOCITY = 1.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -0.001
MAX_LIMIT = 8.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 2.0
MIN_FERROR = 0.05
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 30.0
P = 5.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 0.5
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = 30000.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.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_Y]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -0.001
MAX_LIMIT = 8.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 2
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
P = 10.0
I = 0.8
D = 0.0
FF0 = 0.0
FF1 = .25
FF2 = 0.0008
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = 56000.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.001
MAX_LIMIT = 36.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 = 2
#******************************************
#******************************************
[AXIS_Z]
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
MIN_LIMIT = -4.0
MAX_LIMIT = 0.001
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 2
MIN_FERROR = 0.05
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
P = 5.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.0
ENCODER_SCALE = 20000.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.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_0]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 2000
HAL
Warning: Spoiler!
# Generated by PNCconf at Tue Jan 19 17:48:04 2021
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# 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="192.168.1.121" config=" num_encoders=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=000000"
setp hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
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.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs 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
# --- HOME-X ---
net home-x <= hm2_7i92.0.7i77.0.0.input-01
# --- HOME-Y ---
net home-y <= hm2_7i92.0.7i77.0.0.input-02
# --- HOME-Z ---
net home-z <= hm2_7i92.0.7i77.0.0.input-03
#*******************
# 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
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
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout0-scalemax [JOINT_0]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout0-minlim [JOINT_0]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout0-maxlim [JOINT_0]OUTPUT_MAX_LIMIT
net x-output => hm2_7i92.0.7i77.0.1.analogout0
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-enable <= joint.0.amp-enable-out
# enable _all_ sserial pwmgens
net x-enable => hm2_7i92.0.7i77.0.1.analogena
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.00.counter-mode 0
setp hm2_7i92.0.encoder.00.filter 1
setp hm2_7i92.0.encoder.00.index-invert 0
setp hm2_7i92.0.encoder.00.index-mask 0
setp hm2_7i92.0.encoder.00.index-mask-invert 0
setp hm2_7i92.0.encoder.00.scale [JOINT_0]ENCODER_SCALE
net x-pos-fb <= hm2_7i92.0.encoder.00.position
net x-vel-fb <= hm2_7i92.0.encoder.00.velocity
net x-pos-fb => joint.0.motor-pos-fb
net x-index-enable joint.0.index-enable <=> hm2_7i92.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_7i92.0.encoder.00.rawcounts
# ---setup home / limit switch signals---
net home-x => 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
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
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout1-scalemax [JOINT_1]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout1-minlim [JOINT_1]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout1-maxlim [JOINT_1]OUTPUT_MAX_LIMIT
net y-output => hm2_7i92.0.7i77.0.1.analogout1
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-enable <= joint.1.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.01.counter-mode 0
setp hm2_7i92.0.encoder.01.filter 1
setp hm2_7i92.0.encoder.01.index-invert 0
setp hm2_7i92.0.encoder.01.index-mask 0
setp hm2_7i92.0.encoder.01.index-mask-invert 0
setp hm2_7i92.0.encoder.01.scale [JOINT_1]ENCODER_SCALE
net y-pos-fb <= hm2_7i92.0.encoder.01.position
net y-vel-fb <= hm2_7i92.0.encoder.01.velocity
net y-pos-fb => joint.1.motor-pos-fb
net y-index-enable joint.1.index-enable <=> hm2_7i92.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_7i92.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net home-y => 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
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
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout2-scalemax [JOINT_2]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout2-minlim [JOINT_2]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout2-maxlim [JOINT_2]OUTPUT_MAX_LIMIT
net z-output => hm2_7i92.0.7i77.0.1.analogout2
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-enable <= joint.2.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.02.counter-mode 0
setp hm2_7i92.0.encoder.02.filter 1
setp hm2_7i92.0.encoder.02.index-invert 0
setp hm2_7i92.0.encoder.02.index-mask 0
setp hm2_7i92.0.encoder.02.index-mask-invert 0
setp hm2_7i92.0.encoder.02.scale [JOINT_2]ENCODER_SCALE
net z-pos-fb <= hm2_7i92.0.encoder.02.position
net z-vel-fb <= hm2_7i92.0.encoder.02.velocity
net z-pos-fb => joint.2.motor-pos-fb
net z-index-enable joint.2.index-enable <=> hm2_7i92.0.encoder.02.index-enable
net z-pos-rawcounts <= hm2_7i92.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net home-z => 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
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
# ---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
loadrt estop_latch
addf estop-latch.0 servo-thread
net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-out
net estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-in
net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset
net remote-estop estop-latch.0.fault-in <= hm2_7i92.0.7i77.0.0.input-00-not
loadrt oneshot count=2
addf oneshot.0 servo-thread
setp oneshot.0.width 1
setp oneshot.0.retriggerable 0
setp oneshot.0.rising 1
net estop-out-gr estop-latch.0.fault-out => oneshot.0.in
net unlatch-gr <= oneshot.0.out
net unlatch-gr => hm2_7i92.0.7i77.0.0.output-00
net machine-is-on hm2_7i92.0.7i77.0.0.output-01
# ---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
Last edit: 19 Feb 2021 12:18 by bevins.
Please Log in or Create an account to join the conversation.
Time to create page: 0.067 seconds