5i23+2x7i47+7i42TA
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Итак:
1. Оставляем энкодер, оставляем stepgen.
2. На stepgen заводим axis.n.pos-cmd.
3. хммм... на axis.n.index-enable заводим encoder.index-enable
4. в ini home using index =1 оно и так вроде должно стоять.
Пробуем, что получится.
Скорее всего не сработает, т.к. это как мы раньше пробовали. Но надо понять, что именно не сработает и это поправим.
1. Оставляем энкодер, оставляем stepgen.
2. На stepgen заводим axis.n.pos-cmd.
3. хммм... на axis.n.index-enable заводим encoder.index-enable
4. в ini home using index =1 оно и так вроде должно стоять.
Пробуем, что получится.
Скорее всего не сработает, т.к. это как мы раньше пробовали. Но надо понять, что именно не сработает и это поправим.
-
- Мастер
- Сообщения: 433
- Зарегистрирован: 23 янв 2012, 16:32
- Репутация: 90
- Откуда: Украина Житомир
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Ник сделай пример на базе оси икс а то не понятно что где менять.
Вот кусок хала
Вот кусок хала
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hostmot2
loadrt hm2_pci config="firmware=hm2/5i23/SVST8_12_2X7I47.BIT num_encoders=6 num_pwmgens=0 num_3pwmgens=0 num_stepgens=8 "
setp hm2_5i23.0.watchdog.timeout_ns 10000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
addf hm2_5i23.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_5i23.0.write servo-thread
addf hm2_5i23.0.pet_watchdog servo-thread
# external output signals
setp hm2_5i23.0.gpio.048.is_output true
setp hm2_5i23.0.gpio.050.is_output true
# external input signals
# --- HOME-X ---
net all-home <= hm2_5i23.0.gpio.049.in
#*******************
# 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-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-output => pid.x.output
net x-pos-cmd => pid.x.command
net x-vel-fb => pid.x.feedback-deriv
net x-pos-fb => pid.x.feedback
# Step Gen signals/setup
setp hm2_5i23.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
setp hm2_5i23.0.stepgen.00.dirhold [AXIS_0]DIRHOLD
setp hm2_5i23.0.stepgen.00.steplen [AXIS_0]STEPLEN
setp hm2_5i23.0.stepgen.00.stepspace [AXIS_0]STEPSPACE
setp hm2_5i23.0.stepgen.00.position-scale [AXIS_0]STEP_SCALE
setp hm2_5i23.0.stepgen.00.step_type 0
setp hm2_5i23.0.stepgen.00.control-type 1
setp hm2_5i23.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp hm2_5i23.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd axis.0.motor-pos-cmd
net x-output => hm2_5i23.0.stepgen.00.velocity-cmd
net x-enable axis.0.amp-enable-out => hm2_5i23.0.stepgen.00.enable
# ---Encoder feedback signals/setup---
setp hm2_5i23.0.encoder.00.counter-mode 0
setp hm2_5i23.0.encoder.00.filter 1
setp hm2_5i23.0.encoder.00.index-invert 0
setp hm2_5i23.0.encoder.00.index-mask 0
setp hm2_5i23.0.encoder.00.index-mask-invert 0
setp hm2_5i23.0.encoder.00.scale [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i23.0.encoder.00.position
net x-vel-fb <= hm2_5i23.0.encoder.00.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i23.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i23.0.encoder.00.rawcounts
# ---setup home / limit switch signals---
net all-home => 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
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
как-то так.
убрал ПИД, поставил
setp hm2_5i23.0.stepgen.00.control-type 0
и
net x-pos-cmd => hm2_5i23.0.stepgen.00.position-cmd
убрал ПИД, поставил
setp hm2_5i23.0.stepgen.00.control-type 0
и
net x-pos-cmd => hm2_5i23.0.stepgen.00.position-cmd
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hostmot2
loadrt hm2_pci config="firmware=hm2/5i23/SVST8_12_2X7I47.BIT num_encoders=6 num_pwmgens=0 num_3pwmgens=0 num_stepgens=8 "
setp hm2_5i23.0.watchdog.timeout_ns 10000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
addf hm2_5i23.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_5i23.0.write servo-thread
addf hm2_5i23.0.pet_watchdog servo-thread
# external output signals
setp hm2_5i23.0.gpio.048.is_output true
setp hm2_5i23.0.gpio.050.is_output true
# external input signals
# --- HOME-X ---
net all-home <= hm2_5i23.0.gpio.049.in
#*******************
# AXIS X
#*******************
# Step Gen signals/setup
setp hm2_5i23.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
setp hm2_5i23.0.stepgen.00.dirhold [AXIS_0]DIRHOLD
setp hm2_5i23.0.stepgen.00.steplen [AXIS_0]STEPLEN
setp hm2_5i23.0.stepgen.00.stepspace [AXIS_0]STEPSPACE
setp hm2_5i23.0.stepgen.00.position-scale [AXIS_0]STEP_SCALE
setp hm2_5i23.0.stepgen.00.step_type 0
setp hm2_5i23.0.stepgen.00.control-type 0
setp hm2_5i23.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp hm2_5i23.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd axis.0.motor-pos-cmd
net x-pos-cmd => hm2_5i23.0.stepgen.00.position-cmd
net x-enable axis.0.amp-enable-out => hm2_5i23.0.stepgen.00.enable
# ---Encoder feedback signals/setup---
setp hm2_5i23.0.encoder.00.counter-mode 0
setp hm2_5i23.0.encoder.00.filter 1
setp hm2_5i23.0.encoder.00.index-invert 0
setp hm2_5i23.0.encoder.00.index-mask 0
setp hm2_5i23.0.encoder.00.index-mask-invert 0
setp hm2_5i23.0.encoder.00.scale [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i23.0.encoder.00.position
net x-vel-fb <= hm2_5i23.0.encoder.00.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i23.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i23.0.encoder.00.rawcounts
# ---setup home / limit switch signals---
net all-home => 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
-
- Мастер
- Сообщения: 433
- Зарегистрирован: 23 янв 2012, 16:32
- Репутация: 90
- Откуда: Украина Житомир
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Попробовал сегодня.
Ну по концевикам пробует нормально, но когда доходит до энкодера то он начинаеть валить на немеряной скорости непонятно куда.
На оси Х он нашол но тоже с мега скоростью.
Скорее всего он проскакивает метку, но почему немеряная скорость на поиске метки ?
И еще у меня у осях стояло
setp hm2_5i23.0.stepgen.00.control-type 1
ты поставил setp hm2_5i23.0.stepgen.00.control-type 0
В чем разница ?
Ну по концевикам пробует нормально, но когда доходит до энкодера то он начинаеть валить на немеряной скорости непонятно куда.
На оси Х он нашол но тоже с мега скоростью.
Скорее всего он проскакивает метку, но почему немеряная скорость на поиске метки ?
И еще у меня у осях стояло
setp hm2_5i23.0.stepgen.00.control-type 1
ты поставил setp hm2_5i23.0.stepgen.00.control-type 0
В чем разница ?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Надо посмотреть, что происходит на пинах
encoder.position
и stepgen.position-cmd
во время обнуления.
Можно в halscope все это снять.
Можно туда же добавить пин index-enable.
-------------
Очень похоже на то, что было раньше...
encoder.position
и stepgen.position-cmd
во время обнуления.
Можно в halscope все это снять.
Можно туда же добавить пин index-enable.
-------------
Очень похоже на то, что было раньше...
Управление по скорости или по положению. Нам надо по положению.sysrover писал(а):И еще у меня у осях стояло
setp hm2_5i23.0.stepgen.00.control-type 1
ты поставил setp hm2_5i23.0.stepgen.00.control-type 0
В чем разница ?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Ладно, нам надо придумать хитрую логическую схему:
1. Во время хоуминга, после срабатывания концевика нужно включить index-enable у энкодера.
2. Во время уточнения нуля надо переключить вход axis.N.home-sw-in IN BIT с концевика на index-enable.
Наверное проще всего это на ladder написать...
1. Во время хоуминга, после срабатывания концевика нужно включить index-enable у энкодера.
2. Во время уточнения нуля надо переключить вход axis.N.home-sw-in IN BIT с концевика на index-enable.
Наверное проще всего это на ladder написать...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Например, что-то в этом роде.
%Q0 - завести на axis.N.home-sw-in.
%Q0 - завести на axis.N.home-sw-in.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Даже так, чтобы нормально работало и при замкнутом home...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
А что это даст?Nick писал(а):2. Во время уточнения нуля надо переключить вход axis.N.home-sw-in IN BIT с концевика на index-enable.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
А это даст уточнение по индексной метке с точностью до сервопериода.
Просто так индексную метку нам не поймать - можем и проскочить случайно, а encoder от hostmot2 ее поймает и сообщит нам об этом.
Просто так индексную метку нам не поймать - можем и проскочить случайно, а encoder от hostmot2 ее поймает и сообщит нам об этом.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Переключать зачем? Почему не использовать штатный путь:
axis.0.index-enable <=> hm2_5i23.0.encoder.00.index-enable
?
Если во время поиска индекса сработает axis.N.home-sw-in, то всё остановится по ошибке.
axis.0.index-enable <=> hm2_5i23.0.encoder.00.index-enable
?
Если во время поиска индекса сработает axis.N.home-sw-in, то всё остановится по ошибке.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Я уже тут несколько раз описывал почему так происходит: Получая сигнал index-enable (перепад с 1 на 0) axis.N обнуляет задание на motor-pos - привод, сгенеривший/получивший этот сигнал index-enable должен так-же обнулить motor-fb. А здесь привод тупо ломанулся со всей своей дури исполнять новое задание motor-pos=0.sysrover писал(а):Держите халоскоп
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Не совсем понимая, почему в стандартном крнфиге без индекса такого не происходит?
Axis.N.motor-pos-cmd без индекса в 0 не сбрасывается?
Как тогда быть с шаговиком, если хотим искать ноль по метке?
Axis.N.motor-pos-cmd без индекса в 0 не сбрасывается?
Как тогда быть с шаговиком, если хотим искать ноль по метке?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Потому-что нет сигнала сброса. Потому-что в свою очередь в нём нет смысла.Nick писал(а):Не совсем понимая, почему в стандартном крнфиге без индекса такого не происходит?
Нет, потому-что в этом случае со стороны привода никто ничего не сбрасывает.Nick писал(а):Axis.N.motor-pos-cmd без индекса в 0 не сбрасывается?
Если у шаговика нет энкодера, то никак.Nick писал(а):Как тогда быть с шаговиком, если хотим искать ноль по метке?
Если энкодер есть, то путь стандартный: задание на вход PID-регулятора по положению, с выхода регулятора сигнал скорости на PWM или stepgen.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Вот это и хочется поменять.UAVpilot писал(а):Если у шаговика нет энкодера, то никак.
Я тут задумал сделать на шаговик индексную метку, но без энкодера. Хочется, чтобы оно работало.
хммм надо глянуть в коде, где это происходит.
-
- Мастер
- Сообщения: 433
- Зарегистрирован: 23 янв 2012, 16:32
- Репутация: 90
- Откуда: Украина Житомир
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Так что делаем Ник ?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Я так понимаю это где-то тут:
http://git.linuxcnc.org/gitweb?p=linuxc ... =HEAD#l679
А вот обычный вариант:
Ну да, в одном случае joint->motor_offset = -joint->home_offset
во втором joint->home_offset - joint->pos_fb;
Я так понимаю, что нет смысла перелопачивать motion?
Но можно сделать свою логику на home-switch.
Или написать свой компонент....
http://git.linuxcnc.org/gitweb?p=linuxc ... =HEAD#l679
Код: Выделить всё
679 case HOME_SET_INDEX_POSITION:
680 /* This state is called when the encoder has been reset at
681 the index pulse position. It sets the current joint
682 position to 'home_offset', which is the location of the
683 index pulse in joint coordinates. */
...
685 joint->motor_offset = -joint->home_offset
Код: Выделить всё
587 case HOME_SET_SWITCH_POSITION:
588 /* This state is called when the machine has determined the
589 switch position as accurately as possible. It sets the
590 current joint position to 'home_offset', which is the
591 location of the home switch in joint coordinates. */
592 /* set the current position to 'home_offset' */
593 offset = joint->home_offset - joint->pos_fb;
594 /* this moves the internal position but does not affect the
595 motor position */
596 joint->pos_cmd += offset;
597 joint->pos_fb += offset;
598 joint->free_pos_cmd += offset;
599 joint->motor_offset -= offset;
во втором joint->home_offset - joint->pos_fb;
Я так понимаю, что нет смысла перелопачивать motion?
Но можно сделать свою логику на home-switch.
Или написать свой компонент....
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Пробуем через ladder.sysrover писал(а):Так что делаем Ник ?
Смотри схему выше.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: 5i23+2x7i47+7i42TA
Ну поиска индекса у нас не будет, у нас будет просто поиск датчика.UAVpilot писал(а):Если во время поиска индекса сработает axis.N.home-sw-in, то всё остановится по ошибке.
Да, sysrover, в ini надо убрать home use index или сделать его 0 или N.