5i23+2x7i47+7i42TA

Работа с платами MESA, подключение, конфигурация.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Nick »

Итак:
1. Оставляем энкодер, оставляем stepgen.
2. На stepgen заводим axis.n.pos-cmd.
3. хммм... на axis.n.index-enable заводим encoder.index-enable
4. в ini home using index =1 оно и так вроде должно стоять.

Пробуем, что получится.
Скорее всего не сработает, т.к. это как мы раньше пробовали. Но надо понять, что именно не сработает и это поправим.
sysrover
Мастер
Сообщения: 433
Зарегистрирован: 23 янв 2012, 16:32
Репутация: 90
Откуда: Украина Житомир
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение sysrover »

Ник сделай пример на базе оси икс а то не понятно что где менять.

Вот кусок хала

Код: Выделить всё

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

Сообщение Nick »

как-то так.
убрал ПИД, поставил
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
sysrover
Мастер
Сообщения: 433
Зарегистрирован: 23 янв 2012, 16:32
Репутация: 90
Откуда: Украина Житомир
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение 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

Сообщение Nick »

Надо посмотреть, что происходит на пинах
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

Сообщение Nick »

Ладно, нам надо придумать хитрую логическую схему:
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

Сообщение Nick »

Например, что-то в этом роде.
%Q0 - завести на axis.N.home-sw-in.
Вложения
Снимок-Section Display of .png (1755 просмотров) <a class='original' href='./download/file.php?id=65465&sid=2d3b6b4d18e6d94729070c53783114f4&mode=view' target=_blank>Загрузить оригинал (40.31 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Nick »

Даже так, чтобы нормально работало и при замкнутом home...
Вложения
Снимок-Section Display of -1.png (1753 просмотра) <a class='original' href='./download/file.php?id=65467&sid=2d3b6b4d18e6d94729070c53783114f4&mode=view' target=_blank>Загрузить оригинал (36.95 КБ)</a>
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Serg »

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

Сообщение Nick »

А это даст уточнение по индексной метке с точностью до сервопериода.
Просто так индексную метку нам не поймать - можем и проскочить случайно, а encoder от hostmot2 ее поймает и сообщит нам об этом.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Serg »

Переключать зачем? Почему не использовать штатный путь:
axis.0.index-enable <=> hm2_5i23.0.encoder.00.index-enable
?

Если во время поиска индекса сработает axis.N.home-sw-in, то всё остановится по ошибке.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
sysrover
Мастер
Сообщения: 433
Зарегистрирован: 23 янв 2012, 16:32
Репутация: 90
Откуда: Украина Житомир
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение sysrover »

Держите халоскоп
Вложения
dnimok.png (1724 просмотра) <a class='original' href='./download/file.php?id=65520&sid=2d3b6b4d18e6d94729070c53783114f4&mode=view' target=_blank>Загрузить оригинал (71.03 КБ)</a>
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Serg »

sysrover писал(а):Держите халоскоп
Я уже тут несколько раз описывал почему так происходит: Получая сигнал index-enable (перепад с 1 на 0) axis.N обнуляет задание на motor-pos - привод, сгенеривший/получивший этот сигнал index-enable должен так-же обнулить motor-fb. А здесь привод тупо ломанулся со всей своей дури исполнять новое задание motor-pos=0.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Nick »

Не совсем понимая, почему в стандартном крнфиге без индекса такого не происходит?
Axis.N.motor-pos-cmd без индекса в 0 не сбрасывается?

Как тогда быть с шаговиком, если хотим искать ноль по метке?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Serg »

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

Сообщение Nick »

UAVpilot писал(а):Если у шаговика нет энкодера, то никак.
Вот это и хочется поменять.

Я тут задумал сделать на шаговик индексную метку, но без энкодера. Хочется, чтобы оно работало.

хммм надо глянуть в коде, где это происходит.
sysrover
Мастер
Сообщения: 433
Зарегистрирован: 23 янв 2012, 16:32
Репутация: 90
Откуда: Украина Житомир
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение sysrover »

Так что делаем Ник ?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Nick »

Я так понимаю это где-то тут:

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->motor_offset = -joint->home_offset
во втором joint->home_offset - joint->pos_fb;

Я так понимаю, что нет смысла перелопачивать motion?
Но можно сделать свою логику на home-switch.
Или написать свой компонент.... :roll:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Nick »

sysrover писал(а):Так что делаем Ник ?
Пробуем через ladder.

Смотри схему выше.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 5i23+2x7i47+7i42TA

Сообщение Nick »

UAVpilot писал(а):Если во время поиска индекса сработает axis.N.home-sw-in, то всё остановится по ошибке.
Ну поиска индекса у нас не будет, у нас будет просто поиск датчика.

Да, sysrover, в ini надо убрать home use index или сделать его 0 или N.
Ответить

Вернуться в «MESA»