Страница 3 из 15
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 02:49
NightV
кажется было 900

это ладно... сегодня я чет намутил с ПИД и нажал переместится 10мм

компутер пока прикреплен на временом столике к одной из колон станка струбциной... он вошел в такой резонанс что я не мог попасть мышкой в СТОП! точнее целился одной рукой а другой держал монитор! жахнул ладонью по клаве примерно в район где F1 и F2... все встало... думаю завтра прикрутить к столу на всякий лучай E-Stop

мда... а случаи оказываются бывают разные

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 03:00
NightV
после войны с Х потом еще Y настраивать... там передача через ремень такая-же но стол весом с пол тонны

чувствую если не осилю принципы ПИД на Х то с Y одно из двух.. или я всетаки вьеду КАК настраивать... или стол вьедет в меня

хотя ссылочка от Lexxa довольно занимательна

вчитываюсь перед завтрашним "турниром"
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 10:44
Nick
Lexxa писал(а):может Ник знает, как вытащить график скорости??
Ник знает

.
Очень просто в EMC2 есть такая штука - halscope, это что-то типа осциллографа. В нем можно строить графики значений любых пинов. Находится в верхнем меню.
Для настройки PID очень одним из самых важных параметров является тот самый Ferror. При настройке наверняка будут полезны pid.command, pid.error, motion.current-vel. Также скорость конкретной оси можно получить из ее положения и компонента ddt (dx/dt - производная положения = скорость) (ускорение = dv/dt = d
2x/d
2t, и т.д.). Компонент ddt нужно прописать в hal (или в консоле с halcmd):
loadrt ddt count=1
addf ddt.0 base-thread
net velx axis.0.motor-pos-fb ddt.0.in
а скорость можно будет снимать с пина ddt.0.out.
NightV писал(а):вот я млин лопух промучился целый вечер.. на малых перемещения (0.001 - 1мм) бегает, выше срывается при торможении.... и оказывается начал со слишком малых велечин ferror 0.1 и min_ferror 0.01 на сайте linuxcnc вроде ставят ferror 1
ferror - это максимальная ошибка следования траектории. Вообще мне кажется странным значения ferror равным 1 (это по идее 1 мм). Хотя, учитывая вес твоего станка и то, что ты его пытаешься гонять на больших ускорениях (за счет pid) это можно понять.
min_ferror это тоже самое, что и ferror, но при маленьких скоростях. Если в ini указаны оба ferror и min_ferror, то значение ferror для вычисления отклонения от траектории будет пропорционально скорости. Вот формула:
ferror_calc = (ferror-min_ferror)*v/[TRAJ]MAX_VELOCITY + min_ferror.
Т.е. прямая от min_ferror при скорости близкой к 0 и ferror при скорости равной [TRAJ]MAX_VELOCITY.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 11:20
Lexxa
Ferror работает на всех скоростях?
Можно ли отключить ferror например на быстром ходу, потому что при обработке отклонение от траектории на 1 мм это ни в какие ворота не лезет.
Поскольку например алюминий можно обрабатывать достаточно быстро.
По идее min_ferror надо бы ставить меньше чем дискрет перемещения, т.е. в случае пром. станков это хотябы 5 мкм.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 11:42
Nick
Lexxa писал(а):Можно ли отключить ferror например на быстром ходу, потому что при обработке отклонение от траектории на 1 мм это ни в какие ворота не лезет.
На быстром ходу в смысле G0?
Lexxa писал(а):По идее min_ferror надо бы ставить меньше чем дискрет перемещения, т.е. в случае пром. станков это хотябы 5 мкм.
Нет. Наоборот больше, т.е. если дискретность станка 5мкм, он не сможет следовать траектории точнее, чем 5 мкм. В принципе, ferror не может быть очень маленьким, каким бы не был станок, у него все равно будут вибрации, и прочие прелести. Суть настройки PID и выбора скорости резания - свести значение отклонения от траектории к минимальным значениям. Большая скорость = большие ускорения на резких поворотах = либо отклонения от траетории, либо замедления = меньшая скорость.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 11:51
Lexxa
Понятно, ну например G0 или при ручных перемещениях
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 12:11
Nick
Хм.... наверное можно поменять его при в параметре оси через mux2, на вход подать значение halui ручного режима. Но вообще лучше просто сделать по-больше ferror.
Суть такая: на больших скоростях при большом ferror ошибки не будет. При уменьшении скорости актуальный ferror будет уменьшаться пропорционально скорости. Т.е. при небольших скоростях будем получать хорошее значение ferror. Почему нет смысла ставить маленький ferror? Да потому, что EMC2 не учитывает его значение при планировке траектории. Т.к. физически не может этого сделать (ошибка следования может возникнуть от любого внешнего значения). Поэтому ferror это только информационная величина.
Ее можно отследить после выполнения обработки. Если очень хочется можно сделать триггер, который будет отслеживать превышение любого заданного ferror при обработке и выдавать ошибку.
Изменить реальное значение отклонения от траектории можно только изменениями скорости (или других параметров) обработки или настройки железа станка.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 12:20
Lexxa
Nick писал(а):EMC2 не учитывает его значение при планировке траектории
тогда вопросов нет к ferror, непонятно только зачем оно вообще нужно, но как говорится если на скорость не влияет, то...
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 12:29
Nick
Нужно, чтобы при возникновении нештатной ситуации станок остановился, например фреза стукнулась в материал, или с движком что-то не так, или задан такой режим, что станок не справился. Или ключ забыл с детали убрать

.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 16 янв 2012, 12:49
Lexxa
спасиб)
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 09:42
NightV
таак... дело сдвинулось с места, получилось настроить оси X Y до значений ferror 0.007 в пике, на любых скоростях и любых перемещениях, выше 0.007 не поднимается. сегодня помучаю Z и A

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 09:57
Lexxa
Методом тыка? Мануал оказался полезным?
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 10:29
NightV
мануал всегда полезен если что-то непонятно

но и без халсцилоскопа никуда, очень еще оказался полезным параметр FF1 чтобы сгладить ferrror,
FF1 получился 0.0045-0.0049, меньше кривая ferror ползет вверх от нуля(своего нуля) больше вниз,
короче щас пики балансируют вокруг нуля и максимальные иногда 0.0065-0.0068.
но что самое интересное настройки PID на осях получились разные, движки и драйвы одинаковые, висят на осях однинаково, разница лиш в вессе что они тягают.
вечером выложу скрины
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 11:05
NightV
вспомнил фразу которая когдато (мягко выражаясь.. так-как прозвучало в тему) мне очень понравилась ( до коликов

) "Read The FuХХing Manual"
в нашем случае можно перевести так "читай, читай... много блин читай"

и делай выводы из прочтеного...
хатя обидно, ПИД настраивать же не каждый день и даже не раз в пару месяцев, а когда млин понадобится следующий раз то это будет очень не скоро, и уже успееш все млин забыть что и как
и будет опять "читай, читай... много блин читай"

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 11:24
Nick
NightV писал(а):но что самое интересное настройки PID на осях получились разные, движки и драйвы одинаковые, висят на осях однинаково, разница лиш в вессе что они тягают.
Так и должно быть. Системы управляемые pid разные = параметры должны быть разными. Значит все правильно сделал

. Вот если было бы наоборот - тогда надо было бы задуматься

.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 11:36
Lexxa
Да, может мы тут накидаем како-нить более менее обобщенный мануальчик, как настраивать в ЕМС этот ПИД.
А то реально пока второй раз придется, 10 раз свё забудется. Я поэтому в своей ветке более менее подробно пишу всё))
Потому что приходишь на работу и уже не помнится как там и что по соединениям и схеме.
Днем я удаленно копаюсь, а вечером за компом.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 14:38
NightV
думаю по оконцовке открою новую тему со статьей, правда я еще не писал статей на ЧПУшную тематику, но думаю должно получится.
хотя имея опыт настройки всего одного станка, чейто я замахнулся
хотя принцип почти понятен, еще нуна разобраться для статьи за ЧТО конкретно отвечают эти параметры
OUTPUT_SCALE (я все настроил со значениями -1 на Х, и 1 на Y, на на настройки влияют координально, нужно выставлять сначала этот параметр а вот уже ПОТОМ приступать к PID)
MAX_OUTPUT (особых перемен в поведении осей не заметил)
DEADBAND (оставил как есть, особых перемен в поведении осей не заметил, по умолчанию стоит 0.0001 вроде)
BIAS (как я понял используется редко и то только для hm2, тоесть Mesa)
FF0 (что-то делает но только в худшую сторону, чем меньше значение тем стабильниее, по оконцовке оставил 0)
FF2 (немного помог когда настраивал Y, сильно в него не углублялся)
сегодня еще посижу с X Y.. есть пики до 0.007 при разгоне и торможении, если получится от них ихбавится вообще будет шоколад
примерно как здесь
вот что про этот скрин пишут
Here is with more gain, going as far as we can go with just P gain. When the P is as high as you can get without instability (using D conservatively until you have the highest P possible) you need to start adding FF1 and FF2 to improve the error during constant-speed movement and also at the accelerations.
вот какраз с FF2 сильно не ковырялся, и по ходу именно он атвечает за ускорение и торможение

Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 17:14
Lexxa
OUTPUT_SCALE - масштаб так сказать. Отношение одного оборта енкодера к единице перемещения стола. Грубо говоря на сколько переедет стол за один оборот энкодера.
MAX_OUTPUT - максимальная амплитуза Uзадания. Например если ы хочешь не +-10В, а +-5.
BIAS - смещение. Это добавление постоянной составляющей в Uзадания. Например если ты её укажешь в 1В, то вместо 3В на выходе будешь иметь 3+1, или 2В, если укжешь смещение отрицательным. Эту штуку можно использовать как тормоз оси Z, если она под своей тяжестью ползет вниз.
DEADBAND насколько я понял это люфт органов перемещения.
FF0 это вроде бы параметр, похожий на расстояние. Не ясно на какое расстояние.
FF1 это скорось прохождения этого расстояния - первая производная от FF0.
FF2 - вторая производная от FF2 - ускорение.
Не ясно что за расстояние, и скорость и ускорение чего.
Может скорость наростания Uзадания?
Формулу бы найти по которой оно форимируется, хотя бы обобщенную.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 17:32
Nick
Lexxa писал(а):DEADBAND насколько я понял это люфт органов перемещения.
Это "люфт ошибки". Т.е. если pid.error по модулю меньше DEADBAND, то pid.error будет считаться 0 и пид не будет стараться компенсировать этот люфт.
Его значение в любом случае должно быть немного больше половины деления энкодера, иначе пид никогда не успокоится

.
Lexxa писал(а):FF0 это вроде бы параметр, похожий на расстояние. Не ясно на какое расстояние.
FF1 это скорось прохождения этого расстояния - первая производная от FF0.
FF2 - вторая производная от FF2 - ускорение.
А вот тут все зависит от контролируемой величины.
FF0 - умножается на commanded value (скорость или положение). Для положения должен быть равен 0 (практически всегда), для скорости может компенсировать силу трения или обратную ЭДС движка.
FF1 - умножается на первую производную заданной величины. Для скорости - будет пропорционален ускорению и может компенсировать силы инерции. Для положения тоже что и FF0 для скорости.
FF2 - умножается на вторую производную заданной величины. Для положения то же, что и FF1 для скорости. Для скорости обычно ставят в 0.
Re: Всего понемногу (реанимация 4 axis гравера по стеклу)
Добавлено: 17 янв 2012, 17:43
Nick
А формула выглядит так

:
Плюс из абсолютного значения e(t) сразу вычитается значение pid.bias. (e(t) это pid.error).