- Configuring LinuxCNC
- Configuration Tools
- PnCConf Wizard
- Configuration for rotary axis (7i76, stepper+encoder)
Configuration for rotary axis (7i76, stepper+encoder)
14 May 2017 10:09 #93178
by Marc_P
Configuration for rotary axis (7i76, stepper+encoder) was created by Marc_P
Hello
I have a problem to get my rotary axis to run.
I use a 5i25 with a 7i76. The stepper is connected with a pulley (ratio 1:6). On the other end of the stepper shaft is a Nanotec Encoder (WEDL5541B with 1000 CPR see here: en.nanotec.com/products/186-wedswedl-55413-channel-encoder/) directly fitted and connected to the 7i76 Encoder input (TB3 PIN 7-14).
HAL
INI
My problem is that the stepper is flickering at the end of the position command and I don't know why and what setting can be useful to change.
I have uploaded a video to demonstrate:
Hope you understand my problem and have a idea for me.
Greetings
Marc
I have a problem to get my rotary axis to run.
I use a 5i25 with a 7i76. The stepper is connected with a pulley (ratio 1:6). On the other end of the stepper shaft is a Nanotec Encoder (WEDL5541B with 1000 CPR see here: en.nanotec.com/products/186-wedswedl-55413-channel-encoder/) directly fitted and connected to the 7i76 Encoder input (TB3 PIN 7-14).
HAL
#*******************
# 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 0
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
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.03.dirsetup [AXIS_3]DIRSETUP
setp hm2_5i25.0.stepgen.03.dirhold [AXIS_3]DIRHOLD
setp hm2_5i25.0.stepgen.03.steplen [AXIS_3]STEPLEN
setp hm2_5i25.0.stepgen.03.stepspace [AXIS_3]STEPSPACE
setp hm2_5i25.0.stepgen.03.position-scale [AXIS_3]STEP_SCALE
setp hm2_5i25.0.stepgen.03.step_type 0
setp hm2_5i25.0.stepgen.03.control-type 1
setp hm2_5i25.0.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.03.maxvel [AXIS_3]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net a-pos-cmd <= axis.3.motor-pos-cmd
net a-vel-cmd <= axis.3.joint-vel-cmd
net a-output <= hm2_5i25.0.stepgen.03.velocity-cmd
#net a-pos-fb <= hm2_5i25.0.stepgen.03.position-fb
net a-pos-fb => axis.3.motor-pos-fb
net a-enable <= axis.3.amp-enable-out
net a-enable => hm2_5i25.0.stepgen.03.enable
# ---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_3]ENCODER_SCALE
net a-pos-fb <= hm2_5i25.0.encoder.00.position
net a-vel-fb <= hm2_5i25.0.encoder.00.velocity
net a-pos-fb => axis.3.motor-pos-fb
net a-index-enable axis.3.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net a-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
INI
#********************
# Axis A
#********************
[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
FERROR = 10
MIN_FERROR = 1
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 360.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 450.00
STEPGEN_MAXACCEL = 450.00
P = 1000.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 = -66.6666
# these are in nanoseconds
DIRSETUP = 2500
DIRHOLD = 2500
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 33.3333
MIN_LIMIT = -999900.0
MAX_LIMIT = 999900.0
HOME_OFFSET = 0.0
My problem is that the stepper is flickering at the end of the position command and I don't know why and what setting can be useful to change.
I have uploaded a video to demonstrate:
Hope you understand my problem and have a idea for me.
Greetings
Marc
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19220
- Thank you received: 6440
14 May 2017 10:23 #93181
by tommylight
Replied by tommylight on topic Configuration for rotary axis (7i76, stepper+encoder)
That is normal as you have to do some PID tuning, there are some nice tutorials here on the forum for that.
Start by adding a deadband value of 0.05, then lower the P value till you get no oscilation.
That is a servo system so it has to be tuned as such, although it uses a stepper motor.
Start by adding a deadband value of 0.05, then lower the P value till you get no oscilation.
That is a servo system so it has to be tuned as such, although it uses a stepper motor.
The following user(s) said Thank You: Marc_P
Please Log in or Create an account to join the conversation.
14 May 2017 13:17 #93186
by PCW
Replied by PCW on topic Configuration for rotary axis (7i76, stepper+encoder)
As tommylight says, you need to tune the PID parameters (mainly P)
The P value of 1000 is appropriate for open loop step motor systems since the position feedback comes from the
step generator and has close to zero delay in responding to velocity commands (since its electronic)
You have a real servo system with magnetic and inertial delays between command and feedback.
This means you can not have as high a P term and remain stable.
The P value of 1000 is appropriate for open loop step motor systems since the position feedback comes from the
step generator and has close to zero delay in responding to velocity commands (since its electronic)
You have a real servo system with magnetic and inertial delays between command and feedback.
This means you can not have as high a P term and remain stable.
The following user(s) said Thank You: Marc_P, tommylight
Please Log in or Create an account to join the conversation.
14 May 2017 15:11 #93189
by Marc_P
Replied by Marc_P on topic Configuration for rotary axis (7i76, stepper+encoder)
Thanks to you. That help me further.
Now I must tune the axis and hope that I get a closed loop system.
A quick test -> Only with the deadband value I get the oscilation away but then if I move the axis for 1mm (degree?) the DRO shows different values. For exampe (with deadband 0.02) 1.000 / 2.010 / 3.000 / 3.990 / 5.010 / 6.015.
Can these values be right? And do you think a closed loop with my stepper and rotary encoder can work or is this thought completly nonsense?
Marc
Now I must tune the axis and hope that I get a closed loop system.
A quick test -> Only with the deadband value I get the oscilation away but then if I move the axis for 1mm (degree?) the DRO shows different values. For exampe (with deadband 0.02) 1.000 / 2.010 / 3.000 / 3.990 / 5.010 / 6.015.
Can these values be right? And do you think a closed loop with my stepper and rotary encoder can work or is this thought completly nonsense?
Marc
Please Log in or Create an account to join the conversation.
14 May 2017 15:52 - 14 May 2017 15:54 #93190
by PCW
Replied by PCW on topic Configuration for rotary axis (7i76, stepper+encoder)
Those values are expected with a deadband of .02 degrees (they are within +-.02 degrees)
Also consider that the step drives as configured can only resolve .03 degrees ( at stepscale = 33.333 steps/degree )
You could get a bit more resolution if you could increase the microstep ratio of the drive, but then the encoder resolution of .015 degrees would become the limitation.
If you dislike seeing the minor errors in actual step motor position, you could always set Axis to display
commanded position instead of feedback position (an option in the "View" menu)
Also consider that the step drives as configured can only resolve .03 degrees ( at stepscale = 33.333 steps/degree )
You could get a bit more resolution if you could increase the microstep ratio of the drive, but then the encoder resolution of .015 degrees would become the limitation.
If you dislike seeing the minor errors in actual step motor position, you could always set Axis to display
commanded position instead of feedback position (an option in the "View" menu)
Last edit: 14 May 2017 15:54 by PCW.
Please Log in or Create an account to join the conversation.
Moderators: cmorley
- Configuring LinuxCNC
- Configuration Tools
- PnCConf Wizard
- Configuration for rotary axis (7i76, stepper+encoder)
Time to create page: 0.127 seconds