Страница 2 из 15
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 14:50
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 файла.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 14:58
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
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 15:15
Nick
Попробуй вниз добавить waitusr gui0
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 15:35
NightV
ЗАРАБОТАЛА!!! (кот матроскин)
появились пины, и GUI не падает.
добавил еще enable, он у меня висит на 64 пине 7i37TA. все включилось и уже крутится
но нужно пойти поработать (я еще и сварщик аргоном

) вечером попробую и отпишусь
сенкс

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 15:43
NightV
еще попробую добавить ось А.... ток пока незнаю как указать что он крутится на 360 градусов, а потом снова ноль
подскажеш?
это кусок от оси Х, думаю копать здесь
Код: Выделить всё
# 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
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 15:48
Nick
В ини нужно написать ее лимиты и все.
Да, на счет 360 а потом 0, это как, это можно бесконечно крутиться или до 360 доехал, а потом назад. Если бесконечно, то наверное
wrapped_rotary, хотя тут тоже есть ньансы....
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 16:06
NightV
безконечно

есть колонка через которую передаются 4 линии воздуха, 1 вода и 14 линий для эллектрики

за счет нее может крутится бесконечно, есть только HOME.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 11 янв 2012, 16:17
Nick
Просто есть такая штука - вот пишешь ты станку
G1 A350
G1 A10
В какую сторону ему крутиться?
Хотя с другой стороны, тоже после длинной программы
G1 A10000
G0 A0
Он все 10000 отматывать будет

?
Хотя, если у тебя ось бесконечная, то можешь и так и так попробовать - не сломается

.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 12 янв 2012, 09:54
NightV
чет фигня какаято

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

(3 метра длинной, 5см в толщину и висит только на опорных подшипниках)
по поводу оси А, координата по идее указывается в градусах от 0 до 360, но это мои догадки, а по поводу разворота то я гдето вроде видел в емс2 настройку КАК разворачиваться... типа повернуться назад от +350гр до 0гр он поедет назад в - и до 0.... или (как у меня если может вращатся свободно) просто проедет эти 10 гр до 0 как по короткому пути, тоесть должно быть указание "МОЖЕТ" ось вращатся свободно, или "НЕТ" если есть стопоры чтоб кабель на себя не намотал
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 12 янв 2012, 16:09
Nick
NightV писал(а): "МОЖЕТ" ось вращатся свободно, или "НЕТ" если есть стопоры чтоб кабель на себя не намотал
Ну это просто пределами оси задается и все. А вот как ехать - другой вопрос...
NightV писал(а):чет фигня какаято пока крутики в нуле все стоит, начинаю критить любой (кроме bias, deadband) едет, чем значение больше тем быстрее, пару раз думали что щас вал по Х погнет от скорости, входил в резонанс (3 метра длинной, 5см в толщину и висит только на опорных подшипниках)
Ну так и должно быть, чем больше значения - тем быстрее набирается скорость. Главный параметр для станка following error. Если он большой - будут неточности в детали (заносы). Т.е. твоя задача - определить параметры таким образом, чтобы станок ездил быстро, но при этом сохранялся маленький following error.
В разумных пределах конечно, чтобы не сломать валы

.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 14 янв 2012, 13:34
NightV
Nick писал(а):Ну так и должно быть, чем больше значения - тем быстрее набирается скорость.
а вот и нет, оказыается

параметрами PID удалось добится СТАБИЛЬНОСТИ работы оси, правда в купе с OUTPUT_SCALE, вот оперируя этими 4 параметрами установил пока одну ось, все FF выставил в ноль, а мах ускорение выставил в ХАЛ, правда когда настраивал крутил просто вал Х, но когда подвесил нагрузку (ОСЬ Z-A) а она килограм 200+ весом, пришлось поубавить пылу с ускорением

4-6 тонный станок дрожал от резких перемещений

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 14 янв 2012, 19:17
NightV
интересно... почему в комплектах серв нет шаманского бубна
я понимаю что новые навороченые.. с авто настройкой, но мои драйвы 98 года рождения, в плане человека еще ребенок, в плане технологий уже старец давно играющий в домино с приятелями

там кроме крутиков (по мануалу, к двум из них нужно подходить только с асцилографом под рукой) и перемычек под пайку ничего нет, ни RS-232 ни уж темболее USB

так как сервы шли с ними на этом станке, решил даже забыть про то чтоб там что-то покрутить... единственное на одном был дохлый тахогенератор 10\1000 v\rpm я смог добыть 60\1000 v\rpm и только перепаяв настроечное сопротивление все ожило, благо формула расчета сопротивления была в мануале.
о чем это я... а.. ну да... поплакаться пришел

так.... мысли вслух

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 15 янв 2012, 14:59
NightV
вот я млин лопух

промучился целый вечер.. на малых перемещения (0.001 - 1мм) бегает, выше срывается при торможении.... и оказывается начал со слишком малых велечин ferror 0.1 и min_ferror 0.01

на сайте linuxcnc вроде ставят ferror 1
а еще забыл про "хал асцилоскоп"... утром попробовал его, вроде рисует графики как в примерах (с ошибками настройки разумеется) вечером погоняю с ним и с более высокими значениями ferror..
ктонить может разжевать про значения ferror и min_ferror, какие значения допустимы?
Nick писал(а):
Хотя с другой стороны, тоже после длинной программы
G1 A10000
G0 A0
Он все 10000 отматывать будет
запущу ось А попробую погонять с "wrapped_rotary" по идее с этим параметром ось становится со шкалой от 0 и до 359.999 градусов
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 15 янв 2012, 23:40
Lexxa
Мне скоро тоже предстоит PID настраивать.
Нужно инструмент анализа какой-то организовать, вслепую можно год настраивать.
Вот нормальная статья вроде:
http://roboforum.ru/wiki/%D0%9F%D0%B5%D ... 0%D1%85%22
По идее конечной величиной PID регулирования является линейная/круговая скорость перемещения рабочих органов станка. Как бы нам вывести график скорости для его оценки и подборки ПИД параметров?
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 00:44
NightV
графики говориш.... я скоро пистолет куплю... ну или ящичек (не меньше!!!!!) тротила... дла НЕГО!!!

а если честно то запасись терпением

за ссылку спасибо, эту статью не встречал
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 00:57
Lexxa
может Ник знает, как вытащить график скорости??
Постановка задачи примерно такая:
За перемещение L записать график изменения скорости от времени с возможностью сохранения.
Мне кажется нам нужен пин moution.curren-vel. Можно даже тупо екселевский файл писать, и потом прям в экселе построить график.
P.S. Один график инженеру дает информации больше, чем целый параграф.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 01:16
NightV
я не инженер, я практик

, ту утилиту мы сним запустили.. но она не работала так как надо.... я решил опять метод "проб-ошибок" использовать...
можно использовать ххх.encoder.хх.velocity , тоесть velocity вместо delta из примеров
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 01:43
Lexxa
Кстати, ты где про концевики вычитал?
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 02:10
NightV
пробовал на своем

а про софт-лимит Ник напомнил
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 02:24
PKM
NightV писал(а):4-6 тонный станок дрожал от резких перемещений
это при какой величине ускорения?