16К20Т1 -модернизация с LINUXCNC

Токарные станки с ЧПУ.
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

Собрал всю механику , проблем было много , теперь приступаю к наладке комплексной . В архиве все рабочие файлы , в том числе файлы дополнительной клавиатуры на базе TEENSY .
На сегодня главный вопрос ---- какие правильные настройки ПИД выбрать . В связи с разными моментами инерции осей разница в ПИД параметрах X и Z состовляет 5 !!!! раз .
Какие ПИД параметры используются в других форумчан ?
Вложения
16k20.zip
HAL + INI + XML + ...
(61.06 КБ) 595 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Nick »

Параметры ПИД могут быть разными
А как ты настраивал? Покажи скриншоты из HAL Scope по пинам ferror position и feedback по всем осям.
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

16k20.zip
конфигурация делалась для проверки g95
(68.47 КБ) 522 скачивания
16k20_s_servo.zip
шпиндель как ось , но непонятно какая -серво держит , а на команды не реагирует
(45.06 КБ) 536 скачиваний
Вчерашние файлы . Один вариант с использованием шпинделя в режиме серво , другой в обычном , оборотная подача работает , но не смасштабирована , резьбонарезание не опробовал . Коробка передач шпинделя с разными коэффициентами передачи также работает , но точного поддержания оборотов нет ( +- 1 % ) . С понедельника - резьбонарезание
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Lexxa »

vmarkiv писал(а):+- 1 %
не парься, это нормально.
еще не забудь про spindle.at-speed пин
:bender:
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

Lexxa писал(а):
vmarkiv писал(а):+- 1 %
не парься, это нормально.
еще не забудь про spindle.at-speed пин
+- 1 на шпинделе - хочется лучше , резьба получится кривой и горбатой
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Nick »

По идее, когда ты режешь при помощи G76 все эти проценты будут компенсироваться изменением скорости подачи.

Можешь скинуть скриншоты от halscope?
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

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

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Lexxa »

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

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Nick »

Ждем :)
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

Nick писал(а):Ждем :)
Вот о чем я говорил, при нарезании резьбы LinuxCNC подстраивает подачу под вращение шпинделя:
https://www.youtube.com/watch?v=pxXGN2SVrhU
Да , подстраивает , я это уже практически опробовал , но стружку ещё не дал , а , как говорил бывший генсек - будет стружка-будет песня !
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

Начал настраивать резьбонарезание , вылезли вопросы :
1 . При переключении направления оборотов М3 на М4 отсутствует сигнал
net Sat-speed => motion.spindle-at-speed
хотя брал абсолютное значение оборотов

# ---Setup spindle at speed signals---
net Svel-fb-RPM abs.0.in
net Svel-fb-RPM-abs abs.0.out
net Svel-abs => near.0.in1
net Svel-fb-RPM-abs => near.0.in2 ### в обертах в хвилину
net Sat-speed <= near.0.out
setp near.0.scale 1.5 # приблизительная равность оборотов
на М3 все работает .....
2. При использовании сигнала Svel-fb-RPM сложилось мнение , что где-то теряется точность преобразования - обороты показывают 100.2 или 105.7 ( скачки отображения ) при диапазоне отображения 0-2000 об\мин .
3. При значении MIN_FERROR = 0.3 мне не удается точно спозиционировать привод , привод на конце кадра стоит и думает - ждет помощи молотка и какой то ... ключа на 13 , придется возвращаться к настройке ПИД регулятора .
Вложения
16k20_22_10.hal
(31.01 КБ) 1178 скачиваний
16k20_22_10.ini
(4.7 КБ) 1228 скачиваний
Screenshot-g-code_G76.ngc - AXIS 2.3.5 on 16K20.png (3633 просмотра) <a class='original' href='./download/file.php?id=8644&sid=6d49553e07b6101c904d31ea37b89c26&mode=view' target=_blank>Загрузить оригинал (53.78 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Nick »

vmarkiv писал(а):1 . При переключении направления оборотов М3 на М4 отсутствует сигнал
А что при этом на сигнале Svel-fb-RPM? Какое значение?
vmarkiv писал(а):2. При использовании сигнала Svel-fb-RPM сложилось мнение , что где-то теряется точность преобразования
Какое разрешение энкодера? Возможно погрешность возникает из-за неравномерного поступления сигналов от энкодера, точнее из-зи их дискретизации. Например в последовательных итерациях приходят следующие количества тиков 100 101 100 100 99, тогда вычисленные обороты будут скакать в пределах 1%, можно попробовать прогнать это значение через фильтр.

Кстати, у тебя нет осциллографа, чтобы померить реальный выход с энкодера?
vmarkiv писал(а):3. При значении MIN_FERROR = 0.3 мне не удается точно спозиционировать привод , привод на конце кадра стоит и думает - ждет помощи молотка и какой то ... ключа на 13
А причем здесь MIN_FERROR? По идее, если его превысит то тупо вываливается joint following error и все, тупить не должно, или по крайней мере не должно из-за него тупить :)....
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

Re: 16К20Т1 -модернизация с LINUXCNC

#32 UNREAD_POST Nick » 2 минуты назад

Какое разрешение энкодера?
2048 на оборот , прямо на шпинделе , обороты 100 об\мин . Сигналы с энкодера нормальные . Может это из-за преобразования из формата f32 в обороты ?

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

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Nick »

В каком смысле точность?
На изображении у тебя похоже на скругление траектории, попробуй дописать G61 (Exact path mode).

По умолчанию LinuxCNC будет стараться следовать траектории как можно точнее. Если включен режим G64, то траектория может изменяться для сохранения максимально возможной скорости, но при этом LinuxCNC будет стараться следовать этой траектории.

ЗЫ когда ты уже нас порадуешь скриншотами HALScope ? :) Теперь интересно, как у тебя скачут обороты.
ЗЫЫ по идее 100 об/мин, это примерно 1,5 оборота в секунду, т.е. примерно 3000 тысячи тиков в секунду. По идее количество этих тиков смотриться раз в servo-thread, а это скорее всего 1000 раз в секунду. Итого на каждый замер приходится около 3 тиков (а если считать все фазы, то 3*4 - около 12), так вот, если в разных периодах будет разное количество тиков (а оно будет, т.к. замер берется не согласованно с тиками) получаем 11-12 тиков за замер, т.е. отклонение около 10%. При стандартном замере среднее отклонение будет 5%.

Надо наверное lowpass добавить, но лучше бы посмотреть на график оборотов в halscope :)
Кстати, интерессно rps*60 будет отличаться от rpm или нет?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение nkp »

vmarkiv писал(а):Может это из-за преобразования из формата f32 в обороты ?
а где тут преобразование ? (S32 ??...)

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

loadrt abs count=2 
loadrt lowpass names=lowpass.spindle
loadrt near
loadrt mux4 names=mux4.gear
addf mux4.gear servo-thread
addf abs.0 servo-thread
addf abs.1 servo-thread
addf lowpass.spindle servo-thread
addf near.0 servo-thread
 
net  Svel-cmd  motion.spindle-speed-out  =>  abs.1.in
net  Svel-abs  abs.1.out                 => near.0.in1  
net  Senable        => s8i48o24.pwm.2.enable 

setp     s8i48o24.encoder.2.scale  [SPINDLE_9]INPUT_SCALE
setp     s8i48o24.encoder.2.index-enable TRUE
                  
net Spos-fb   s8i48o24.encoder.2.position  
net Svel-fb   s8i48o24.encoder.2.velocity
   
net Senable         <=  motion.spindle-on
net Scw             <=  motion.spindle-forward
net Sccw            <=  motion.spindle-reverse
net Sbrake          <=  motion.spindle-brake
net Spos-fb         =>  motion.spindle-revs
net Sat-speed       =>  motion.spindle-at-speed
net Svel-fb         =>  motion.spindle-speed-in                
net Sindex-enable  <=>  motion.spindle-index-enable

net Svel-fb-RPM       abs.0.in
net Svel-fb-RPM-abs   abs.0.out

net Svel-fb-RPM-abs  =>   near.0.in2  
net Sat-speed        <=   near.0.out
setp near.0.scale 1.5    

net Gear_selected mux4.gear.out  
net Gear1         mux4.gear.sel0  => s8i48o24.din.42  iopanel.led-42 
net Gear2         mux4.gear.sel1 =>  s8i48o24.din.26  iopanel.led-26 
    
setp mux4.gear.in0 14.08
setp mux4.gear.in2 3.52
setp mux4.gear.in3 1  
setp mux4.gear.in1 1.408
    
net   Svel-cmd      =>    mult2.1.in0   
net   Gear_selected =>    mult2.1.in1   

net    Svel-cmd-mux <= mult2.1.out    
net    Svel-cmd-mux =>             s8i48o24.pwm.2.value 
setp   s8i48o24.encoder.2.scale  [SPINDLE_9]ENCODER_SCALE

net Svel-fb => mult2.0.in0
setp mult2.0.in1 60
net Svel-fb-RPM <= mult2.0.out
ЗЫ на скрине емс 2.3 ??
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение nkp »

Один и тот же параметр задается два раза:

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

setp     s8i48o24.encoder.2.scale           [SPINDLE_9]ENCODER_SCALE
setp     s8i48o24.encoder.2.scale           [SPINDLE_9]INPUT_SCALE
не приводит ли это к неоднозначности в работе??
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение nkp »

как вариант можно еще так попробовать:

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

setp near.0.difference       0.1
net  Svel-fb                 near.0.in1
net  spindle-vel-cmd-rps     motion.spindle-speed-out-rps   near.0.in2
net  Sat-speed               near.0.out
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

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

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение Nick »

nkp писал(а):setp near.0.difference       0.1
А поможет ли? У него разница вроде как больше будет...
ИМХО нужен lowpass с коэффициентом 0.04
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: 16К20Т1 -модернизация с LINUXCNC

Сообщение vmarkiv »

Опробовал и пробовал измерить характеристики каналов скорости сначала шпинделя , а потом и оси X .Скриншоты выкладываю . Видно что скачки в данных не зависят от амплитуды данных , есть некоторая переменная составляющая , я думаю , что версия Ника о считывании несинхронизированных данных наиболее правильная . Если б неравномерность была только в шпинделе - вопрос был бы интересным , но по оси Икс по скорости аналогичная картина . Или , вопрос по передаче данных в моей Плуто-подобной плате .
Вложения
Screenshot pid0error-1.png (3593 просмотра) <a class='original' href='./download/file.php?id=8653&sid=6d49553e07b6101c904d31ea37b89c26&mode=view' target=_blank>Загрузить оригинал (62.86 КБ)</a>
Крутил за вал  энкодера вручную (3593 просмотра) <a class='original' href='./download/file.php?id=8654&sid=6d49553e07b6101c904d31ea37b89c26&mode=view' target=_blank>Загрузить оригинал (60.69 КБ)</a>
Крутил за вал энкодера вручную
Крутил за вал  энкодера вручную (3593 просмотра) <a class='original' href='./download/file.php?id=8655&sid=6d49553e07b6101c904d31ea37b89c26&mode=view' target=_blank>Загрузить оригинал (64.49 КБ)</a>
Крутил за вал энкодера вручную
X в состоянии движения с скоростью 200мм\м (3593 просмотра) <a class='original' href='./download/file.php?id=8656&sid=6d49553e07b6101c904d31ea37b89c26&mode=view' target=_blank>Загрузить оригинал (64.75 КБ)</a>
X в состоянии движения с скоростью 200мм\м
X в состоянии покоя , рукой можно притормозить ось до исчезновения импульсов , но шаг вывода данных скорости был 0 - 1.5 единиц (3593 просмотра) <a class='original' href='./download/file.php?id=8657&sid=6d49553e07b6101c904d31ea37b89c26&mode=view' target=_blank>Загрузить оригинал (63.94 КБ)</a>
X в состоянии покоя , рукой можно притормозить ось до исчезновения импульсов , но шаг вывода данных скорости был 0 - 1.5 единиц
Ответить

Вернуться в «Токарные станки»