Joint follow error
Napsal: 14. 2. 2023, 11:19
Brother se už pomalu rozjíždí a narazil jsem na další problém.
Při pojíždění osami mi při rychlostech nad 1500mm/min mi osy padají do follow erroru.
Mesa karty jsou 5i25+7i76, servodrivery Delta ASDA B2. Řízení v polohovém režimu STEP/DIR.
Níže přikládám výpis z jedné osy.
Konfigurace byla vytvořena přes PNCconf. Jsou tam nasrané PIDky, jak už je nedobrým zvykem tohoto konfigurátoru. Našel jsem nějaké vlákna o tom jak je vyhodit, ale žádný úspěch to nepřineslo. Také vím že byly nějaké problémy s STEPGEN_MAXACCEL, ale rád bych aby to bylo popsané na jednom místě. Také se mi nedaří zvýšit STEPGEN_MAXVEL nad 25.
Myslím že je problém ve vysokém STEP SCALE, bohužel nevím jak změnit driver na nižší počet pulsů na otáčku.
Dále jsem něco našel o nastavení BASE_PERIOD, ale nevím jestli to má na to vliv.
[AXIS_X]
MAX_VELOCITY = 400
MAX_ACCELERATION = 2000
MIN_LIMIT = -192
MAX_LIMIT = 30
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 10.0
MAX_VELOCITY = 300
MAX_ACCELERATION = 2000
# 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 = 400
STEPGEN_MAXACCEL = 4000
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
# these are in nanoseconds
DIRSETUP = 1000
DIRHOLD = 1000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = -20000
# 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 hm2_5i25.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_5i25.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_5i25.0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_5i25.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp hm2_5i25.0.stepgen.01.step_type 0
setp hm2_5i25.0.stepgen.01.control-type 1
setp hm2_5i25.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i25.0.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 => hm2_5i25.0.stepgen.01.velocity-cmd
net y-pos-fb <= hm2_5i25.0.stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_5i25.0.stepgen.01.enable
Při pojíždění osami mi při rychlostech nad 1500mm/min mi osy padají do follow erroru.
Mesa karty jsou 5i25+7i76, servodrivery Delta ASDA B2. Řízení v polohovém režimu STEP/DIR.
Níže přikládám výpis z jedné osy.
Konfigurace byla vytvořena přes PNCconf. Jsou tam nasrané PIDky, jak už je nedobrým zvykem tohoto konfigurátoru. Našel jsem nějaké vlákna o tom jak je vyhodit, ale žádný úspěch to nepřineslo. Také vím že byly nějaké problémy s STEPGEN_MAXACCEL, ale rád bych aby to bylo popsané na jednom místě. Také se mi nedaří zvýšit STEPGEN_MAXVEL nad 25.
Myslím že je problém ve vysokém STEP SCALE, bohužel nevím jak změnit driver na nižší počet pulsů na otáčku.
Dále jsem něco našel o nastavení BASE_PERIOD, ale nevím jestli to má na to vliv.
[AXIS_X]
MAX_VELOCITY = 400
MAX_ACCELERATION = 2000
MIN_LIMIT = -192
MAX_LIMIT = 30
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 10.0
MAX_VELOCITY = 300
MAX_ACCELERATION = 2000
# 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 = 400
STEPGEN_MAXACCEL = 4000
P = 1000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
# these are in nanoseconds
DIRSETUP = 1000
DIRHOLD = 1000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = -20000
# 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 hm2_5i25.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_5i25.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_5i25.0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_5i25.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp hm2_5i25.0.stepgen.01.step_type 0
setp hm2_5i25.0.stepgen.01.control-type 1
setp hm2_5i25.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i25.0.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 => hm2_5i25.0.stepgen.01.velocity-cmd
net y-pos-fb <= hm2_5i25.0.stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_5i25.0.stepgen.01.enable