Страница 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. все включилось и уже крутится :D
но нужно пойти поработать (я еще и сварщик аргоном ;) ) вечером попробую и отпишусь
сенкс :)

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

Добавлено: 11 янв 2012, 15:43
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

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 отматывать будет :think: ?

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

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

Добавлено: 12 янв 2012, 09:54
NightV
чет фигня какаято :wtf: пока крутики в нуле все стоит, начинаю критить любой (кроме bias, deadband) едет, чем значение больше тем быстрее, пару раз думали что щас вал по Х погнет от скорости, входил в резонанс :shock: (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.
В разумных пределах конечно, чтобы не сломать валы :freak: .

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

Добавлено: 14 янв 2012, 13:34
NightV
Nick писал(а):Ну так и должно быть, чем больше значения - тем быстрее набирается скорость.
а вот и нет, оказыается :? параметрами PID удалось добится СТАБИЛЬНОСТИ работы оси, правда в купе с OUTPUT_SCALE, вот оперируя этими 4 параметрами установил пока одну ось, все FF выставил в ноль, а мах ускорение выставил в ХАЛ, правда когда настраивал крутил просто вал Х, но когда подвесил нагрузку (ОСЬ Z-A) а она килограм 200+ весом, пришлось поубавить пылу с ускорением :hehehe: 4-6 тонный станок дрожал от резких перемещений :shock:

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

Добавлено: 14 янв 2012, 19:17
NightV
интересно... почему в комплектах серв нет шаманского бубна :think:
я понимаю что новые навороченые.. с авто настройкой, но мои драйвы 98 года рождения, в плане человека еще ребенок, в плане технологий уже старец давно играющий в домино с приятелями ;) там кроме крутиков (по мануалу, к двум из них нужно подходить только с асцилографом под рукой) и перемычек под пайку ничего нет, ни RS-232 ни уж темболее USB ;) так как сервы шли с ними на этом станке, решил даже забыть про то чтоб там что-то покрутить... единственное на одном был дохлый тахогенератор 10\1000 v\rpm я смог добыть 60\1000 v\rpm и только перепаяв настроечное сопротивление все ожило, благо формула расчета сопротивления была в мануале.
о чем это я... а.. ну да... поплакаться пришел :D так.... мысли вслух ;)

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

Добавлено: 15 янв 2012, 14:59
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 градусов

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
графики говориш.... я скоро пистолет куплю... ну или ящичек (не меньше!!!!!) тротила... дла НЕГО!!! :freak:
а если честно то запасись терпением :? за ссылку спасибо, эту статью не встречал

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 тонный станок дрожал от резких перемещений
это при какой величине ускорения?