Это я понял, проблема в том, что внешнего воздействия нет. Тут я попробую поднять значение egantry.N.align-hyst и посмотреть, будут ли изменения. Засада начинается еще в процессе хомелиня.
Или получается, что пока моторы ищут Z метку у них происходит рассогласование больше чем прописано egantry.N.align-hyst и из-за этого они начинают чехарду ?
ХАЛ сейчас такой, хотя могут быть уже не точности, от станка ушел.
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt not count=3
# My driver
loadrt to_pci
loadrt pid names=pid.x,pid.y,pid.z,pid.a
# ################################################
# THREADS
# ################################################
addf to_pci.1.update 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 not.0 servo-thread
addf not.1 servo-thread
addf not.2 servo-thread
net x-enable to_pci.1.pins.pin-00-out
net a-enable to_pci.1.pins.pin-01-out
net y-enable to_pci.1.pins.pin-02-out
net z-enable to_pci.1.pins.pin-03-out
# --- HOME-X ---
#net home-x <= to_pci.1.pins.pin-24-in
# --- HOME-Y ---
net home-y <= to_pci.1.pins.pin-25-in
# --- HOME-Z ---
net home-z <= to_pci.1.pins.pin-26-in
########### egantry ###########################
loadrt egantry count=1 personality=2
addf egantry.0 servo-thread
setp egantry.0.align-vel 50
setp egantry.0.align-acc 100
setp egantry.0.align-hyst 0.05
setp egantry.0.align-hyst 0.05
#setp egantry.0.joint.01.correct 1
# position & feedback
net x-pos-cmd egantry.0.axis.motor-pos-cmd => axis.0.motor-pos-cmd
net x-pos-fb egantry.0.axis.motor-pos-fb => axis.0.motor-pos-fb
net x1-pos-cmd egantry.0.joint.00.pos-cmd => pid.x.command
net x1-pos-fb egantry.0.joint.00.pos-fb <= pid.x.feedback
net x2-pos-cmd egantry.0.joint.01.pos-cmd => pid.a.command
net x2-pos-fb egantry.0.joint.01.pos-fb <= pid.a.feedback
# enables
net x-enable egantry.0.axis.amp-enable <= axis.0.amp-enable-out
net x1-enable egantry.0.joint.00.enable => pid.x.enable
net x2-enable egantry.0.joint.01.enable => pid.a.enable
# index_ENC
net x-index-enable egantry.0.axis.index-enable <= axis.0.index-enable
net x1-index-enable egantry.0.joint.00.index-enable => pid.x.index-enable
net x2-index-enable egantry.0.joint.01.index-enable => pid.a.index-enable
# home switches & othrs
net x-home-sw egantry.0.axis.home-sw => axis.0.home-sw-in
#net x1-home-sw egantry.0.joint.00.home-sw <= to_pci.1.pins.pin-24-in
#net x2-home-sw egantry.0.joint.01.home-sw <= to_pci.1.pins.pin-24-in-n
net x-joint-home-sw egantry.0.joint.00.home-sw egantry.0.joint.01.home-sw <= to_pci.1.pins.pin-24-in
net x-home-state axis.0.home-state => egantry.0.axis.home-state
net x-homed axis.0.homed => egantry.0.axis.homed
########## egantry ###########################
#*******************
# 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
net x-vel-cmd => pid.x.command-deriv
net x-output => pid.x.output
net x-vel-fb => pid.x.feedback-deriv
# ---PWM Generator signals/setup---
setp to_pci.1.out_scale0 1
#net x-enable axis.0.amp-enable-out
net x-enable => to_pci.1.pins.pin-00-out
net x-output => to_pci.1.dcontrol0
# --------fb--------------
setp to_pci.1.feedback.enc_scale0 2000
net x1-pos-fb => to_pci.1.feedback.encoder0
net x-index-enable to_pci.1.feedback.index_en0
#*******************
# AXIS X1
#*******************
setp pid.a.Pgain [AXIS_0]P
setp pid.a.Igain [AXIS_0]I
setp pid.a.Dgain [AXIS_0]D
setp pid.a.bias [AXIS_0]BIAS
setp pid.a.FF0 [AXIS_0]FF0
setp pid.a.FF1 [AXIS_0]FF1
setp pid.a.FF2 [AXIS_0]FF2
setp pid.a.deadband [AXIS_0]DEADBAND
setp pid.a.maxoutput [AXIS_0]MAX_OUTPUT
#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 to_pci.1.out_scale1 1
net a-vel-cmd => pid.a.command-deriv
net a-output => pid.a.output
net a-vel-fb => pid.a.feedback-deriv
net a-enable axis.3.amp-enable-out
net a-enable => to_pci.1.pins.pin-01-out
net a-output => to_pci.1.dcontrol1
# --------fb--------------
setp to_pci.1.feedback.enc_scale1 2000
#net a-pos-fb <= to_pci.1.feedback.encoder1
net x2-pos-fb => to_pci.1.feedback.encoder1
net a-index-enable to_pci.1.feedback.index_en1
#*******************
# AXIS Y
#*******************
setp pid.y.Pgain [AXIS_0]P
setp pid.y.Igain [AXIS_0]I
setp pid.y.Dgain [AXIS_0]D
setp pid.y.bias [AXIS_0]BIAS
setp pid.y.FF0 [AXIS_0]FF0
setp pid.y.FF1 [AXIS_0]FF1
setp pid.y.FF2 [AXIS_0]FF2
setp pid.y.deadband [AXIS_0]DEADBAND
setp pid.y.maxoutput [AXIS_0]MAX_OUTPUT
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 to_pci.1.out_scale2 -1
net y-enable axis.1.amp-enable-out
net y-enable => to_pci.1.pins.pin-02-out
net y-output => to_pci.1.dcontrol2
net y-pos-cmd axis.1.motor-pos-cmd
# --------fb--------------
setp to_pci.1.feedback.enc_scale2 -2000
net y-pos-fb <= to_pci.1.feedback.encoder2
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> to_pci.1.feedback.index_en2
net home-y => axis.1.home-sw-in
#net min-home-y => axis.2.neg-lim-sw-in
#net y-pos-limit => axis.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
setp pid.z.Pgain [AXIS_0]P
setp pid.z.Igain [AXIS_0]I
setp pid.z.Dgain [AXIS_0]D
setp pid.z.bias [AXIS_0]BIAS
setp pid.z.FF0 [AXIS_0]FF0
setp pid.z.FF1 [AXIS_0]FF1
setp pid.z.FF2 [AXIS_0]FF2
setp pid.z.deadband [AXIS_0]DEADBAND
setp pid.z.maxoutput [AXIS_0]MAX_OUTPUT
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 to_pci.1.out_scale3 -1
net z-enable axis.2.amp-enable-out
net z-enable => to_pci.1.pins.pin-03-out
net z-output => to_pci.1.dcontrol3
net z-pos-cmd axis.2.motor-pos-cmd
# --------fb--------------
setp to_pci.1.feedback.enc_scale3 -2000
net z-pos-fb <= to_pci.1.feedback.encoder3
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> to_pci.1.feedback.index_en3
net home-z => axis.2.home-sw-in
#net min-home-z => axis.2.neg-lim-sw-in
#net z-pos-limit => axis.2.pos-lim-sw-in
# ---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 to_pci.1.enable_drive
# ---manual tool change signals---
Еще такой вопрос, подскажите:
net x-vel-cmd => pid.x.command-deriv
net x-vel-fb => pid.x.feedback-deriv
Это для чего, и на что влияет? поиск вразумительного ничего не дал
egantry.N.align-vel float in (default: 1e20)
Скорость выравнивания приводов
egantry.N.align-acc float in (default: 1e20)
Ускорение выравнивания приводов
у меня прописано, но скорость явно отличается от прописанной:
setp egantry.0.align-vel 50
setp egantry.0.align-acc 100