Страница 6 из 21

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 17 янв 2012, 12:21
Lexxa
halcmd setp halui.estop.activate 1 - ставит на естоп
halcmd setp halui.estop.reset 1 снимает естоп.
Оно и работало.
Не работала связка
-------|/AmpRD|--------------------(Estop)------------
Estop = halui.estop.activate
когда AmpRD до загрузки EMC снять.
При том, что в hal-метре halui.estop.activate был true, а estop был снят.
По идее такая схема должна практически мгновенно ставить станок обратно на естоп

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 17 янв 2012, 13:07
Nick
Я кажется знаю в чем дело:
halui.estop.activate выполняет постановку на Estop, но не удерживает на нем. Т.е. как только появилась 1 ставим на Estop, потом любым внешним действием его можно снять вне зависимости от того, какое значение на нем будет.

Связанно наверняка с тем, что иначе получится двоякая ситуация - два пина отвечают за одно и то же. А в hal в один и тот же пин нельзя записать два разных выхода, можно только через дополнительный компонент (логический или любой другой). Главное, чтобы не появлялось неразберихи.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 17 янв 2012, 13:12
Lexxa
Понятно

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 18 янв 2012, 08:31
freeform
Lexxa писал(а):В процессе реализации преобразователь сигналов резольвера в обычный квадратурный энкодер для нормального восприятия его EMC.
А зачем эти навороты? Почему просто не выкинуть резольвер и не поставить энкодер?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 18 янв 2012, 10:06
Lexxa
Потому что это, во-первых, адский огород с креплением их на ШВП и станину. Штатных мест не предусмотрено конструкцией.
А во-вторых, они денег стоят достаточно дорого, которых лишних нету.
И в-третьих, резольвер механически значительно надежней энкодера.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 21 янв 2012, 01:33
Lexxa
Китайцы наконец прислали переходник для CF карты.
Осталось ШРы намутить

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 27 янв 2012, 23:28
Lexxa
Итак, готова прошивка ResolverToEncoder, готова макетка. В понедельник сбока тестового образца!!!
Найден подопытный резольвер))
Теперь надо на Atmtga8 счетчик импульсов замутить и всех потестить, потом сравнить как со станком будет.
Кстати, 94% ПЛИС занято))

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 27 янв 2012, 23:41
Nick
Ждем результатов!
ЗЫ А можешь фото этого чуда сделать? А то ПЛИС, резольвер, для меня это выглядит как пины HAL :D.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 28 янв 2012, 02:13
Lexxa
канечна

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 00:49
Lexxa
Я так понял для того чтобы заставить ПИД ЕМС регулировать скорость а не положение для трех координат надо

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

# Загружаем модуль "производная"
loadrt ddt count=6

# Скорость и ошибка скорости Х
addf ddt.0                     servo-thread
addf ddt.1                     servo-thread
newsig xvel float
newsig xvel-fb float
linksp xpos-cmd => ddt.0.in
linkps ddt.0.out => xvel
linksp xpos-fb => ddt.1.in
linkps ddt.1.out => xvel-fb

# Скорость и ошибка скорости Y
addf ddt.2                     servo-thread
addf ddt.3                     servo-thread
newsig yvel float
newsig yvel-fb float
linksp ypos-cmd => ddt.2.in
linkps ddt.2.out => yvel
linksp ypos-fb => ddt.3.in
linkps ddt.3.out => yvel-fb

# Скорость и ошибка скорости Z
addf ddt.4                     servo-thread
addf ddt.5                     servo-thread
newsig zvel float
newsig zvel-fb float
linksp zpos-cmd => ddt.4.in
linkps ddt.4.out => zvel
linksp zpos-fb => ddt.5.in
linkps ddt.5.out => zvel-fb
Привязать к ПИД:

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

net xvel                 => pid.x.command
net xvel-fb             =>  pid.x.feedback
net yvel                 => pid.x.command
net yvel-fb             =>  pid.x.feedback
net zvel                 => pid.x.command
net zvel-fb             =>  pid.x.feedback
Теперь в пид будет входными данными:
1) Скорость, которую задает motion со всеми коррекциями на люфты и стандартными ограничениями
2) Ошибка скорости считанная с энкодера
Выходными данными:
1) Сигнал скорость на привод в явном виде.
2) Отклонение скорости от заданной

Правильно?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 09:04
Nick
Lexxa писал(а):newsig xvel float
linkps ddt.1.out => xvel-fb
Это старая форма задания сигналов, сейчас все делается одной функцией net, но в принципе похоже на истину. Только обратную связь я бы все равно делал по положению, иначе будет копиться ошибка, причем я думаю достаточно быстро. Т.е. обратная связь pid правильная, но в axis.motor-fb нужно положение.

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

# Загружаем модуль "производная"
loadrt ddt count=6

# Скорость и ошибка скорости Х
addf ddt.0                     servo-thread
addf ddt.1                     servo-thread
net xpos-cmd => ddt.0.in
net xvel ddt.0.out => => pid.x.command
net xpos-fb xpos-fb => ddt.1.in
net xvel-fb ddt.1.out =>  pid.x.feedback

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 09:48
Lexxa
Не понял. Как будет копиться ошибка?
axis.motor-fb если мне не изменяет память берется с энкодера.
Т.е. вроде как получается, что мухи отдельно, а котлеты отдельно.
motion имеет обратную связь по положению с энкодера и занимается планированием траектории, а PID обратную связь по скорости и регулирует только скорость.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 09:51
Nick
Все правильно. Просто я запутанно написал :).
Главное не забыть в axis.motor-fb энкодер завести.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 09:58
Lexxa
Круто, вот это мне очень нравится

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 10:02
Lexxa

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

net xenable     => pid.x.enable
net xoutput     pid.x.output           => hm2_5i20.0.pwmgen.01.value
#net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command - [b]убираем[/b]
setp    hm2_5i20.0.encoder.01.counter-mode 0
setp    hm2_5i20.0.encoder.01.filter 1
setp    hm2_5i20.0.encoder.01.index-invert 0
setp    hm2_5i20.0.encoder.01.index-mask 0
setp    hm2_5i20.0.encoder.01.index-mask-invert 0
setp    hm2_5i20.0.encoder.01.scale  [AXIS_0]INPUT_SCALE
net xpos-fb               <=  hm2_5i20.0.encoder.01.position
#net xpos-fb               =>  pid.x.feedback - [b]убираем[/b]
net xpos-fb               =>  axis.0.motor-pos-fb
net x-index-enable    axis.0.index-enable  <=>  hm2_5i20.0.encoder.01.index-enable
и вместо убранных

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

loadrt ddt count=6
addf ddt.0                     servo-thread
addf ddt.1                     servo-thread
net xpos-cmd => ddt.0.in
net xvel ddt.0.out => => pid.x.command
net xpos-fb xpos-fb => ddt.1.in
net xvel-fb ddt.1.out =>  pid.x.feedback
И так по всем координатам

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 11:40
Nick
Но, если есть внешний ПИД на приводе , внутренний ПИД EMC2 можно вообще не использовать ;)
Какие у тебя привода?

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 16:44
Lexxa
У меня КЕМРОНы болгарские.
Я хочу оставить ПИД ЕМС2, чтоб он на всякий случай следил и дублировал. Мало ли что.
Хотя попробовать без ПИД ЕМС тоже надо.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 01 фев 2012, 19:04
Nick
А что он сможет сделать? Ну заглючит встроенный ПИД, тогда ПИД от емс загонит на него максимальную нагрузку и хрен знает, что получится в итоге. Пусть лучше на Ferror встанет после такого и все ;).

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 05 фев 2012, 23:32
Lexxa
Как и обещал фотка макета.
Дисплей WH1602C и микроконтроллер Atmega8 служат лишь для пересчета импульсов энкдера и отображения значения перемещения.
На неделе проверим ПЛИСку с сельсином и аналоговой половиной схемы от 16К20Ф3 и соберем макет аналогвой части.
Синий разъем - входные сигналы от аналоговой части.

Re: Модернизация фрезерного 6Р13Ф3-01

Добавлено: 24 фев 2012, 12:20
Lexxa
ПЛИСка воде заработала как надо. Ща сделаем опорные синус/косинус 400 Гц, и соберем аналоговую часть. И подключим резольвер. дело пошло)