[WIKI] FAQ по EMC2 LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

[WIKI] FAQ по EMC2 LinuxCNC

Сообщение 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
Это незавершенный раздел, Вы можете помочь в его оформлении.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

РАЗОБРАЛСЯ!!

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

Спасибо за внимание! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Спасибо за информацию, надо записать :)!

Наверное некоторые hal файлы могут загружаться после запуска основной системы и тогда они вызывают delay...
Там небось в конце основного hal есть строчка start...
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение 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:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение nkp »

(как предположение) Можно попробовать с -Wn загружать.Есть стойкое ощущение ,что все дело в задержке.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Так -Wn не причем, если ошибка проявляется только при addf.

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

Возможно, он каким-то образом не считает период законченным пока результаты не запишет, хотя вряд ли, компоненты работают раздельно, но может где-то рядом с этим что-то кроется :thinking: .
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick, а можно глупый вопрос задать, возможно и не совсем по теме?
Я никак не могу разобраться с координатами - абсолютными, относительными, оффсетами и пр., в голове каша... :monkey:
Короче вопрос в следующем - я, допустим, перемещаю инструмент в нужную мне точку рабочего пространства при помощи MPG пульта, к примеру, на угол заготовки и хочу эту точку сделать началом координат, ну типа как задать отступ в AXIS-e - так вот, КАК мне это сделать нажатием ОДНОЙ КНОПКИ?? и желательно чтобы она была на тоже пульте... :freak:
Не могу пока понять, куда копать...
Спасибо!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Делай через MDI команду G92 X0 Y0 Z0 и вперед :)!

Т.е. через ini
[HALUI]
MDI_COMMAND = G92 X0 Y0 Z0
и потом
halui.mdi-command-<nn>
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

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

PS. А номер <nn> чем определяется? В описании пишут, что он может быть от 00 до 64, это номер по порядку размещения команды в [HALUI] секции ini? Или они нумеруются както?
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение 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                           # то же самое
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение nkp »

Новый лозунг:
"Даешь пульт оператора с одной кнопкой" :good:
А если всерьез- то все толково,но считаю хоме только отдельной кнопкой.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

nkp писал(а):А если всерьез- то все толково,но считаю хоме только отдельной кнопкой.
Я тоже так считаю, что и предусмотрел у себя, здесь же добавил именно для любителей управлять всем процессом одной кнопкой.. :)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Lexxa »

еще б алиасы добавить, вообще легко переносимый код был бы)
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Попробовал нарисовать граф из этого hal, чтобы стало понятнее, что в нем происходит, пока получилось не очень... Надо придумать, что-то с улучшением структуры графа...
Вложения
gv.png (4446 просмотров) <a class='original' href='./download/file.php?id=4599&mode=view' target=_blank>Загрузить оригинал (79.54 КБ)</a>
gv.png (4446 просмотров) <a class='original' href='./download/file.php?id=4600&mode=view' target=_blank>Загрузить оригинал (148.26 КБ)</a>
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение nkp »

А я разбираю работу рисуя схемку. Нашел в убунте Qucs .Он вроде даже симуляцию работы может делать.
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Здравствуйте, люди!

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

Спасибо!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Все исходники есть на git.linuxcnc.org конкретно компонентов тут: http://git.linuxcnc.org/gitweb?p=emc2.g ... 06734ffad6

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

А что хочешь поменять?
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

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

ЗЫ. Посмотрел исходник - так там все просто! Пошел извращаться.... :hottabych:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

А что ты хочешь с помощью него реализовать?
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Какое бы ни было минимальное значение, ресет всегда сбрасывает счетчик в ноль -

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

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

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

 
  31         if (reset) {
  32                 temp_count=min;
Хочу попробовать забодяжить канал передачи данных с число-импульсной модуляцией... :freak:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

Вернуться в «LinuxCNC»