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

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

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

Сообщение PKM »

Пресловутый ПИД :hehehe:
Тогда следующий вопрос: чем не устраивает стандартный ПИД?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение PKM »

ПИД минимизирует ошибку слежения, т.е. величину отклонения от заданной траектории. Чем это не устраивает?

И кстати, производную ПИД сам считает, если не подавать ее на вход отдельно.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Мы вроде в параллельной ветке это обсуждаем)
Я хочу чтобы на вход ПИД-регулятора ЕМС поступала скорость, и соответственно обратную связь я тоже хочу в виде скорости.
с обратной связью проблем нет, а вот с command ...
Мне не нравится что слишком мало уровней квантования у модуля ddc
:bender:
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

Lexxa писал(а):Я хочу чтобы на вход ПИД-регулятора ЕМС поступала скорость
Так это как раз сопряжено с выбросами и т.д. Обычно регулирование по скорости используется для шпинделей, зачем это здесь - не пойму.
Lexxa писал(а):слишком мало уровней квантования у модуля ddc
Допустим, при нулевой скорости за 0,001с положение изменилось на 0,005мм - сразу выходит скорость 5 мм/с.
Думаю, что для уменьшения квантования нужно увеличивать разрядность энкодера.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение Nick »

Там вроде у encoder.velocity какая-то хитрая штука была:
Во, смотри какая вещь есть:
encoder.N.position-interpolated float out
Position in scaled units, interpolated between encoder counts. Only valid when velocity is approximately constant and above min-velocity-estimate. Do not use for position control.

и вот это еще:
encoder.N.min-velocity-estimate float rw (default: 1.0)
Determine the minimum true velocity magnitude at which velocity will be estimated as nonzero and postition-interpolated will be interpolated. The units of min-velocity-estimate are the same as the units of velocity. Setting this parameter too low will cause it to take a long time for velocity to go to 0 after encoder pulses have stopped arriving.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

может попробовать из использовать, правда на маленьких скоростях они тоже будут лажать...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение Nick »

Lexxa писал(а):Вопрос с комманд.
А и правда сделай скрин halscope ddt от command. Хотя он наверное должен плавнее меняться чем ddt от encoder.position, т.к. в нем не должно быть такого шага дискретности как у энкодера.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

сделаю вечером
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

продолжу. Приехали 5i20 c 7i77. Каким кабелем соединяются 7i77 и 5i25? 1 пин с первым, второй со вторым и т.д.?
Во всех промышленных ЧПУ есть крутилка для регулирования подачи от максимальной от нуля до максимальной скорости.
Я так понимаю, что в Axis это "Изменить подачу", верно?
Как её прицепить к внешнему энкодеру, например? Т.е. так чтобы при его вращении этот ползунок менял положение, будто его крутишь мышкой.
В последствии хочется вообще убрать эти крутилики мышкой из Axis и сделать через энкодеры регулировку подачи регулировку оборотов шпинделя.
Не въезжаю, зачем нужны ползунки "Скорость перемещений" и "Максимальная скорость"?
По сути своей ползунок "Изменить подачу" должен отрабатывать все эти функции в зависимости от режима. В ручном - скорость перемещения по одной оси, в автомате/покадровом/mdi - скорость скорость подачи.
Зачем менять максимальную скорость ползунком?
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Lexxa писал(а):Я так понимаю, что в Axis это "Изменить подачу", верно?
Да, с учетом, что это для перемещений G01-G03, т.е. не для холостых.
Lexxa писал(а):Как её прицепить к внешнему энкодеру, например?
Пины halui
halui.feed-override.count-enable (bit, in) - must be true for counts to work.
halui.feed-override.counts (s32, in) - counts from an encoder to change FO
halui.feed-override.decrease (bit, in) - pin for decreasing the FO (-=scale)
halui.feed-override.increase (bit, in) - pin for increasing the FO (+=scale)
halui.feed-override.scale (float, in) - pin for setting the scale for increase and decrease
halui.feed-override.value (float, out) - current FO value
Lexxa писал(а):Не въезжаю, зачем нужны ползунки "Скорость перемещений" и "Максимальная скорость"?
Вот эти как раз для холостых перемещений "Максимальная скорость" и джоггинга "Скорость перемещений"
Lexxa писал(а):Зачем менять максимальную скорость ползунком?
Для... для.... в общем хз, но может пригодиться :)

ЗЫ сорри, что не сразу ответил - открыл сообщение дома и не успел ответить, а на работе оно в непрочитанных уже не появилось...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Да, я так и думал, максимальная скорость ползунок лишний. надо б его вообще выкинуть нафик
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

Хочу управлять одним энкодером и реулировкой подачи (AUTO, MDI), и регулировку инкрементальных перемещений в режиме jog.
Не догоняю, как в зависимости от режима менять выход, шкалу у энкодера. через mux2?
предполагаю сделать так:
Железо:
1) Трехпозиционный тумблер: X/Y/Z
2) Пятипозиционный тумблер: JOINT/JOG/AUTOMDI/HOME
3) 2 энкодера - один на подачу/инкремент, второй на регулировку скорости
4) кнопки +, -, быстро
5) Кнопки Старт/пауза, стоп, покадрово
6) Кнопки Шпиндель вперед, Шпиндель стоп, Шпиндель назад
7) тумблеры Стоп подача и выключить СОЖ
8) Кнопка быстрый ход
HAL (наброски):

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

# Подключение кнопок и тумблеров
net button_plus   <= parport.0.pin-10-in-not
net button_minus  <= parport.0.pin-11-in-not
net button_start  <= parport.0.pin-9-in-not
net button_stop  <= parport.0.pin-8-in-not
net button_step  <= parport.0.pin-7-in-not
net button_cw  <= parport.0.pin-6-in-not
net button_spindle-stop  <= parport.0.pin-5-in-not
net button_ccw  <= parport.0.pin-4-in-not
net button_feed-hold  <= parport.0.pin-3-in-not
net button_collant-off  <= parport.0.pin-2-in-not
net button_quick  <= parport.0.pin-1-in-not

net select_x             3_тумблер.пин0 => halui.joint.0.select
net select_y             3_тумблер.пин1 => halui.joint.1.select
net select_z             3_тумблер.пин2 => halui.joint.2.select

net net joint-mode    4_тумблер.пин0  => halui.mode.manual
net net auto-mode    4_тумблер.пин1 => halui.mode.auto
net net mdi-mode     4_тумблер.пин2 => halui.mode.mdi
net net home-mode  4_тумблер.пин3   => halui.mode.joint
net home_mode                       => halui.mode.home

# Подключение энкодеров
# Энкодер для регулировки скорости ручных перемещений
net FO_MV_A      encoder.0.phase-A  <= parport.0.pin-12-in-not
net FO_MV_B      encoder.0.phase-B  <= parport.0.pin-13-in-not
setp encoder.0.x4-mode 0
net encoder-vel <= encoder.0.counts
# Энкодер для регулировки скорости подачи и инкремента шагового режима
net FO_MV_A      encoder.1.phase-A  <= parport.0.pin-14-in-not
net FO_MV_B      encoder.1.phase-B  <= parport.0.pin-15-in-not
setp encoder.1.x4-mode 0
net encoder-comm <= encoder.1.counts

#Режим home. 
#Режим home выполняется при установленном четырехпозиционном переключателе в режим home. 
#Выбранная трехпозиционным переключателем ось двигается в направлении концевика home по нажатию кнопки
#а) + для оси Х
#б) + для оси Y
#в) - для оси Z
net net home-mode  4_тумблер.пин3 => halui.mode.joint
net home_mode                     => halui.mode.home
#X
net homing_0          button_plus => and2.0.in0  
net home-mode                     => and2.0.in1
net homming_x and2.0.out => halui.joint.selected.home
#Y
net homing_1          button_plus => and2.1.in0  
net home-mode                     => and2.1.in1
net homming_x and2.1.out => halui.joint.selected.home
#Z
net homing_2          button_minus => and2.2.in0  
net home-mode                     => and2.2.in1
net homming_x and2.2.out => halui.joint.selected.home
# Всё в home последовательно, согласно [INI]HOME_SEQUENCE
net home-all                     => and2.3.out
net home-mode                    => and2.3.in0
net button_start                 => and2.3.in1

#Режимы joint (непрерывное движение) и jog (шаговое движение)
#Режим задается пятипозиционным переключателем JOG/JOINT/AUTO/MDI/HOME
#Скорость задается энкодером encoder-vel
#Ось выбирается трехпозиционным переключателем
# 1) непрерывное движение с заданной скоростью 
net encoder-vel => halui.jog-speed
# а) в положительном направлении
net joint-mode => and2.4.in0
net button_plus => and2.4.in1
net jointing_plus and2.4.out => halui.selected.plus
# б) в отрицательном направлении
net joint-mode => and2.5.in0
net button_minus => and2.5.in1
net jointing_minus and2.5.out => halui.selected.minus

#2) дискретное перемещение с заданной скоростью на заданное расстояние в нужном направлении.
# а) в положительном направлении
net jog-mode => and2.6.in0
net button_plus => and2.6.in1
net jogging_plus and2.6.out => halui.selected.increment-plus
# б) в отрицательном направлении
net joint-mode => and2.7.in0
net button_minus => and2.7.in1
net jointing_minus and2.7.out => halui.selected.increment-minus
#
# Здесь прописать переключение выхода энкодера с регулировки подачи на регулировку шагов.
parport просто в качестве примера для себя обозначил
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Lexxa писал(а): как в зависимости от режима менять выход, шкалу у энкодера
можно попробовать с constant ну и например с AND
-------------
вот здесь хал смотрел? (это не к вопросу шкалы)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

не понял как там сделано.
сам думаю так.
Загрузить 2 энкодера.
На вход лпт подать сигналы А и В этого энкодера.
encoder.0.phase-A и encoder.1.phase-A развязать через and2, типа так

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

net FO_MV_A <= parport.0.pin-14-in-not
net FO_MW_A  => and2.7.in0  
net mode-auto => and2.7.in1
net enc-0-a and2.7.out  => encoder.0.phase-A

net FO_MV_A => and2.8.in0
net jog-mode => and2.8.in1
net enc-1-a and2.8.out => encoder.1.phase-A
И так работать будет, а вот как использовать энкодер с платы меса?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

это "перекидка" энкодера
а что по constant думаешь?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

ага, с MW ты прально заметил
со всей логикой типа and or xor not есть беда, они работают с переменными типа bit, а надо float
constant потом для разруливания пинами типа энкодер.scale или прикручивания кнопки БХ
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Я вот думаю, а стоит ли всем этим перегружать hal?
Может сделать компонент на Python который будет отслеживать переключение тумблеров и перекидывать сигналы от энкодера через
halcmd unlinkp
и
halcmd net
?
Ответить

Вернуться в «Фрезерные станки по металлам»