Всего понемногу (реанимация 4 axis гравера по стеклу)

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

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Nick »

хмм... включается и через секунду выключается...
[19240.734787] hm2/hm2_5i23.0: registered
[19240.734792] hm2_5i23.0: initialized AnyIO board at 0000:05:00.0
[19241.469651] hm2_5i23.0: dropping AnyIO board at 0000:05:00.0
[19241.469659] hm2/hm2_5i23.0: unregistered

Скинь еще раз последнюю версию своего hal файла.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

вроде ничего больше не менял
config.hal (для просмотра содержимого нажмите на ссылку)

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

loadrt threads name1=servo-thread period1=1000000
loadrt pid num_chan=1

loadrt hostmot2
loadrt hm2_pci config="firmware=hm2/5i23/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
setp     hm2_5i23.0.pwmgen.pwm_frequency 60000
setp     hm2_5i23.0.watchdog.timeout_ns 10000000

loadrt siggen
loadrt line4to2 count=2
loadrt mux4 count=2
loadrt toggle
loadrt passthru count=8
loadrt reciprocal

loadusr -Wn gui0 pyvcp -c gui0 servo-tuning-gui.xml

# ################################################
# THREADS
# ################################################

addf hm2_5i23.0.read servo-thread
addf line4to2.0 servo-thread
addf line4to2.1 servo-thread
addf mux4.0 servo-thread
addf mux4.1 servo-thread
addf pid.0.do-pid-calcs servo-thread
addf hm2_5i23.0.write servo-thread
addf hm2_5i23.0.pet_watchdog servo-thread
addf siggen.0.update servo-thread
addf toggle.0 servo-thread
addf passthru.0 servo-thread
addf passthru.1 servo-thread
addf passthru.2 servo-thread
addf passthru.3 servo-thread
addf passthru.4 servo-thread
addf passthru.5 servo-thread
addf passthru.6 servo-thread
addf passthru.7 servo-thread
addf reciprocal.0 servo-thread

# ################
# Siggen
# ################

net period <= gui0.period-f => reciprocal.0.in

net amplitude <= gui0.amplitude-f => siggen.0.amplitude
net frequency <= reciprocal.0.out => siggen.0.frequency

net square-signal <= siggen.0.square => mux4.0.in0
net triangle-signal <= siggen.0.triangle => mux4.0.in1
net sine-signal <= siggen.0.sine => mux4.0.in2

net square-select <= gui0.waveform-selection.Square => line4to2.0.in0
net triangle-select <= gui0.waveform-selection.Triangle => line4to2.0.in1
net sine-select <= gui0.waveform-selection.Sine => line4to2.0.in2

net mux0-select-0 <= line4to2.0.out0 => mux4.0.sel0
net mux0-select-1 <= line4to2.0.out1 => mux4.0.sel1

# ################
# Enable
# ################

net momentary-enable <= gui0.enable => toggle.0.in
net global-enable <= toggle.0.out => pid.0.enable

# ################
# PID
# ################

net p-gain-in <= gui0.Pgain => passthru.0.in 
net p-gain-out <= passthru.0.out => pid.0.Pgain

net i-gain-in <= gui0.Igain => passthru.1.in 
net i-gain-out <= passthru.1.out => pid.0.Igain

net d-gain-in <= gui0.Dgain => passthru.2.in 
net d-gain-out <= passthru.2.out => pid.0.Dgain

net pid-bias-in <= gui0.bias => passthru.3.in
net pid-bias-out <= passthru.3.out => pid.0.bias

net pid-ff0-in <= gui0.ff0 => passthru.4.in
net pid-ff0-out <= passthru.4.out => => pid.0.FF0

net pid-ff1-in <= gui0.ff1 => passthru.5.in
net pid-ff1-out <= passthru.5.out => => pid.0.FF1

net pid-ff2-in <= gui0.ff2 => passthru.6.in
net pid-ff2-out <= passthru.6.out => => pid.0.FF2

net pid-deadband-in <= gui0.deadband => passthru.7.in
net pid-deadband-out <= passthru.7.out => pid.0.deadband

setp pid.0.maxoutput 1.0000

net pid-command <= mux4.0.out => pid.0.command
net pid-output <= pid.0.output
net pid-feedback <= mux4.1.out => pid.0.feedback

net x-axis-feedback => mux4.1.in0
net y-axis-feedback => mux4.1.in1
net z-axis-feedback => mux4.1.in2

net x-axis-select <= gui0.axis-selection.X => line4to2.1.in0
net y-axis-select <= gui0.axis-selection.Y => line4to2.1.in1
net z-axis-select <= gui0.axis-selection.Z => line4to2.1.in2

net mux1-select-0 <= line4to2.1.out0 => mux4.1.sel0
net mux1-select-1 <= line4to2.1.out1 => mux4.1.sel1


# ################
# X [0] Axis
# ################

net x-axis-select => hm2_5i23.0.pwmgen.00.enable

# encoder feedback
setp hm2_5i23.0.encoder.00.counter-mode 0
setp hm2_5i23.0.encoder.00.filter 1
setp hm2_5i23.0.encoder.00.index-invert 0
setp hm2_5i23.0.encoder.00.index-mask 0
setp hm2_5i23.0.encoder.00.index-mask-invert 0
setp hm2_5i23.0.encoder.00.scale  80572.1899401

net x-axis-feedback <= hm2_5i23.0.encoder.00.position

# position command signals
setp hm2_5i23.0.pwmgen.00.output-type 1 #pwm on pin1, dir on pin2
setp hm2_5i23.0.pwmgen.00.scale 1.0000

net pid-output => hm2_5i23.0.pwmgen.00.value


# ################
# Y [1] Axis
# ################

net y-axis-select => hm2_5i23.0.pwmgen.01.enable

# encoder feedback
setp hm2_5i23.0.encoder.01.counter-mode 0
setp hm2_5i23.0.encoder.01.filter 1
setp hm2_5i23.0.encoder.01.index-invert 0
setp hm2_5i23.0.encoder.01.index-mask 0
setp hm2_5i23.0.encoder.01.index-mask-invert 0
setp  hm2_5i23.0.encoder.01.scale  80572.1899401

net y-axis-feedback <= hm2_5i23.0.encoder.01.position

# position command signals
setp hm2_5i23.0.pwmgen.01.output-type 1 #pwm on pin1, dir on pin2
setp hm2_5i23.0.pwmgen.01.scale 1.0000

net pid-output => hm2_5i23.0.pwmgen.01.value


# ################
# Z [2] Axis
# ################

net z-axis-select => hm2_5i23.0.pwmgen.02.enable

# encoder feedback
setp hm2_5i23.0.encoder.02.counter-mode 0
setp hm2_5i23.0.encoder.02.filter 1
setp hm2_5i23.0.encoder.02.index-invert 0
setp hm2_5i23.0.encoder.02.index-mask 0
setp hm2_5i23.0.encoder.02.index-mask-invert 0
setp hm2_5i23.0.encoder.02.scale  80572.1899401

net z-axis-feedback <= hm2_5i23.0.encoder.02.position

# position command signals
setp hm2_5i23.0.pwmgen.02.output-type 1 #pwm on pin1, dir on pin2
setp hm2_5i23.0.pwmgen.02.scale 1.0000

net pid-output => hm2_5i23.0.pwmgen.02.value

# ################
# Let's Go!
# ################

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

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Nick »

Попробуй вниз добавить waitusr gui0
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

ЗАРАБОТАЛА!!! (кот матроскин)
появились пины, и GUI не падает.
добавил еще enable, он у меня висит на 64 пине 7i37TA. все включилось и уже крутится :D
но нужно пойти поработать (я еще и сварщик аргоном ;) ) вечером попробую и отпишусь
сенкс :)
Всё просто! если знаешь КАК!
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

еще попробую добавить ось А.... ток пока незнаю как указать что он крутится на 360 градусов, а потом снова ноль

подскажеш?
это кусок от оси Х, думаю копать здесь :think:

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

# encoder feedback
setp hm2_5i23.0.encoder.00.counter-mode 0
setp hm2_5i23.0.encoder.00.filter 1
setp hm2_5i23.0.encoder.00.index-invert 0
setp hm2_5i23.0.encoder.00.index-mask 0
setp hm2_5i23.0.encoder.00.index-mask-invert 0
setp hm2_5i23.0.encoder.00.scale  80572.1899401

net x-axis-feedback <= hm2_5i23.0.encoder.00.position
Всё просто! если знаешь КАК!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Nick »

В ини нужно написать ее лимиты и все.
Да, на счет 360 а потом 0, это как, это можно бесконечно крутиться или до 360 доехал, а потом назад. Если бесконечно, то наверное wrapped_rotary, хотя тут тоже есть ньансы....
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

безконечно :) есть колонка через которую передаются 4 линии воздуха, 1 вода и 14 линий для эллектрики ;) за счет нее может крутится бесконечно, есть только HOME.
Всё просто! если знаешь КАК!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Nick »

Просто есть такая штука - вот пишешь ты станку
G1 A350
G1 A10
В какую сторону ему крутиться?

Хотя с другой стороны, тоже после длинной программы
G1 A10000
G0 A0
Он все 10000 отматывать будет :think: ?

Хотя, если у тебя ось бесконечная, то можешь и так и так попробовать - не сломается :freak:.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

чет фигня какаято :wtf: пока крутики в нуле все стоит, начинаю критить любой (кроме bias, deadband) едет, чем значение больше тем быстрее, пару раз думали что щас вал по Х погнет от скорости, входил в резонанс :shock: (3 метра длинной, 5см в толщину и висит только на опорных подшипниках)

по поводу оси А, координата по идее указывается в градусах от 0 до 360, но это мои догадки, а по поводу разворота то я гдето вроде видел в емс2 настройку КАК разворачиваться... типа повернуться назад от +350гр до 0гр он поедет назад в - и до 0.... или (как у меня если может вращатся свободно) просто проедет эти 10 гр до 0 как по короткому пути, тоесть должно быть указание "МОЖЕТ" ось вращатся свободно, или "НЕТ" если есть стопоры чтоб кабель на себя не намотал
Всё просто! если знаешь КАК!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Nick »

NightV писал(а): "МОЖЕТ" ось вращатся свободно, или "НЕТ" если есть стопоры чтоб кабель на себя не намотал
Ну это просто пределами оси задается и все. А вот как ехать - другой вопрос...
NightV писал(а):чет фигня какаято пока крутики в нуле все стоит, начинаю критить любой (кроме bias, deadband) едет, чем значение больше тем быстрее, пару раз думали что щас вал по Х погнет от скорости, входил в резонанс (3 метра длинной, 5см в толщину и висит только на опорных подшипниках)
Ну так и должно быть, чем больше значения - тем быстрее набирается скорость. Главный параметр для станка following error. Если он большой - будут неточности в детали (заносы). Т.е. твоя задача - определить параметры таким образом, чтобы станок ездил быстро, но при этом сохранялся маленький following error.
В разумных пределах конечно, чтобы не сломать валы :freak: .
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

Nick писал(а):Ну так и должно быть, чем больше значения - тем быстрее набирается скорость.
а вот и нет, оказыается :? параметрами PID удалось добится СТАБИЛЬНОСТИ работы оси, правда в купе с OUTPUT_SCALE, вот оперируя этими 4 параметрами установил пока одну ось, все FF выставил в ноль, а мах ускорение выставил в ХАЛ, правда когда настраивал крутил просто вал Х, но когда подвесил нагрузку (ОСЬ Z-A) а она килограм 200+ весом, пришлось поубавить пылу с ускорением :hehehe: 4-6 тонный станок дрожал от резких перемещений :shock:
Всё просто! если знаешь КАК!
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

интересно... почему в комплектах серв нет шаманского бубна :think:
я понимаю что новые навороченые.. с авто настройкой, но мои драйвы 98 года рождения, в плане человека еще ребенок, в плане технологий уже старец давно играющий в домино с приятелями ;) там кроме крутиков (по мануалу, к двум из них нужно подходить только с асцилографом под рукой) и перемычек под пайку ничего нет, ни RS-232 ни уж темболее USB ;) так как сервы шли с ними на этом станке, решил даже забыть про то чтоб там что-то покрутить... единственное на одном был дохлый тахогенератор 10\1000 v\rpm я смог добыть 60\1000 v\rpm и только перепаяв настроечное сопротивление все ожило, благо формула расчета сопротивления была в мануале.
о чем это я... а.. ну да... поплакаться пришел :D так.... мысли вслух ;)
Всё просто! если знаешь КАК!
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

вот я млин лопух ;) промучился целый вечер.. на малых перемещения (0.001 - 1мм) бегает, выше срывается при торможении.... и оказывается начал со слишком малых велечин ferror 0.1 и min_ferror 0.01 :think: на сайте linuxcnc вроде ставят ferror 1
а еще забыл про "хал асцилоскоп"... утром попробовал его, вроде рисует графики как в примерах (с ошибками настройки разумеется) вечером погоняю с ним и с более высокими значениями ferror..
ктонить может разжевать про значения ferror и min_ferror, какие значения допустимы?
Nick писал(а): Хотя с другой стороны, тоже после длинной программы
G1 A10000
G0 A0
Он все 10000 отматывать будет
запущу ось А попробую погонять с "wrapped_rotary" по идее с этим параметром ось становится со шкалой от 0 и до 359.999 градусов
Всё просто! если знаешь КАК!
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Lexxa »

Мне скоро тоже предстоит PID настраивать.
Нужно инструмент анализа какой-то организовать, вслепую можно год настраивать.
Вот нормальная статья вроде:
http://roboforum.ru/wiki/%D0%9F%D0%B5%D ... 0%D1%85%22
По идее конечной величиной PID регулирования является линейная/круговая скорость перемещения рабочих органов станка. Как бы нам вывести график скорости для его оценки и подборки ПИД параметров?
:bender:
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

графики говориш.... я скоро пистолет куплю... ну или ящичек (не меньше!!!!!) тротила... дла НЕГО!!! :freak:
а если честно то запасись терпением :? за ссылку спасибо, эту статью не встречал
Всё просто! если знаешь КАК!
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Lexxa »

может Ник знает, как вытащить график скорости??
Постановка задачи примерно такая:
За перемещение L записать график изменения скорости от времени с возможностью сохранения.
Мне кажется нам нужен пин moution.curren-vel. Можно даже тупо екселевский файл писать, и потом прям в экселе построить график.

P.S. Один график инженеру дает информации больше, чем целый параграф.
:bender:
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

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

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение Lexxa »

Кстати, ты где про концевики вычитал?
:bender:
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение NightV »

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

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)

Сообщение PKM »

NightV писал(а):4-6 тонный станок дрожал от резких перемещений
это при какой величине ускорения?
Ответить

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