servo dac offset
05 Nov 2015 03:58 - 05 Nov 2015 04:00 #64768
by PCW
Replied by PCW on topic servo dac offset
Its called PWM in pncconf but that's just a leftover from previous hardware setups
Its not important
What is important:
Drives are set to velocity mode
Drives have any input filtering turned off
FF1 is tuned first (with low P term so the effect of FF1 changes are obvious)
( as mentioned before, if the analog output scaling is set right, FF1 will be 1.0)
P is tuned next
Finally FF2 is tuned to reduce errors during acceleration
The hal/ini files are good to look at in case there's some obvious parameter setting issue
Its not important
What is important:
Drives are set to velocity mode
Drives have any input filtering turned off
FF1 is tuned first (with low P term so the effect of FF1 changes are obvious)
( as mentioned before, if the analog output scaling is set right, FF1 will be 1.0)
P is tuned next
Finally FF2 is tuned to reduce errors during acceleration
The hal/ini files are good to look at in case there's some obvious parameter setting issue
Last edit: 05 Nov 2015 04:00 by PCW.
Please Log in or Create an account to join the conversation.
05 Nov 2015 04:11 #64772
by bkt
Replied by bkt on topic servo dac offset
mmmm .... my start tuning is modify P ..... tomorrow try to a little P an modify FF1 first .... and control all filter input on drive ... but I think is set to 0.
Regards
giorgio
Regards
giorgio
Please Log in or Create an account to join the conversation.
05 Nov 2015 19:40 - 05 Nov 2015 22:10 #64815
by bkt
Replied by bkt on topic servo dac offset
some filter in drive are active ... and I disable it ...ok.
I put P at 5 first and increase FF1 ..... At the end of operation P in Lcnc and in drive are equal ... FF1 in drive is at 1/4 of scale value but in Lcnc are much highter .. see below
in hal file all seems ok ...
But the result are not very good .... my gcode test put the axis to 90° make a pause of 0.1sec and put axis to -90° ... for 10 time ... after go to 50° and stop (all with G61).... the motor and reducer (at the motor I applied a reducer ratio 1/10) correctly turn on and turn of from 180° (I apply a hand to control the crowds results ... I can see 180° but not see the exact start and end point ... ) but in axis never see an exat stop to 90° or -90° bu for example 20 to -160 ... or 30 to -150 with random value .... the acceleration is hight .... but at the and When go to 50° the acceleration is 50% and in axis I see an stop at 70° and in 3 sec the end of program the value turn on 50°. During this positioning the program stop.
Hal scope Image of program run and during program stop ...
I put P at 5 first and increase FF1 ..... At the end of operation P in Lcnc and in drive are equal ... FF1 in drive is at 1/4 of scale value but in Lcnc are much highter .. see below
Warning: Spoiler!
[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
FERROR = 100000.0
MIN_FERROR = 100000.0
MAX_VELOCITY = 36000.0
MAX_ACCELERATION = 240000.0
P = 20
I = 0.0
D = 0.000
FF0 = 0.0
FF1 =60000.0
FF2 = 50.00
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = -27.7778
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -999999.0
MAX_LIMIT = 999999.0
HOME_OFFSET = 0.0
in hal file all seems ok ...
#*******************
# AXIS A
#*******************
setp pid.a.Pgain [AXIS_3]P
setp pid.a.Igain [AXIS_3]I
setp pid.a.Dgain [AXIS_3]D
setp pid.a.bias [AXIS_3]BIAS
setp pid.a.FF0 [AXIS_3]FF0
setp pid.a.FF1 [AXIS_3]FF1
setp pid.a.FF2 [AXIS_3]FF2
setp pid.a.deadband [AXIS_3]DEADBAND
setp pid.a.maxoutput [AXIS_3]MAX_OUTPUT
setp pid.a.error-previous-target true
setp pid.a.maxerror .0005
net a-index-enable <=> pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-vel-cmd => pid.a.command-deriv
net a-pos-fb => pid.a.feedback
net a-output => pid.a.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_3]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_3]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_3]OUTPUT_MAX_LIMIT
net a-output => hm2_5i25.0.7i77.0.1.analogout2
net a-pos-cmd axis.3.motor-pos-cmd
net a-enable axis.3.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [AXIS_3]ENCODER_SCALE
net a-pos-fb <= hm2_5i25.0.encoder.02.position
net a-vel-fb <= hm2_5i25.0.encoder.02.velocity
net a-pos-fb => axis.3.motor-pos-fb
net a-index-enable axis.3.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net a-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net a-home-sw => axis.3.home-sw-in
net a-neg-limit => axis.3.neg-lim-sw-in
net a-pos-limit => axis.3.pos-lim-sw-in
But the result are not very good .... my gcode test put the axis to 90° make a pause of 0.1sec and put axis to -90° ... for 10 time ... after go to 50° and stop (all with G61).... the motor and reducer (at the motor I applied a reducer ratio 1/10) correctly turn on and turn of from 180° (I apply a hand to control the crowds results ... I can see 180° but not see the exact start and end point ... ) but in axis never see an exat stop to 90° or -90° bu for example 20 to -160 ... or 30 to -150 with random value .... the acceleration is hight .... but at the and When go to 50° the acceleration is 50% and in axis I see an stop at 70° and in 3 sec the end of program the value turn on 50°. During this positioning the program stop.
Hal scope Image of program run and during program stop ...
Last edit: 05 Nov 2015 22:10 by bkt.
Please Log in or Create an account to join the conversation.
05 Nov 2015 20:00 #64816
by bkt
Replied by bkt on topic servo dac offset
Now I try to reduce the velocity in G code to 0.1% .... in first test I set F8000 now I set F8 ...... the drive go to the maximum velocity at 10V refer and turn for 30000° +/- instead of 90° ...... ?????
Please Log in or Create an account to join the conversation.
06 Nov 2015 00:03 #64835
by PCW
Replied by PCW on topic servo dac offset
Looks like at the minimum the FF1 is still completely wrong
I would set a P of say 1 and then adjust FF1 for as straight a line as you can get in the jogs
(dont worry about the offset error just try for a )
Also hard to see at that slow rate but it looks like the accel is very high I would lower this until
you get the tuning dialed in
I would set a P of say 1 and then adjust FF1 for as straight a line as you can get in the jogs
(dont worry about the offset error just try for a )
Also hard to see at that slow rate but it looks like the accel is very high I would lower this until
you get the tuning dialed in
The following user(s) said Thank You: bkt
Please Log in or Create an account to join the conversation.
06 Nov 2015 00:24 #64837
by bkt
Replied by bkt on topic servo dac offset
yes I see, I try a new conf with pnconfig and I see that FF1 at maximum I can set to 10000.0 ....
These confis is more soft .... only 360° max vel ans 1.2 max acc ..... Than I try tu run all with halmeter window open on hm2......01.analogue.out (my analog out ... I try to change out connector number... in case it is broken .... nothing change) ...
I see that analogue out go to 99.9 if go at minimum jog vel on axis (0.6 deg) .... and 9999.9 at max jog speed .... all ok. But in drive I see tha save velocity both???? is not possible I'm aspect to see 6rpm at 0.1volt and 600rpm at 10V ... why these ??? I try to control the i/o connector on drive but I suspect that the problem are in other land....
Some suggest??
These confis is more soft .... only 360° max vel ans 1.2 max acc ..... Than I try tu run all with halmeter window open on hm2......01.analogue.out (my analog out ... I try to change out connector number... in case it is broken .... nothing change) ...
I see that analogue out go to 99.9 if go at minimum jog vel on axis (0.6 deg) .... and 9999.9 at max jog speed .... all ok. But in drive I see tha save velocity both???? is not possible I'm aspect to see 6rpm at 0.1volt and 600rpm at 10V ... why these ??? I try to control the i/o connector on drive but I suspect that the problem are in other land....
Some suggest??
Please Log in or Create an account to join the conversation.
06 Nov 2015 00:34 #64838
by PCW
Replied by PCW on topic servo dac offset
Can you post you current hal and ini files here?
maybe I can see if anything is obviously wrong
maybe I can see if anything is obviously wrong
The following user(s) said Thank You: bkt
Please Log in or Create an account to join the conversation.
06 Nov 2015 00:51 - 06 Nov 2015 01:02 #64839
by bkt
Replied by bkt on topic servo dac offset
for sure ....
Now I see that F in gcode (and with these conf) is equal to velocity on drive ... so if I set F60 drive go to 60rpm ... if set F600 drive go to 600rpm ....and so .... The vel that I set was too hight .... but there are other wrong setting ...
# Generated by PNCconf at Thu Nov 5 16:11:55 2015
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = test3
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/k1/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
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 = test3.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[TRAJ]
AXES = 4
COORDINATES = X Y Z A
MAX_ANGULAR_VELOCITY = 360.00
DEFAULT_ANGULAR_VELOCITY = 36.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
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.0
ENCODER_SCALE = 10.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.01
MAX_LIMIT = 200.0
HOME_OFFSET = 0.0
#********************
# Axis Y
#********************
[AXIS_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
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.0
ENCODER_SCALE = 10.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.01
MAX_LIMIT = 200.0
HOME_OFFSET = 0.0
#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
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.0
ENCODER_SCALE = 10.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -100.0
MAX_LIMIT = 0.01
HOME_OFFSET = 0.0
#********************
# Axis A
#********************
[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
FERROR = 100000000000000000.0
MIN_FERROR = 10000000000000.0
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 120.0
P = 1.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 = -27.7778
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -999999.0
MAX_LIMIT = 999999.0
HOME_OFFSET = 0.0
#********************
# Spindle
#********************
[SPINDLE_9]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 2000
# Generated by PNCconf at Thu Nov 5 16:11:55 2015
# 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=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx"
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
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.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.a.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_5i25.0.write servo-thread
# external output signals
# 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
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT
net x-output => hm2_5i25.0.7i77.0.1.analogout0
net x-pos-cmd axis.0.motor-pos-cmd
net x-enable axis.0.amp-enable-out
# enable _all_ sserial pwmgens
net x-enable hm2_5i25.0.7i77.0.1.analogena
# ---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 [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.00.position
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
# ---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 Y
#*******************
setp pid.y.Pgain [AXIS_1]P
setp pid.y.Igain [AXIS_1]I
setp pid.y.Dgain [AXIS_1]D
setp pid.y.bias [AXIS_1]BIAS
setp pid.y.FF0 [AXIS_1]FF0
setp pid.y.FF1 [AXIS_1]FF1
setp pid.y.FF2 [AXIS_1]FF2
setp pid.y.deadband [AXIS_1]DEADBAND
setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.y.error-previous-target true
setp pid.y.maxerror .0005
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_1]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_1]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_1]OUTPUT_MAX_LIMIT
net y-output => hm2_5i25.0.7i77.0.1.analogout2
net y-pos-cmd axis.1.motor-pos-cmd
net y-enable axis.1.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [AXIS_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.02.position
net y-vel-fb <= hm2_5i25.0.encoder.02.velocity
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net y-home-sw => axis.1.home-sw-in
net y-neg-limit => axis.1.neg-lim-sw-in
net y-pos-limit => axis.1.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
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout3-scalemax [AXIS_2]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout3-minlim [AXIS_2]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout3-maxlim [AXIS_2]OUTPUT_MAX_LIMIT
net z-output => hm2_5i25.0.7i77.0.1.analogout3
net z-pos-cmd axis.2.motor-pos-cmd
net z-enable axis.2.amp-enable-out
# ---Encoder feedback signals/setup---
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 [AXIS_2]ENCODER_SCALE
net z-pos-fb <= hm2_5i25.0.encoder.03.position
net z-vel-fb <= hm2_5i25.0.encoder.03.velocity
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> hm2_5i25.0.encoder.03.index-enable
net z-pos-rawcounts <= hm2_5i25.0.encoder.03.rawcounts
# ---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
#*******************
# AXIS A
#*******************
setp pid.a.Pgain [AXIS_3]P
setp pid.a.Igain [AXIS_3]I
setp pid.a.Dgain [AXIS_3]D
setp pid.a.bias [AXIS_3]BIAS
setp pid.a.FF0 [AXIS_3]FF0
setp pid.a.FF1 [AXIS_3]FF1
setp pid.a.FF2 [AXIS_3]FF2
setp pid.a.deadband [AXIS_3]DEADBAND
setp pid.a.maxoutput [AXIS_3]MAX_OUTPUT
setp pid.a.error-previous-target true
setp pid.a.maxerror .0005
net a-index-enable <=> pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-vel-cmd => pid.a.command-deriv
net a-pos-fb => pid.a.feedback
net a-output => pid.a.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [AXIS_3]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout1-minlim [AXIS_3]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [AXIS_3]OUTPUT_MAX_LIMIT
net a-output => hm2_5i25.0.7i77.0.1.analogout1
net a-pos-cmd axis.3.motor-pos-cmd
net a-enable axis.3.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [AXIS_3]ENCODER_SCALE
net a-pos-fb <= hm2_5i25.0.encoder.01.position
net a-vel-fb <= hm2_5i25.0.encoder.01.velocity
net a-pos-fb => axis.3.motor-pos-fb
net a-index-enable axis.3.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net a-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net a-home-sw => axis.3.home-sw-in
net a-neg-limit => axis.3.neg-lim-sw-in
net a-pos-limit => axis.3.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 => 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 <= 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---
sets spindle-at-speed true
#******************************
# 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-b halui.joint.1.select
net y-is-homed halui.joint.1.is-homed
net jog-y-pos halui.jog.1.plus
net jog-y-neg halui.jog.1.minus
net jog-y-analog halui.jog.1.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 joint-select-d halui.joint.3.select
net a-is-homed halui.joint.3.is-homed
net jog-a-pos halui.jog.3.plus
net jog-a-neg halui.jog.3.minus
net jog-a-analog halui.jog.3.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
# ---toolchange signals for custom tool changer---
net tool-number <= iocontrol.0.tool-prep-number
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-prepare-request <= iocontrol.0.tool-prepare
net tool-prepare-confirmed => iocontrol.0.tool-prepared
sorry for spoiler .... but BBCcode editor not work now on my pc.... but as you see the attachment upload hanyhow
My intention is make 60rpm at the and of servomotor .... after the motor I have a reducer 1/10 ... so for 60rpm at the end the motor make 600rpm .... I have divide the encoder feedback to 1/10 The motor have 2500 ppr encoder with 0 signal so the drive output a feedback of 250ppr .... I try these with halmeter .... 1RPM at the end of servomotor = 10000 pulse encoder (250*10*4) ... it seems ok ... but when run my g code :
the A axis go to 31000 and -31000 in while cicle (plus or less not see exactly) ....
Now I see that F in gcode (and with these conf) is equal to velocity on drive ... so if I set F60 drive go to 60rpm ... if set F600 drive go to 600rpm ....and so .... The vel that I set was too hight .... but there are other wrong setting ...
Warning: Spoiler!
# Generated by PNCconf at Thu Nov 5 16:11:55 2015
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = test3
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/k1/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
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 = test3.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[TRAJ]
AXES = 4
COORDINATES = X Y Z A
MAX_ANGULAR_VELOCITY = 360.00
DEFAULT_ANGULAR_VELOCITY = 36.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
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.0
ENCODER_SCALE = 10.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.01
MAX_LIMIT = 200.0
HOME_OFFSET = 0.0
#********************
# Axis Y
#********************
[AXIS_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
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.0
ENCODER_SCALE = 10.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.01
MAX_LIMIT = 200.0
HOME_OFFSET = 0.0
#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
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.0
ENCODER_SCALE = 10.0
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -100.0
MAX_LIMIT = 0.01
HOME_OFFSET = 0.0
#********************
# Axis A
#********************
[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
FERROR = 100000000000000000.0
MIN_FERROR = 10000000000000.0
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 120.0
P = 1.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 = -27.7778
OUTPUT_SCALE = 10.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -999999.0
MAX_LIMIT = 999999.0
HOME_OFFSET = 0.0
#********************
# Spindle
#********************
[SPINDLE_9]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 2000
Warning: Spoiler!
# Generated by PNCconf at Thu Nov 5 16:11:55 2015
# 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=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx"
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
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.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.a.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_5i25.0.write servo-thread
# external output signals
# 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
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT
net x-output => hm2_5i25.0.7i77.0.1.analogout0
net x-pos-cmd axis.0.motor-pos-cmd
net x-enable axis.0.amp-enable-out
# enable _all_ sserial pwmgens
net x-enable hm2_5i25.0.7i77.0.1.analogena
# ---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 [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.00.position
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
# ---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 Y
#*******************
setp pid.y.Pgain [AXIS_1]P
setp pid.y.Igain [AXIS_1]I
setp pid.y.Dgain [AXIS_1]D
setp pid.y.bias [AXIS_1]BIAS
setp pid.y.FF0 [AXIS_1]FF0
setp pid.y.FF1 [AXIS_1]FF1
setp pid.y.FF2 [AXIS_1]FF2
setp pid.y.deadband [AXIS_1]DEADBAND
setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.y.error-previous-target true
setp pid.y.maxerror .0005
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_1]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_1]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_1]OUTPUT_MAX_LIMIT
net y-output => hm2_5i25.0.7i77.0.1.analogout2
net y-pos-cmd axis.1.motor-pos-cmd
net y-enable axis.1.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [AXIS_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.02.position
net y-vel-fb <= hm2_5i25.0.encoder.02.velocity
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net y-home-sw => axis.1.home-sw-in
net y-neg-limit => axis.1.neg-lim-sw-in
net y-pos-limit => axis.1.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
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout3-scalemax [AXIS_2]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout3-minlim [AXIS_2]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout3-maxlim [AXIS_2]OUTPUT_MAX_LIMIT
net z-output => hm2_5i25.0.7i77.0.1.analogout3
net z-pos-cmd axis.2.motor-pos-cmd
net z-enable axis.2.amp-enable-out
# ---Encoder feedback signals/setup---
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 [AXIS_2]ENCODER_SCALE
net z-pos-fb <= hm2_5i25.0.encoder.03.position
net z-vel-fb <= hm2_5i25.0.encoder.03.velocity
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> hm2_5i25.0.encoder.03.index-enable
net z-pos-rawcounts <= hm2_5i25.0.encoder.03.rawcounts
# ---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
#*******************
# AXIS A
#*******************
setp pid.a.Pgain [AXIS_3]P
setp pid.a.Igain [AXIS_3]I
setp pid.a.Dgain [AXIS_3]D
setp pid.a.bias [AXIS_3]BIAS
setp pid.a.FF0 [AXIS_3]FF0
setp pid.a.FF1 [AXIS_3]FF1
setp pid.a.FF2 [AXIS_3]FF2
setp pid.a.deadband [AXIS_3]DEADBAND
setp pid.a.maxoutput [AXIS_3]MAX_OUTPUT
setp pid.a.error-previous-target true
setp pid.a.maxerror .0005
net a-index-enable <=> pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-vel-cmd => pid.a.command-deriv
net a-pos-fb => pid.a.feedback
net a-output => pid.a.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [AXIS_3]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout1-minlim [AXIS_3]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [AXIS_3]OUTPUT_MAX_LIMIT
net a-output => hm2_5i25.0.7i77.0.1.analogout1
net a-pos-cmd axis.3.motor-pos-cmd
net a-enable axis.3.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [AXIS_3]ENCODER_SCALE
net a-pos-fb <= hm2_5i25.0.encoder.01.position
net a-vel-fb <= hm2_5i25.0.encoder.01.velocity
net a-pos-fb => axis.3.motor-pos-fb
net a-index-enable axis.3.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net a-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net a-home-sw => axis.3.home-sw-in
net a-neg-limit => axis.3.neg-lim-sw-in
net a-pos-limit => axis.3.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 => 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 <= 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---
sets spindle-at-speed true
#******************************
# 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-b halui.joint.1.select
net y-is-homed halui.joint.1.is-homed
net jog-y-pos halui.jog.1.plus
net jog-y-neg halui.jog.1.minus
net jog-y-analog halui.jog.1.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 joint-select-d halui.joint.3.select
net a-is-homed halui.joint.3.is-homed
net jog-a-pos halui.jog.3.plus
net jog-a-neg halui.jog.3.minus
net jog-a-analog halui.jog.3.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
# ---toolchange signals for custom tool changer---
net tool-number <= iocontrol.0.tool-prep-number
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-prepare-request <= iocontrol.0.tool-prepare
net tool-prepare-confirmed => iocontrol.0.tool-prepared
sorry for spoiler .... but BBCcode editor not work now on my pc.... but as you see the attachment upload hanyhow
My intention is make 60rpm at the and of servomotor .... after the motor I have a reducer 1/10 ... so for 60rpm at the end the motor make 600rpm .... I have divide the encoder feedback to 1/10 The motor have 2500 ppr encoder with 0 signal so the drive output a feedback of 250ppr .... I try these with halmeter .... 1RPM at the end of servomotor = 10000 pulse encoder (250*10*4) ... it seems ok ... but when run my g code :
G21 G90
#30 = 0
G0 F300 A0
o100 while [#30 LT 10]
G61 F300 A90
G4 P0.1
G61 F600 A-90
G4 P0.1
o100 endwhile
G61 F100 A50
M30
the A axis go to 31000 and -31000 in while cicle (plus or less not see exactly) ....
Last edit: 06 Nov 2015 01:02 by bkt.
Please Log in or Create an account to join the conversation.
06 Nov 2015 01:03 #64842
by PCW
Replied by PCW on topic servo dac offset
OK for axis A a FF1 of 1 is probably about 30x too high
(FF1=1 _ONLY_ if the axis is scaled actual velocity = machine units per second at 10V to drive)
(FF1=1 _ONLY_ if the axis is scaled actual velocity = machine units per second at 10V to drive)
The following user(s) said Thank You: bkt
Please Log in or Create an account to join the conversation.
06 Nov 2015 01:27 - 06 Nov 2015 01:31 #64845
by bkt
Replied by bkt on topic servo dac offset
Sorry not understand very well ... actual velocity is velocity of motor (1) or final velocity after reducer(2)?
case 1 .... at 10V 600rpm ... 60°sec => 10
case 2 ... at 10V 60rpm ... 60°sec => 1
Anyhow ... with FF1 = 0.03 if move in gcode A = 90° obtain about 260/300° velocity decrease to 10%.... at 0.003 obtain about 150/200° but the velocity decrease to 1% .....
Regards
Giorgio
case 1 .... at 10V 600rpm ... 60°sec => 10
case 2 ... at 10V 60rpm ... 60°sec => 1
Anyhow ... with FF1 = 0.03 if move in gcode A = 90° obtain about 260/300° velocity decrease to 10%.... at 0.003 obtain about 150/200° but the velocity decrease to 1% .....
Regards
Giorgio
Last edit: 06 Nov 2015 01:31 by bkt.
Please Log in or Create an account to join the conversation.
Time to create page: 0.154 seconds