Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 30 ноя 2016, 16:09
_not
может так больше ничего не нашел
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Узнал у производителя контроллера, по умолчанию такого функционала нет.. о_О.vovafed писал(а):_not может так больше ничего не нашел
Нельзя сказать входу, что датчик нормально замкнутый (с терминологией у меня проблемы)botcman писал(а):Какого функционала нет?
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
# My driver
loadrt to_pci
loadrt pid names=pid.x,pid.y,pid.z,pid.a
# ################################################
# THREADS
# ################################################
addf to_pci.1.update servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.a.do-pid-calcs servo-thread
net x-enable to_pci.1.pins.pin-00-out
net a-enable to_pci.1.pins.pin-01-out
net y-enable to_pci.1.pins.pin-02-out
net z-enable to_pci.1.pins.pin-03-out
# --- HOME-X ---
#net home-x <= to_pci.1.pins.pin-24-in
# --- HOME-Y ---
net home-y <= to_pci.1.pins.pin-25-in
# --- HOME-Z ---
net home-z <= to_pci.1.pins.pin-26-in
########### egantry ###########################
loadrt egantry count=1 personality=2
addf egantry.0 servo-thread
setp egantry.0.align-vel 50
setp egantry.0.align-acc 100
setp egantry.0.align-hyst 0.05
setp egantry.0.align-hyst 0.05
#setp egantry.0.joint.01.correct 1
# position & feedback
net x-pos-cmd egantry.0.axis.motor-pos-cmd => axis.0.motor-pos-cmd
net x-pos-fb egantry.0.axis.motor-pos-fb => axis.0.motor-pos-fb
net x1-pos-cmd egantry.0.joint.00.pos-cmd => pid.x.command
net x1-pos-fb egantry.0.joint.00.pos-fb <= pid.x.feedback
net x2-pos-cmd egantry.0.joint.01.pos-cmd => pid.a.command
net x2-pos-fb egantry.0.joint.01.pos-fb <= pid.a.feedback
# enables
net x-enable egantry.0.axis.amp-enable <= axis.0.amp-enable-out
net x1-enable egantry.0.joint.00.enable => pid.x.enable
net x2-enable egantry.0.joint.01.enable => pid.a.enable
# index_ENC
net x-index-enable egantry.0.axis.index-enable <= axis.0.index-enable
net x1-index-enable egantry.0.joint.00.index-enable => pid.x.index-enable
net x2-index-enable egantry.0.joint.01.index-enable => pid.a.index-enable
# home switches & othrs
net x-home-sw egantry.0.axis.home-sw => axis.0.home-sw-in
net x1-home-sw egantry.0.joint.00.home-sw <= to_pci.1.pins.pin-24-in
#net x2-home-sw egantry.0.joint.01.home-sw <= to_pci.1.pins.pin-30-in
net x-home-state axis.0.home-state => egantry.0.axis.home-state
net x-homed axis.0.homed => egantry.0.axis.homed
########## egantry ###########################
#*******************
# AXIS X
#*******************
setp pid.x.Pgain [AXIS_0]P
setp pid.x.Igain [AXIS_0]I
setp pid.x.Dgain [AXIS_0]D
setp pid.x.bias [AXIS_0]BIAS
setp pid.x.FF0 [AXIS_0]FF0
setp pid.x.FF1 [AXIS_0]FF1
setp pid.x.FF2 [AXIS_0]FF2
setp pid.x.deadband [AXIS_0]DEADBAND
setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT
net x-vel-cmd => pid.x.command-deriv
net x-output => pid.x.output
# ---PWM Generator signals/setup---
setp to_pci.1.out_scale0 1
net x-enable axis.0.amp-enable-out
net x-enable => to_pci.1.pins.pin-00-out
net x-output => to_pci.1.dcontrol0
# --------fb--------------
setp to_pci.1.feedback.enc_scale0 2000
net x1-pos-fb => to_pci.1.feedback.encoder0
net x-index-enable axis.0.index-enable <=> to_pci.1.feedback.index_en0
#*******************
# AXIS X1
#*******************
setp pid.a.Pgain [AXIS_0]P
setp pid.a.Igain [AXIS_0]I
setp pid.a.Dgain [AXIS_0]D
setp pid.a.bias [AXIS_0]BIAS
setp pid.a.FF0 [AXIS_0]FF0
setp pid.a.FF1 [AXIS_0]FF1
setp pid.a.FF2 [AXIS_0]FF2
setp pid.a.deadband [AXIS_0]DEADBAND
setp pid.a.maxoutput [AXIS_0]MAX_OUTPUT
#net a-index-enable <=> pid.a.index-enable
#net a-enable => pid.a.enable
#net a-pos-cmd => pid.a.command
net a-vel-cmd => pid.a.command-deriv
#net a-pos-fb => pid.a.feedback
net a-output => pid.a.output
# ---PWM Generator signals/setup---
setp to_pci.1.out_scale1 1
net a-enable => to_pci.1.pins.pin-01-out
net a-output => to_pci.1.dcontrol1
# --------fb--------------
setp to_pci.1.feedback.enc_scale1 2000
#net a-pos-fb <= to_pci.1.feedback.encoder1
net x2-pos-fb => to_pci.1.feedback.encoder1
net a-index-enable axis.3.index-enable <=> to_pci.1.feedback.index_en1
#*******************
# AXIS Y
#*******************
setp pid.y.Pgain [AXIS_0]P
setp pid.y.Igain [AXIS_0]I
setp pid.y.Dgain [AXIS_0]D
setp pid.y.bias [AXIS_0]BIAS
setp pid.y.FF0 [AXIS_0]FF0
setp pid.y.FF1 [AXIS_0]FF1
setp pid.y.FF2 [AXIS_0]FF2
setp pid.y.deadband [AXIS_0]DEADBAND
setp pid.y.maxoutput [AXIS_0]MAX_OUTPUT
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
# ---PWM Generator signals/setup---
setp to_pci.1.out_scale2 1
net y-enable axis.1.amp-enable-out
net y-enable => to_pci.1.pins.pin-02-out
net y-output => to_pci.1.dcontrol2
# --------fb--------------
setp to_pci.1.feedback.enc_scale2 2000
net y-pos-fb <= to_pci.1.feedback.encoder2
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> to_pci.1.feedback.index_en2
net min-home-y => axis.1.home-sw-in
#net min-home-y => axis.2.neg-lim-sw-in
net y-pos-limit => axis.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
setp pid.z.Pgain [AXIS_0]P
setp pid.z.Igain [AXIS_0]I
setp pid.z.Dgain [AXIS_0]D
setp pid.z.bias [AXIS_0]BIAS
setp pid.z.FF0 [AXIS_0]FF0
setp pid.z.FF1 [AXIS_0]FF1
setp pid.z.FF2 [AXIS_0]FF2
setp pid.z.deadband [AXIS_0]DEADBAND
setp pid.z.maxoutput [AXIS_0]MAX_OUTPUT
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-vel-cmd => pid.z.command-deriv
net z-pos-fb => pid.z.feedback
net z-output => pid.z.output
# ---PWM Generator signals/setup---
setp to_pci.1.out_scale3 1
net z-enable axis.2.amp-enable-out
net z-enable => to_pci.1.pins.pin-03-out
net z-output => to_pci.1.dcontrol3
# --------fb--------------
setp to_pci.1.feedback.enc_scale3 2000
net z-pos-fb <= to_pci.1.feedback.encoder3
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> to_pci.1.feedback.index_en3
net min-home-z => axis.2.home-sw-in
#net min-home-z => axis.2.neg-lim-sw-in
net z-pos-limit => axis.2.pos-lim-sw-in
Так у тебя ПИДы осей не настроены... ... от слова совсем.MGG писал(а): Постоянно вылетаю с Joint following error
Это факт.MGG писал(а): Рано я пить завязал
Это поправил уже, просто у меня уже столько версий собранных по крупицам в слепую, что попутал с версией. Этот момент уже работает. Крутится, рассогласования пока нетUAVpilot писал(а):Аналог тут не при чём. При таком подходе и с цифрой не заработает...
В описании egantry чётко сказано, что все одноимённые пины должны быть подключены. Тот, кто считает себя умнее автора обречён на проблемы...
Детально не втуплял, а из того, что бросилось в глаза: pid.a.enable никуда не подключен - т.е. pid.a вообще не работает. При любом движении Х привод А остаётся на месте, получается рассогласование и egantry передаёт его в axis, а тот сравнивает его с FERROR...
pid.x и pid.a тоже придётся настраивать, причём оба одновременно...
Linux - дружественная ОС, только она разборчива в выборе друзей.frezeryga писал(а):Значит надо бросать линукс он для особой касты.
А если и там в настройки абы как потыкать и они не заработают правильно, то их тоже бросать? Сколько они там стоят?..frezeryga писал(а):И брать клоп или муснс
От уж не соглашусь. И уверен что со мной солидарен не один форумчанен. Клоп запускается и настраивается довольно просто. Для его базового использования знание программирования вообще не требуется. Достаточно вдумчиво прочитать тему Саши про ввод в эксплуатацию к-флопа.MGG писал(а):Клоп такая же беда, как и линукс
я там выше писал, чтоUAVpilot писал(а):Linux - дружественная ОС, только она разборчива в выборе друзей.
Не любит тех, кто не читая мануалов начинает тыкать в неё чем попало
И да, к этму моменту все заработалоMGG писал(а):Все же кажется какой-то косяк в конфиге у меня,
на ремни есть мануалы производителей, который говорят с каким усилием надо натягивать. ремни омнибелт например почитайте каталогиMGG писал(а):Кстати, дабы ремни не свистели сильно, нужно натягивать сильнее?