Помогите настроить EMC2 для управления 3-мя серводвигателями

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

Спасибо :beer_blow:
etch-servo вытащил из стандартной конфигурации EMC 2.4.6

сайт проекта
http://emergent.unpy.net/projects/01142347802

вот папочка с конфига
Вложения
etch-servo.tar.gz
(3.93 КБ) 1268 скачиваний
Екран.png (3732 просмотра) <a class='original' href='./download/file.php?id=1529&mode=view' target=_blank>Загрузить оригинал (329.36 КБ)</a>
Последний раз редактировалось wowk 26 май 2011, 00:06, всего редактировалось 2 раза.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

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

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение Nick »

Странно, этот конфиг похож на старый. Сейчас linkp, вроде, больше не используется. Хотя, я особо не вчитывался, в пятницу вернусь из Мск, посмотрю подробнее.

Вторую плату делать не обязательно, можешь собрать один привод на столе, погонять его понять все преимущества и недостатки и потом сделать остальные приводы.

Ты определился с энкодерами? Я тут подумал, что 16 тиков на оборот это очень мало, тем более, что двигатели у тебя не шаговые. Их тяжело удерживать на одном месте, на сколько я понимаю, двигатель в режиме удержания может гулять на 1-2 тика энкодера.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

Мой енкриментальний энкодер для экспериментов имеет 2500 тиков на оборот и есть еще три абсолютных "Tamagawa Mitsubishi" :twisted: (попали ко мне на халяву) японских монстра имеющих возможно 5000 или 3000 тиков ... нигде не могу найти на них точной документации.
А где прописывается разрешение энкодера в импульсах на оборот, в INI или в HAL?
Серво моторчик HSM-150 с сквозным валом 24V 150Wt.
Последний раз редактировалось wowk 26 май 2011, 15:11, всего редактировалось 2 раза.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

На моей машине где стоит ЛПТ я юзаю Ubuntu 8.04. Интересно, надо обновить EMC с 2.3 до 2.4? Или для сервы это не имеет никакого значения ?.. :?
Не знаю сколько тиков энкодера на оборот максимально может поддержать EMC. Возможно 2500 линий это многовато ..... если EMC не будет справляться на быстрых подачах то наверняка придется добавить к схеме делитель квадратурных импульсов .....
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

Фото таких же энкодера и двигателя :)
..... короче надо делать испытательный стенд .....
Вложения
hsm150.jpg (3721 просмотр) <a class='original' href='./download/file.php?id=1534&mode=view' target=_blank>Загрузить оригинал (80.11 КБ)</a>
tamagawa.JPG (3721 просмотр) <a class='original' href='./download/file.php?id=1535&mode=view' target=_blank>Загрузить оригинал (39.42 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение Nick »

wowk писал(а):А где прописывается разрешение энкодера в импульсах на оборот, в INI или в HAL?
Хороший вопрос, наверное в hal, энкодеры обрабатываются компонентом encoder, вроде у него был параметр scale, который будет задавать отношение тиков к перемещению в основных единицах.
wowk писал(а):На моей машине где стоит ЛПТ я юзаю Ubuntu 8.04. Интересно, надо обновить EMC с 2.3 до 2.4? Или для сервы это не имеет никакого значения ?..
Если оно работает, то лучше его не трогать ;). Если еще нет, то, наверное, лучше поставить 10.04 и EMC 2.4.
wowk писал(а):Не знаю сколько тиков энкодера на оборот максимально может поддержать EMC. Возможно 2500 линий это многовато ..... если EMC не будет справляться на быстрых подачах то наверняка придется добавить к схеме делитель квадратурных импульсов .....
Компонент encoder подгружается к base thread и обрабатывается с частотой base period. Т.е. при среднем latency 15000 получается максимум около 60 000 кГц.

Если хочешь быстрее, то ставь MESA и перемещай PID на нее.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

То есть максимум с ЛПТ 60KHz ... все равно быстрее чем шаговый двигатель ..
В принципе и так нормально ... 8-)
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

Я почитал внимательнее инфу с сайта проекта
по etch-servo и получается что на управление одним осью используется три пины. Два задают направление а третья используется для регулировки скорости. Самое интересное является то что пин, который используется как правило для прерывания работы драйвера силового моста с другой целью, например для аварийного выключения силовой схемы, регулирует скорость ..... :shock: да .... нестандартно ...
чего-то такого вроде

loadrt encoder num_chan = 1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 20.000000
net Xpos-phase-a encoder.0.phase-A
net Xpos-phase-b encoder.0.phase-B
net Xpos-index encoder.0.phase-Z
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-index <= parport.0.pin-11-in

там тоже нет .... возникает вопрос рабочий ли этот конфиг.
vld
Кандидат
Сообщения: 59
Зарегистрирован: 18 май 2011, 01:05
Репутация: 0
Откуда: UA Chernivci
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение vld »

wowk писал(а):нигде не могу найти на них точной документации.
http://www.tamagawa-seiki.co.jp/english/
Я свои здесь нашел. Сейчас тоже пытаюсь их заставить крутится и нивкакую.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

vld писал(а):
wowk писал(а):нигде не могу найти на них точной документации.
http://www.tamagawa-seiki.co.jp/english/
Я свои здесь нашел. Сейчас тоже пытаюсь их заставить крутится и нивкакую.
Народ еще вот такую ​​серву собирал
http://www.c-n-c.cz/viewtopic.php?f=19& ... b7ce5a142c

... я тоже делаю свой ​​вариант этого привода на односторонней плате ... Но хотелось попробовать бы, чтобы PID контроль и обработка энкодеров выполняла EMC ... правда на дискретных элементах обещают до 300KHz с энкодера и до 25KHz ШИМ на силовую ... :shock:

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

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение Nick »

wowk писал(а):чего-то такого вроде:

loadrt encoder num_chan = 1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 20.000000
net Xpos-phase-a encoder.0.phase-A
net Xpos-phase-b encoder.0.phase-B
net Xpos-index encoder.0.phase-Z
net Xpos-phase-a <= parport.0.pin-10-in
net Xpos-index <= parport.0.pin-11-in

там тоже нет .... возникает вопрос рабочий ли этот конфиг.
Не совсем. Нужно все это дело завернуть в PID. Т.е. создать 3 pid контроллера, и на pid.N.command подавать желаемое перемещение, на pid.N.feedback encoder.counts, а с pid.N.output снимать управление на серву, т.е. на pwmgen. Из дома по-подробнее напишу.

И еще, в описанный тобой энкодер не заходит фаза B :?.
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

Спасибо Nick! ;) :beer_blow: :beer_blow: :beer_blow:
Хорошая идея!
Мне кажется, что бы на силовую приходил ШИМ через pwmgen.N.up и pwmgen.N.down
так реализован в классических вариантах серво драйверов ... :roll:

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

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение Nick »

Вот, что выдает pncconf, для настройки серв. Правда, почему-то, он не позволяет сделать настройку управления сервами через lpt... но мы это исправим

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

#*******************
#  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

# ---PWM Generator signals/setup---

setp   hm2_5i23.0.pwmgen.10.output-type 1
setp   hm2_5i23.0.pwmgen.10.scale  [AXIS_0]OUTPUT_SCALE

net xenable     => pid.x.enable
net xoutput     pid.x.output           => hm2_5i23.0.pwmgen.10.value
net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
net xenable     axis.0.amp-enable-out  => hm2_5i23.0.pwmgen.10.enable

# ---Encoder feedback signals/setup---

setp    hm2_5i23.0.encoder.10.counter-mode 0
setp    hm2_5i23.0.encoder.10.filter 1
setp    hm2_5i23.0.encoder.10.index-invert 0
setp    hm2_5i23.0.encoder.10.index-mask 0
setp    hm2_5i23.0.encoder.10.index-mask-invert 0
setp    hm2_5i23.0.encoder.10.scale  [AXIS_0]INPUT_SCALE

net xpos-fb               <=  hm2_5i23.0.encoder.10.position
net xpos-fb               =>  pid.x.feedback
net xpos-fb               =>  axis.0.motor-pos-fb
net x-index-enable    axis.0.index-enable  <=>  hm2_5i23.0.encoder.10.index-enable

# ---setup home / limit switch signals---

net x-home-sw     =>  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

Т.е. должно получиться как-то так:
(для остальных осей все примерно также)

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

loadrt pwmgen output_type=2,2,2
loadrt pid num_chan=3
loadrt encoder num_chan=3


addf parport.0.read            base-thread
addf encoder.update-counters   base-thread
addf pwmgen.make-pulses        base-thread
addf parport.0.write           base-thread

addf encoder.capture-position  servo-thread
addf motion-command-handler    servo-thread
addf motion-controller         servo-thread
addf pid.0.do-pid-calcs        servo-thread
addf pid.1.do-pid-calcs        servo-thread
addf pid.2.do-pid-calcs        servo-thread
addf pwmgen.update             servo-thread


#*******************
#  AXIS X
#*******************

setp   pid.0.Pgain     [AXIS_0]P
setp   pid.0.Igain     [AXIS_0]I
setp   pid.0.Dgain     [AXIS_0]D
setp   pid.0.bias      [AXIS_0]BIAS
setp   pid.0.FF0       [AXIS_0]FF0
setp   pid.0.FF1       [AXIS_0]FF1
setp   pid.0.FF2       [AXIS_0]FF2
setp   pid.0.deadband  [AXIS_0]DEADBAND
setp   pid.0.maxoutput [AXIS_0]MAX_OUTPUT

net x-index-enable  <=>  pid.0.index-enable

# ---PWM Generator signals/setup---
setp   pwmgen.0.scale  [AXIS_0]OUTPUT_SCALE

net xenable     => pid.0.enable
net xoutput     pid.0.output           => pwmgen.0.value
net xpos-cmd    axis.0.motor-pos-cmd   => pid.0.command
net xenable     axis.0.amp-enable-out  => pwmgen.0.enable

net   pwmgen.0.up   => parport.0.pin-01-out
net   pwmgen.0.down => parport.0.pin-02-out



# ---Encoder feedback signals/setup---

setp    encoder.0.counter-mode 0
setp    encoder.0.filter 1
setp    encoder.0.index-invert 0
setp    encoder.0.index-mask 0
setp    encoder.0.index-mask-invert 0
setp    encoder.0.scale  [AXIS_0]INPUT_SCALE

net xpos-fb               <=  encoder.0.position
net xpos-fb               =>  pid.0.feedback
net xpos-fb               =>  axis.0.motor-pos-fb
net x-index-enable    axis.0.index-enable  <=>  encoder.0.index-enable

net   parport.0.pin-11-in => encoder.0.phase-A
net   parport.0.pin-12-in => encoder.0.phase-B
net   parport.0.pin-12-in => encoder.0.phase-Z


# ---setup home / limit switch signals---

net x-home-sw     =>  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
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

Ой спасибо Nick за конфиг! :) Буду пробовать .....
Завтра или в понедельник прикручу энкодер к двигателю .... :spanner: :rasp: сегодня купил болтики и придумал муфту для этой цели. На работе начинается аврал и руководство хочет чтобы я им побыстрее запустил сварочного робота .... но руки чешутся побыстрее попробовать подключить моторчик к EMC :walk:
wowk
Кандидат
Сообщения: 84
Зарегистрирован: 13 май 2011, 09:57
Репутация: 1
Откуда: Ukraine Lviv region Stryi
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение wowk »

так .... интересная страница
http://hackaday.com/category/cnc-hacks/
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение PKM »

wowk писал(а):так .... интересная страница
http://hackaday.com/category/cnc-hacks/
Штука давно известная в ЕМС2, но здесь почему-то прошла как новинка.

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

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение Nick »

Я делал примерно тоже самое, но с обычным беспроводным джойстиком: http://cnc-club.ru/forum/viewtopic.php?f=15&t=563
PS думаю wowk имел ввиду всю hackaday.com. Добавлю ее в список интересных cnc сайтов http://cnc-club.ru/forum/viewtopic.php?f=26&t=83.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить EMC2 для управления 3-мя серводвигате

Сообщение Nick »

Ага, я тоже на первый станок засмотрелся :hehehe:.
Хмм а на последнем видео станок стоит в гараже?
Ответить

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