Страница 2 из 3
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 25 май 2011, 23:44
wowk
Спасибо
etch-servo вытащил из стандартной конфигурации EMC 2.4.6
сайт проекта
http://emergent.unpy.net/projects/01142347802
вот папочка с конфига
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 25 май 2011, 23:49
wowk
Наверное для теста надо делать хотя бы еще одну плату

Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 07:33
Nick
Странно, этот конфиг похож на старый. Сейчас linkp, вроде, больше не используется. Хотя, я особо не вчитывался, в пятницу вернусь из Мск, посмотрю подробнее.
Вторую плату делать не обязательно, можешь собрать один привод на столе, погонять его понять все преимущества и недостатки и потом сделать остальные приводы.
Ты определился с энкодерами? Я тут подумал, что 16 тиков на оборот это очень мало, тем более, что двигатели у тебя не шаговые. Их тяжело удерживать на одном месте, на сколько я понимаю, двигатель в режиме удержания может гулять на 1-2 тика энкодера.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 12:58
wowk
Мой енкриментальний энкодер для экспериментов имеет 2500 тиков на оборот и есть еще три абсолютных "Tamagawa Mitsubishi"

(попали ко мне на халяву) японских монстра имеющих возможно 5000 или 3000 тиков ... нигде не могу найти на них точной документации.
А где прописывается разрешение энкодера в импульсах на оборот, в INI или в HAL?
Серво моторчик HSM-150 с сквозным валом 24V 150Wt.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 13:17
wowk
На моей машине где стоит ЛПТ я юзаю Ubuntu 8.04. Интересно, надо обновить EMC с 2.3 до 2.4? Или для сервы это не имеет никакого значения ?..

Не знаю сколько тиков энкодера на оборот максимально может поддержать EMC. Возможно 2500 линий это многовато ..... если EMC не будет справляться на быстрых подачах то наверняка придется добавить к схеме делитель квадратурных импульсов .....
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 15:09
wowk
Фото таких же энкодера и двигателя

..... короче надо делать испытательный стенд .....
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 15:55
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 на нее.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 19:32
wowk
То есть максимум с ЛПТ 60KHz ... все равно быстрее чем шаговый двигатель ..
В принципе и так нормально ...

Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 21:52
wowk
Я почитал внимательнее инфу с сайта проекта
по etch-servo и получается что на управление одним осью используется три пины. Два задают направление а третья используется для регулировки скорости. Самое интересное является то что пин, который используется как правило для прерывания работы драйвера силового моста с другой целью, например для аварийного выключения силовой схемы, регулирует скорость .....

да .... нестандартно ...
чего-то такого вроде
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
там тоже нет .... возникает вопрос рабочий ли этот конфиг.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 26 май 2011, 23:51
vld
wowk писал(а):нигде не могу найти на них точной документации.
http://www.tamagawa-seiki.co.jp/english/
Я свои здесь нашел. Сейчас тоже пытаюсь их заставить крутится и нивкакую.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 27 май 2011, 13:54
wowk
Народ еще вот такую серву собирал
http://www.c-n-c.cz/viewtopic.php?f=19& ... b7ce5a142c
... я тоже делаю свой вариант этого привода на односторонней плате ... Но хотелось попробовать бы, чтобы PID контроль и обработка энкодеров выполняла EMC ... правда на дискретных элементах обещают до 300KHz с энкодера и до 25KHz ШИМ на силовую ...
Надо пробовать варианты.

Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 27 май 2011, 14:52
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

.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 28 май 2011, 00:53
wowk
Спасибо Nick!
Хорошая идея!
Мне кажется, что бы на силовую приходил ШИМ через pwmgen.N.up и pwmgen.N.down
так реализован в классических вариантах серво драйверов ...
Я не программист и не знаю в правильном ли русле идут мои мысли но я подозреваю, что проект etch-servo был реализован не как управление чпу а как просто чтобы поигратьса ... хотя возможно мои сомнения не уместны ....
И там почему-то нигде не прописано, сколько приходит импульсов с энкодера на оборот...
Ох все ... пора спать ... ато к голове уже ничего не приходит ....

Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 28 май 2011, 22:00
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
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 29 май 2011, 00:07
wowk
Ой спасибо Nick за конфиг!

Буду пробовать .....
Завтра или в понедельник прикручу энкодер к двигателю ....

сегодня купил болтики и придумал муфту для этой цели. На работе начинается аврал и руководство хочет чтобы я им побыстрее запустил сварочного робота .... но руки чешутся побыстрее попробовать подключить моторчик к EMC

Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 29 май 2011, 01:19
wowk
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 29 май 2011, 09:35
PKM
Штука давно известная в ЕМС2, но здесь почему-то прошла как новинка.
Купил самый дешевый беспроводный контроллер. ЕМС2 его видит, но настраивать пока нет времени.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 29 май 2011, 11:47
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.
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 29 май 2011, 23:02
wowk
Re: Помогите настроить EMC2 для управления 3-мя серводвигате
Добавлено: 30 май 2011, 09:47
Nick
Ага, я тоже на первый станок засмотрелся

.
Хмм а на последнем видео станок стоит в гараже?