Тогда следующий вопрос: чем не устраивает стандартный ПИД?
Модернизация фрезерного 6Р13Ф3-01
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Пресловутый ПИД 
Тогда следующий вопрос: чем не устраивает стандартный ПИД?
Тогда следующий вопрос: чем не устраивает стандартный ПИД?
- PKM
- Почётный участник

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

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Так это как раз сопряжено с выбросами и т.д. Обычно регулирование по скорости используется для шпинделей, зачем это здесь - не пойму.Lexxa писал(а):Я хочу чтобы на вход ПИД-регулятора ЕМС поступала скорость
Допустим, при нулевой скорости за 0,001с положение изменилось на 0,005мм - сразу выходит скорость 5 мм/с.Lexxa писал(а):слишком мало уровней квантования у модуля ddc
Думаю, что для уменьшения квантования нужно увеличивать разрядность энкодера.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Там вроде у 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.
Во, смотри какая вещь есть:
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
может попробовать из использовать, правда на маленьких скоростях они тоже будут лажать...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Меня обратная связь по скорости меньге всего интересует, поскольку есть encoder.velocity и я естественно возьму её.
Вопрос с комманд.
Вопрос с комманд.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
А и правда сделай скрин halscope ddt от command. Хотя он наверное должен плавнее меняться чем ddt от encoder.position, т.к. в нем не должно быть такого шага дискретности как у энкодера.Lexxa писал(а):Вопрос с комманд.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
продолжу. Приехали 5i20 c 7i77. Каким кабелем соединяются 7i77 и 5i25? 1 пин с первым, второй со вторым и т.д.?
Во всех промышленных ЧПУ есть крутилка для регулирования подачи от максимальной от нуля до максимальной скорости.
Я так понимаю, что в Axis это "Изменить подачу", верно?
Как её прицепить к внешнему энкодеру, например? Т.е. так чтобы при его вращении этот ползунок менял положение, будто его крутишь мышкой.
В последствии хочется вообще убрать эти крутилики мышкой из Axis и сделать через энкодеры регулировку подачи регулировку оборотов шпинделя.
Не въезжаю, зачем нужны ползунки "Скорость перемещений" и "Максимальная скорость"?
По сути своей ползунок "Изменить подачу" должен отрабатывать все эти функции в зависимости от режима. В ручном - скорость перемещения по одной оси, в автомате/покадровом/mdi - скорость скорость подачи.
Зачем менять максимальную скорость ползунком?
Во всех промышленных ЧПУ есть крутилка для регулирования подачи от максимальной от нуля до максимальной скорости.
Я так понимаю, что в Axis это "Изменить подачу", верно?
Как её прицепить к внешнему энкодеру, например? Т.е. так чтобы при его вращении этот ползунок менял положение, будто его крутишь мышкой.
В последствии хочется вообще убрать эти крутилики мышкой из Axis и сделать через энкодеры регулировку подачи регулировку оборотов шпинделя.
Не въезжаю, зачем нужны ползунки "Скорость перемещений" и "Максимальная скорость"?
По сути своей ползунок "Изменить подачу" должен отрабатывать все эти функции в зависимости от режима. В ручном - скорость перемещения по одной оси, в автомате/покадровом/mdi - скорость скорость подачи.
Зачем менять максимальную скорость ползунком?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Да, с учетом, что это для перемещений G01-G03, т.е. не для холостых.Lexxa писал(а):Я так понимаю, что в Axis это "Изменить подачу", верно?
Пины haluiLexxa писал(а):Как её прицепить к внешнему энкодеру, например?
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
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Хочу управлять одним энкодером и реулировкой подачи (AUTO, MDI), и регулировку инкрементальных перемещений в режиме jog.
Не догоняю, как в зависимости от режима менять выход, шкалу у энкодера. через mux2?
предполагаю сделать так:
Железо:
1) Трехпозиционный тумблер: X/Y/Z
2) Пятипозиционный тумблер: JOINT/JOG/AUTOMDI/HOME
3) 2 энкодера - один на подачу/инкремент, второй на регулировку скорости
4) кнопки +, -, быстро
5) Кнопки Старт/пауза, стоп, покадрово
6) Кнопки Шпиндель вперед, Шпиндель стоп, Шпиндель назад
7) тумблеры Стоп подача и выключить СОЖ
8) Кнопка быстрый ход
HAL (наброски):
parport просто в качестве примера для себя обозначил
Не догоняю, как в зависимости от режима менять выход, шкалу у энкодера. через 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
#
# Здесь прописать переключение выхода энкодера с регулировки подачи на регулировку шагов.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
не понял как там сделано.
сам думаю так.
Загрузить 2 энкодера.
На вход лпт подать сигналы А и В этого энкодера.
encoder.0.phase-A и encoder.1.phase-A развязать через and2, типа так
И так работать будет, а вот как использовать энкодер с платы меса?
сам думаю так.
Загрузить 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
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
это "перекидка" энкодера
а что по constant думаешь?
а что по constant думаешь?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
ага, с MW ты прально заметил
со всей логикой типа and or xor not есть беда, они работают с переменными типа bit, а надо float
constant потом для разруливания пинами типа энкодер.scale или прикручивания кнопки БХ
со всей логикой типа and or xor not есть беда, они работают с переменными типа bit, а надо float
constant потом для разруливания пинами типа энкодер.scale или прикручивания кнопки БХ
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Модернизация фрезерного 6Р13Ф3-01
Я вот думаю, а стоит ли всем этим перегружать hal?
Может сделать компонент на Python который будет отслеживать переключение тумблеров и перекидывать сигналы от энкодера через
halcmd unlinkp
и
halcmd net
?
Может сделать компонент на Python который будет отслеживать переключение тумблеров и перекидывать сигналы от энкодера через
halcmd unlinkp
и
halcmd net
?
