Обратил внимание , что у большинства фирменных пультов есть переключатель скорости подачи. (х1, х0.1 х0.01) Re: MyGUI #365. Показалось, что это не очень удобно. Сделал динамическое управление скоростью ручных перемещений. Когда штурвал крутишь медленно, скорость равна 0.01мм на деление, то есть оборот штурвала перемещает ось на 1мм. Начинаешь вращать быстрее - масштаб изменяется пропорционально скорости. При скорости штурвала около 2 об/сек скорость перемещения уже 3600 мм/мин (максимальная для станка) и за десяток оборотов проходим весь стол. Надо подойти точно - просто крути медленнее. Очень удобно.
https://www.youtube.com/watch?v=sn5-D_UdKGU
Код: Выделить всё
# Encoder jog wheel
loadrt serport io=0x3f8
addf serport.0.read base-thread
addf serport.0.write base-thread
loadrt matrix_kb config=3x2s
addf matrix_kb.0 servo-thread
setp matrix_kb.0.negative-logic 0
setp matrix_kb.0.key_rollover 6
loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.counter-mode 0
setp encoder.0.x4-mode 0
setp encoder.0.position-scale 1000.
setp encoder.0.min-speed-estimate 500.
loadrt abs
addf abs.0 servo-thread
loadrt lowpass
addf lowpass.0 servo-thread
setp lowpass.0.gain 0.01
loadrt limit1
addf limit1.0 servo-thread
setp limit1.0.min 0.01
setp limit1.0.max 1.0
loadrt or2
addf or2.0 base-thread
net col0 serport.0.pin-9-in => matrix_kb.0.col-00-in
net col1 serport.0.pin-8-in => matrix_kb.0.col-01-in
net enca serport.0.pin-6-in => encoder.0.phase-A
net encb serport.0.pin-1-in => encoder.0.phase-B
net row0 matrix_kb.0.row-00-out => serport.0.pin-4-out
net row1 matrix_kb.0.row-01-out => serport.0.pin-3-out
net row2 matrix_kb.0.row-02-out => serport.0.pin-7-out
net mpg-x matrix_kb.0.key.r2c1 => or2.0.in0 axis.0.jog-enable
net mpg-y matrix_kb.0.key.r1c1 => or2.0.in1 axis.2.jog-enable
net nn1 or2.0.out => not.3.in
net nn4 not.3.out => axis.1.jog-enable
setp axis.0.jog-vel-mode 1
setp axis.1.jog-vel-mode 1
setp axis.2.jog-vel-mode 1
net pend-counts encoder.0.counts => axis.0.jog-counts axis.1.jog-counts axis.2.jog-counts
net enc-vel encoder.0.velocity => lowpass.0.in
net evel1 lowpass.0.out => abs.0.in
net abs-enc-vel abs.0.out => limit1.0.in
net pend-scale limit1.0.out => axis.0.jog-scale axis.1.jog-scale axis.2.jog-scale