Страница 10 из 48

[WIKI] FAQ по EMC2 LinuxCNC

Добавлено: 25 окт 2010, 09:53
Nick
FAQ переехал в wiki: FAQ по LinuxCNC
Вы можете помочь нам в оформлении статьи. Для внесения изменений надо залогинится в вики (логин и пароль такие же, как на форуме).
Как внести изменения в статью в wiki
(для просмотра содержимого нажмите на ссылку)
Q: EMC2 выдает такую ошибку: "Unexpected realtime delay: chek dmesg for details.". Что делать?
A: Это означает, что один из интервалов задержки стал больше Base period. Нужно увеличить base period в настройках EMC2. Запустите Приложения -> EMC2 -> Latеncy Test, попробуйте нагрузить компьютер, откройте несколько окон веб-браузера, запустите фильм, поставьте копироваться большой файл, по-перемещайте окна по экрану. После всего этого смотрим в окно Latency Test и запоминаем параметр Max Jitter для Base thread (если вы используете серво двигатели, Вам понадобятся оба параметра). Запускаем Приложения -> EMC2 -> Stepconf и в окне настройки конфигурации указываем Base period Maximum Jitter.

Q: При выполнении поиска начал осей (homing) EMC2 выдает ошибку "joint limit error"
A: Наверняка Вы используете в качестве датчика начала (home) один из концевых переключателей оси. Для корректного выполнения поиска в этом случае нужно:
  • Чтобы Home Location не было равно Home Switch Location. Т.к. после процедуры поиска начала станок остановится в положении Home Location, и оно не должно вызывать срабатывания концевого датчика оси.
  • Чтобы в конфигурационном файле в разделе описания оси присутствовала строчка "HOME_IGNORE_LIMITS = YES".
Q: Как запустить станок избегая процедуру поиска начал (homing)? Возникает ошибка: "Не могу исполнить программу если не найдены начала" ("Can't run a program when not homed").
A: EMC2 отказывается выполнять программы до тех пор пока не найдены начала осей потому, что EMC2 должен точно знать в каком положении находится станок, чтобы не дать ему выехать за пределы осей. Настоятельно рекомендую установить концевики и делать поиск нулей при каждом запуске EMC2 (при наличии концевиков это делается нажатием одной клавиши). Если концевиков нет, начала оси можно выставлять вручную.

Если совсем не хочется выставлять начала, то можно в файле конфигурации в раздел [TRAJ] нужно добавить строчку: "NO_FORCE_HOMING = 1" и EMC2 не будет выдавать эту ошибку. Но в этом случае нужно быть особенно внимательным следя за работой станка, т.к. EMC2 не сможет контролировать пределы осей и появится вероятность их превышения, что может привести к поломке станка :attention:!

Q: LinuxCNC не запускается, выдает ошибку RTAI[hal]: ERROR, LOCAL APIC CONFIGURED BUT NOT AVAILABLE/ENABLED.
A: Проблема с установкой EMC2 #48
Это незавершенный раздел, Вы можете помочь в его оформлении.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 05 мар 2012, 23:09
zilk
РАЗОБРАЛСЯ!!

Nick, надо записать в анналы! :freak:
У меня есть основной ХАЛ, в котором описаны настройки всех осей, шпинделя и пр. halui. А также есть custom.hal, в котором сконфигурирован пульт с MPG. Так вот, в custom.hal я догружал (loadrt, addf) компоненты логики, энкодер и пр., необходимые для пульта - вот ЭТО И ДАВАЛО ОШИБКУ при загрузке, хотя при этом все работало!!
Я перенес всю загрузку компонентов в начало основного хала - и все заработало как надо! Т.е. ВСЕ компоненты надо грузить в начале хала, если где-то в середине - вываливается unexpected realtime delay. Об такой тонкости нигде не нашел упоминаний. А порядок base-thread и servo-thread никак не влияет на ситуацию.

Спасибо за внимание! :)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 05 мар 2012, 23:13
Nick
Спасибо за информацию, надо записать :)!

Наверное некоторые hal файлы могут загружаться после запуска основной системы и тогда они вызывают delay...
Там небось в конце основного hal есть строчка start...

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2012, 02:27
zilk
АХРЕНЕТЬ.. беру свои слова насчет анналов обратно.. :shock:
В анналы надо писать другое! А именно, место загрузки второстепенных компонентов типа логики и пр. хрени НЕ ВЛИЯЕТ на появление ошибки unexpected realtime delay при загрузке.
Оказывается, наличие ошибки зависит от порядка размещения всего двух строчек, вот так ошибка ЕСТЬ:

Код: Выделить всё

addf hm2_7i43.0.write         servo-thread
addf motion-controller        servo-thread
А вот так ошибки НЕТ!!

Код: Выделить всё

addf motion-controller        servo-thread
addf hm2_7i43.0.write         servo-thread
С чем это связано - хрен его знает, теряюсь в догадках, но создается впечатление, что в первом случае AXIS при загрузке как-бы тупит на пару секунд. На всякий случай перепроверил раз 20 на разных конфигурациях - повторяемость 100%
Это, как вы понимаете, имеет место для случая применения MESA 7i43
Вот такие пироги... :hottabych:

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2012, 08:23
nkp
(как предположение) Можно попробовать с -Wn загружать.Есть стойкое ощущение ,что все дело в задержке.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2012, 11:08
Nick
Так -Wn не причем, если ошибка проявляется только при addf.

вообще в указанном вверху кроется такая суть:
Сначала мы должны рассчитать координаты и команды движкам: addf motion-controller servo-thread
А уже потом записать их на выводы: addf hm2_7i43.0.write servo-thread
причем не плохо бы еще перед этом сделать read с месы.

Возможно, он каким-то образом не считает период законченным пока результаты не запишет, хотя вряд ли, компоненты работают раздельно, но может где-то рядом с этим что-то кроется :thinking: .

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2012, 19:30
zilk
Nick, а можно глупый вопрос задать, возможно и не совсем по теме?
Я никак не могу разобраться с координатами - абсолютными, относительными, оффсетами и пр., в голове каша... :monkey:
Короче вопрос в следующем - я, допустим, перемещаю инструмент в нужную мне точку рабочего пространства при помощи MPG пульта, к примеру, на угол заготовки и хочу эту точку сделать началом координат, ну типа как задать отступ в AXIS-e - так вот, КАК мне это сделать нажатием ОДНОЙ КНОПКИ?? и желательно чтобы она была на тоже пульте... :freak:
Не могу пока понять, куда копать...
Спасибо!

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2012, 20:45
Nick
Делай через MDI команду G92 X0 Y0 Z0 и вперед :)!

Т.е. через ini
[HALUI]
MDI_COMMAND = G92 X0 Y0 Z0
и потом
halui.mdi-command-<nn>

Re: FAQ по EMC2 LinuxCNC

Добавлено: 06 мар 2012, 20:49
zilk
Nick писал(а):Делай через MDI команду G92 X0 Y0 Z0 и вперед
А как это к железной кнопке прикрутить? :)
А, уже увидел...

PS. А номер <nn> чем определяется? В описании пишут, что он может быть от 00 до 64, это номер по порядку размещения команды в [HALUI] секции ini? Или они нумеруются както?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 12 мар 2012, 00:12
zilk
Здравствуйте все!
Продолжаем вариации на тему железных кнопок. Для тех джентльменов, которым надоело тыкать мышой в экран, предлагаю к рассмотрению вариант, где двумя кнопками выполняется 5 команд, а именно:
-- кнопка RUN/STOP/STEP:
запускает выполнение программы,
при выполнении программы останавливает программу и хоумит все оси,
в режиме паузы прикаждом нажатии выполняентся один шаг программы,
в режиме паузы при длительном нажатии >1 сек. также останавливает программу и хоумит все оси;
-- кнопка PAUSE/RESUME:
при выполнении программы переводит в режим паузы,
при следующем нажатии вызывает продолжение выполнения программы.

Надо или не надо хоумить оси после останова программы - вопрос открытый, это можно легко отключить при необходимости.
Спасибо за внимание! :)

Код: Выделить всё

# Program RUN/STOP/PAUSE/STEP button

setp hm2_7i43.0.gpio.042.is_output 0
setp hm2_7i43.0.gpio.043.is_output 0
setp hm2_7i43.0.gpio.044.is_output 1
setp hm2_7i43.0.gpio.045.is_output 1
setp toggle.1.debounce 100
setp toggle.2.debounce 100
setp timedelay.0.on-delay 1

net run-btn     and2.6.in0 and2.7.in0 and2.8.in0 timedelay.0.in <= hm2_7i43.0.gpio.042.in_not
net pause-btn   toggle.1.in <= hm2_7i43.0.gpio.043.in_not
net pause-tgl   toggle.1.out => toggle2nist.1.in
net is-paused   halui.program.is-paused => toggle2nist.1.is-on and2.7.in1 not.6.in
net is-idle     halui.program.is-idle => not.5.in
net delay       timedelay.0.out => and2.8.in1
net pause-not   not.6.out => and2.6.in1
net stop-1      and2.8.out => or2.0.in0
net stop-2      and2.6.out => or2.0.in1
net stop-out    or2.0.out  => toggle.3.in
net stop-tgl    toggle.3.out => toggle2nist.2.in
net idle-not    not.5.out => toggle2nist.2.is-on
net run-sig     toggle2nist.2.on => halui.mode.auto halui.program.run
net stop-sig    toggle2nist.2.off => halui.program.stop halui.home-all
net step-sig    and2.7.out => halui.program.step
net pause-sig   toggle2nist.1.on => halui.program.pause
net resume-sig  toggle2nist.1.off => halui.program.resume
net is-running  halui.program.is-running => hm2_7i43.0.gpio.044.out  # индикация состояния - светодиод и пр., необязательно
net is-paused   =>  hm2_7i43.0.gpio.045.out                           # то же самое

Re: FAQ по EMC2 LinuxCNC

Добавлено: 12 мар 2012, 00:29
nkp
Новый лозунг:
"Даешь пульт оператора с одной кнопкой" :good:
А если всерьез- то все толково,но считаю хоме только отдельной кнопкой.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 12 мар 2012, 00:37
zilk
nkp писал(а):А если всерьез- то все толково,но считаю хоме только отдельной кнопкой.
Я тоже так считаю, что и предусмотрел у себя, здесь же добавил именно для любителей управлять всем процессом одной кнопкой.. :)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 12 мар 2012, 00:58
Lexxa
еще б алиасы добавить, вообще легко переносимый код был бы)

Re: FAQ по EMC2 LinuxCNC

Добавлено: 13 мар 2012, 15:03
Nick
Попробовал нарисовать граф из этого hal, чтобы стало понятнее, что в нем происходит, пока получилось не очень... Надо придумать, что-то с улучшением структуры графа...

Re: FAQ по EMC2 LinuxCNC

Добавлено: 13 мар 2012, 15:11
nkp
А я разбираю работу рисуя схемку. Нашел в убунте Qucs .Он вроде даже симуляцию работы может делать.

Re: FAQ по EMC2 LinuxCNC

Добавлено: 14 мар 2012, 01:08
zilk
Здравствуйте, люди!

Интересует такой принципиальный вопрос - как можно ИЗМЕНИТЬ некоторые свойства компонента HAL?
Где можно взять исходники, чтобы потом скомпилировать его со своими изменениями? или это нереально?
В частности, интересует компонент UPDOWN...

Спасибо!

Re: FAQ по EMC2 LinuxCNC

Добавлено: 14 мар 2012, 01:24
Nick
Все исходники есть на git.linuxcnc.org конкретно компонентов тут: http://git.linuxcnc.org/gitweb?p=emc2.g ... 06734ffad6

Конкретно updown тут :) http://git.linuxcnc.org/gitweb?p=emc2.g ... 06734ffad6

А что хочешь поменять?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 14 мар 2012, 01:41
zilk
Nick писал(а):А что хочешь поменять?
При установленых максимальном и минимальном значении счетчика (в том числе и отрицательном), в режиме CLAMP, ресет сбрасывает счетчик в НОЛЬ, а нужно, чтобы он сбрасывал его в МИНИМАЛЬНОЕ ЗНАЧЕНИЕ!!
Как это сделать, я даже не представляю, но буду пытаться... :monkey:
Но если это сделать, то открываются широкие перспективы в деле написания конфигурации хал, а именно - возможность передавать неограниченное число команд через ОДИН пин! :freak:

ЗЫ. Посмотрел исходник - так там все просто! Пошел извращаться.... :hottabych:

Re: FAQ по EMC2 LinuxCNC

Добавлено: 14 мар 2012, 01:50
Nick
А если минимальное значение сделать 0 и включить clamp? reset всегда должен сбрасывать в 0, судя по описанию вначале исходника.

А что ты хочешь с помощью него реализовать?

Re: FAQ по EMC2 LinuxCNC

Добавлено: 14 мар 2012, 01:59
zilk
Какое бы ни было минимальное значение, ресет всегда сбрасывает счетчик в ноль -

Код: Выделить всё

  31         if (reset) {
  32                 temp_count=0;
А надо так:

Код: Выделить всё

 
  31         if (reset) {
  32                 temp_count=min;
Хочу попробовать забодяжить канал передачи данных с число-импульсной модуляцией... :freak:

Re: FAQ по EMC2 LinuxCNC

Добавлено: 14 мар 2012, 11:29
Nick
Хитер :) Это ты через морзянку будешь со станком общаться :lol:
Может проще сделать это на любом языке программирования и загружать через loadusr?