Страница 6 из 46
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 15:23
MGG
PKM писал(а):Надо потренироваться на сервоприводе Y, а потом эти параметры перенести в X1 X2.
Благодарю! Именно так сейчас и делаю, сделал конфиг с одним мотором, его и мучаю.
FERROR = 0.01
MIN_FERROR = 1
Пока до такого домучал, но это конено оч много
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 15:27
PKM
Соотношение обратное, ну и 0.01 слишком мало!
Теперь ясно почему ошибка следования.
Поставьте так
FERROR = 1
MIN_FERROR = 0.1
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 15:34
MGG
Попробую, ошибся, но ошибки феррор в таком виде нет сейчас, даже на скорости 15м/м.
Поменял местами, все больше не шевелюсь, сразу в ошибку падаю.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 15:45
MGG
http://www.cnc-club.ru/forum/viewtopic. ... 0&p=236853
у нас тоже есть на русском
Только я ни так не эдак не очень понял. Во втором варианте, как считать U ?
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 18:10
MGG
PKM писал(а):FERROR = 1
MIN_FERROR = 0.1
Добился при таких ограничениях в 2.5м/м, дальше ни в какую не могу продвинуться, и как то резвинько я это все делал, но тут решил в gedit скрестить 2 окна и все зависло нахрен. Вопрос, есть ли в линухе хот кеи для вызова диспетчера задач или аналога?
Да и на какие показатели вообще равняться ?
https://www.youtube.com/watch?v=_Ij27_TFKcI (на видео попал главный приемщик)
так же хоумится по Х через раз, и при нажатии-отжатии ф2, одна сторона всегда смещается. Часто наезжая на датчик, одна ось начинает на всей скорости пытаться ехать вперед, потом назад, потом вторая за ней повторяет и заканчивается это все перегрузом одной из серв, а бывает и двух. Тут не знаю на что грешить, попробую пид отстроить, потом с этим разбираться, хотя чую дело не в ПИД.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 18:18
PKM
Я не пойму, почему ездит туда и обратно, такого быть не должно. Думаю дело в настройке egantry. И отсюда же скачки при включении.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 19:22
Serg
PKM писал(а):Я не пойму, почему ездит туда и обратно, такого быть не должно. Думаю дело в настройке egantry. И отсюда же скачки при включении.
Я описывал причину в предистории создания egantry... egantry и был сделан, чтобы избежать всего этого.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 19:34
MGG
Как правило в портале всегда есть внутренние напряжения, от колебаний температуры, от выравнивания при хомлении и т.п.
Если после хомления (и работы) понадобится выключить станок (по F2) или пришлось нажать E-STOP, то сервы выходят из режима удержания позиции и внутренние напряжения портала приводят к тому, что его края немного сдвигаются друг относительно друга. Т.к. для получения положения обратной связи для всей оси используется фидбэк только одного мотора, то возникает разница между положениями двух моторов. Теперь если попробовать снова включить станок в режиме world, или после включения переключится в world, gantrykins за первый-же сервоцикл изменит заданную позицию второго мотора на текущую позицию первого (согласно его фидбэка) и PID второго мотора отреагирует на это согласно своему предназначению - с фактически максимальными скоростю и ускорением постарается повернуть мотор в заданную позицию... На практике портал улетает куда попало с жутким грохотом
ну ноги то отсюда растут насколько я понял. А как бороться не понял. перечитываю всю тему 10 раз. Да и у меня в начале при хомлении вообще ад и израиль на оси Х, с бешеной скоростью они начинают пытаться "выравниваться" (хз что делают, ездят рывками туда обратно)
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 19:36
PKM
Без текущей конфигурации станка остается гадание на кофейной гуще...
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 19:37
Serg
egantry.txt писал(а):
egantry.N.joint.MM.max_velocity float in (default: 1e20)
Максимальная скорость привода
egantry.N.joint.MM.max_acceleration float in (default: 1e20)
Максимальное ускорение привода
...
egantry.N.align-vel float in (default: 1e20)
Скорость выравнивания приводов
egantry.N.align-acc float in (default: 1e20)
Ускорение выравнивания приводов
egantry.txt писал(а): Если после найденых начал (homing) оси, если какой-либо из приводов будет сдвинут
внешним воздействием при выключенном станке на величину, превышающую значение
egantry.N.align-hyst, то при последующем включении компонент произведёт плавное
выравнивание положения приводов со скоростью и ускорением egantry.N.align-vel и
egantry.N.align-acc.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 19:46
MGG
Это я понял, проблема в том, что внешнего воздействия нет. Тут я попробую поднять значение egantry.N.align-hyst и посмотреть, будут ли изменения. Засада начинается еще в процессе хомелиня.
Или получается, что пока моторы ищут Z метку у них происходит рассогласование больше чем прописано egantry.N.align-hyst и из-за этого они начинают чехарду ?
ХАЛ сейчас такой, хотя могут быть уже не точности, от станка ушел.
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt not count=3
# 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
addf not.0 servo-thread
addf not.1 servo-thread
addf not.2 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-24-in-n
net x-joint-home-sw egantry.0.joint.00.home-sw egantry.0.joint.01.home-sw <= to_pci.1.pins.pin-24-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
net x-vel-fb => pid.x.feedback-deriv
# ---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 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-vel-cmd => pid.a.command-deriv
net a-output => pid.a.output
net a-vel-fb => pid.a.feedback-deriv
net a-enable axis.3.amp-enable-out
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 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
net y-pos-cmd axis.1.motor-pos-cmd
# --------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 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
net z-pos-cmd axis.2.motor-pos-cmd
# --------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 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
# ---HALUI signals---
#net joint-select-a halui.joint.0.select
#net x-is-homed halui.joint.0.is-homed
#net jog-x-pos halui.jog.0.plus
#net jog-x-neg halui.jog.0.minus
#net jog-x-analog halui.jog.0.analog
#net joint-select-b halui.joint.1.select
#net y-is-homed halui.joint.1.is-homed
#net jog-y-pos halui.jog.1.plus
#net jog-y-neg halui.jog.1.minus
#net jog-y-analog halui.jog.1.analog
#net joint-select-c halui.joint.2.select
#net z-is-homed halui.joint.2.is-homed
#net jog-z-pos halui.jog.2.plus
#net jog-z-neg halui.jog.2.minus
#net jog-z-analog halui.jog.2.analog
#net joint-select-d halui.joint.3.select
#net a-is-homed halui.joint.3.is-homed
#net jog-a-pos halui.jog.3.plus
#net jog-a-neg halui.jog.3.minus
#net jog-a-analog halui.jog.3.analog
#net jog-selected-pos halui.jog.selected.plus
#net jog-selected-neg halui.jog.selected.minus
#net spindle-manual-cw halui.spindle.forward
#net spindle-manual-ccw halui.spindle.reverse
#net spindle-manual-stop halui.spindle.stop
#net machine-is-on halui.machine.is-on
#net jog-speed halui.jog-speed
#net MDI-mode halui.mode.is-mdi
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in to_pci.1.enable_drive
# ---manual tool change signals---
Еще такой вопрос, подскажите:
net x-vel-cmd => pid.x.command-deriv
net x-vel-fb => pid.x.feedback-deriv
Это для чего, и на что влияет? поиск вразумительного ничего не дал
egantry.N.align-vel float in (default: 1e20)
Скорость выравнивания приводов
egantry.N.align-acc float in (default: 1e20)
Ускорение выравнивания приводов
у меня прописано, но скорость явно отличается от прописанной:
setp egantry.0.align-vel 50
setp egantry.0.align-acc 100
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 19:53
PKM
Сбивает с толку путаница а - х - х1 - х2.
Лучше все правильно переименовать х - х1 - х2, может и вылезет ошибка...
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 20:12
Serg
MGG писал(а):Это я понял, проблема в том, что внешнего воздействия нет. Тут я попробую поднять значение egantry.N.align-hyst и посмотреть, будут ли изменения. Засада начинается еще в процессе хомелиня.
Или получается, что пока моторы ищут Z метку у них происходит рассогласование больше чем прописано egantry.N.align-hyst и из-за этого они начинают чехарду ?
Нет. egantry.N.align* действуют только в момент изменения сигнала enable с 0 на 1.
Порядок настройки двух сервоприводов на одной оси:
1. Сначала настраивается сбрасываются настройки обоих PID в дефолт (P=1, I=0, D=0).
2. Приводы с помощью eganry одной оси. Если не знаете хорошо как оно работает внутри, то нужно соединить ВСЕ одноимённые пины:
egantry.txt писал(а): Пины egantry.N.axis.* соединяются с аналогичными пинами компонента axis.N.
Пины egantry.N.joint.MM.* соединяются с аналогичными пинами таких компонентов как pid.N, stepgen.N.
3. Убедиться что что оба привода примерно одинаково ездят в режиме ручного перемещения (от кнопок).
4. Ограничить скорости и ускорения приводов реальными значениями (по дефолту там везде бесконечность)
5. Попробовать отхомить ось... Если все пины соединили как надо, то всё получится.
6. Настроить PID с помощью штатного механизма AXIS и халскопа. Параметры PID должны испорльзоваться одни и те-же для обоих приводов.
MGG писал(а):Еще такой вопрос, подскажите:
net x-vel-cmd => pid.x.command-deriv
net x-vel-fb => pid.x.feedback-deriv
Это для чего, и на что влияет? поиск вразумительного ничего не дал
pid(9) писал(а):pid.N.command-deriv float in
The derivative of the desired (commanded) value for the control loop. If no signal is connected then the derivative will be estimated numerically.
pid.N.feedback-deriv float in
The derivative of the actual (feedback) value for the control loop. If no signal is connected then the derivative will be estimated numerically. When the feedback is from a quantized position source (e.g., encoder feedback position), behavior of the D term can be improved by using a better velocity estimate here, such as the velocity output of encoder(9) or hostmot2(9).
Это задание скорости и обратная связь по скорости. В управлении приводами не используется.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 20:29
MGG
UAVpilot писал(а):3. Убедиться что что оба привода примерно одинаково ездят в режиме ручного перемещения (от кнопок).
От кнопок ездят без проблем. И даже пару раз получилось отхомиться, даже задание выполняет без проблем.
Завтра все в этой последовательности попробую. Спасибо!
Еще такой вопрос, в INI у подчиненной оси надо оставлять параметры хомления? Или закоментировать их?
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 23:49
ultrus
MGG писал(а):Завтра все в этой последовательности попробую. Спасибо!
Есть одна фигня в этой жизни, всё бы было хорошо, если бы баба не купила попрося.
На шаговиках давно бы уже без проблем пылил...
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 29 янв 2017, 23:57
MGG
ultrus писал(а):Есть одна фигня в этой жизни, всё бы было хорошо, если бы баба не купила попрося.
На шаговиках давно бы уже без проблем пылил...
А на фанерном да на подшипниках, так еще бы на порядок сэкономил в деньгах!
Я больше скажу, и на степ-дир все было бы гораздо проще, но мы не ищем легких путей
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 30 янв 2017, 00:25
Serg
MGG писал(а):Еще такой вопрос, в INI у подчиненной оси надо оставлять параметры хомления? Или закоментировать их?
В случае с egantry нет подчинённых осей, есть только параллельные приводы.

Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 31 янв 2017, 21:21
MGG
https://youtu.be/XlV-PR9wdco
Вот такая вот беда при хомлений, сначало феррор, при том что стоят оба значения по 10, а после повторного пуска, станок пытается свернуть сам себя
С кнопок все шевелится без проблем, за это расстояние (поиск метки) я не понимаю как он умудряется падать в ошибку.
P-1 I-0 D-0
Вспомнил, хоумится выходило, только когда в ини, все настройки хомления на второй оси "закоменчены", но тогда походу они и не ищет метку свою или хз... чувствую себя северным жильцом, на которых чукчи ездят.
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 31 янв 2017, 22:13
NKS
С кнопок управляется потому что сервы успевают нагнать ошибку в 10 указанных единиц, это можно посмотреть, включив hal-meter, а ещё лучше хал-скоп. После повторного включения, сервы пытаются вернуть заданное положение-отсюда и рывок. P=1 мало. Опять-же включи хал-метр и выведи показания феррор. Увеличивай Р до достижения приемлемой ошибки, пока без фанатизма, иначе можешь сильно "раскачать".
Re: Портальник по мягким металлам по проекту Фрезеряги.
Добавлено: 31 янв 2017, 23:05
Птица-феникс =)
мне кажется пора все это выкинуть/обоссать/сжечь/еще раз обоссать, затушив тлеющие головешки/ и купить Mycnc et-10, не?)
там хоть онлайн поддержка в скайпе на родном-русском.
на днях вот запустил как раз на ет-10, весь станок из готовых деталей + настройка софта и отладка = 2недели :
https://www.youtube.com/watch?v=15D-0BnFN5Q&t=31s