[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
Это незавершенный раздел, Вы можете помочь в его оформлении.
Аватара пользователя
roach
Мастер
Сообщения: 205
Зарегистрирован: 01 июн 2011, 07:55
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение roach »

Nick писал(а):Примерно вот тут.

Если у тебя такая кнопка не появляется, то возможно не правильно настроена обработка концевиков. Тогда пришли скриншот emc2, его версию и свои hal и ini файлы.
эта кнопка убирает программные лимиты. а если я наехал на концевик аппаратный?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Чтобы менять значение параметра можно просто в консоле
halcmd setp stepgen.0.position-scale и значение
если надо провести через gкод, то можно через M100-199, и создпем исполняемый файл, который делает вот это самое.
Но причем здесь пин?
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а): можно через M100-199, и создпем исполняемый файл
Попробовал сделать и этим способом, т.е. создал соответствующий исполняемый файл M100, поместил его в каталог PROGRAM_PREFIX, запускаю его с консоли M100 XXX YYY и в хал-метре соответствующие параметры приобретают значения XXX YYY. Вроде работает, но не тут-то было - в MDI выполняю команду M100 PXXX QYYY - НЕ РАБОТАЕТ!! :?
Что делать??
Спасибо!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Хмммм.... Может у него path другой, а если выполнить Gкод для которого нет файла?
Есть еще один вариант - через аналоговые выходы и Мкод M67 E- Q-.
E[0-3] Q- значение
Пины motion.analog-out-NN OUT FLOAT
При выполнении такого кода на пине будет нужное значение.

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick, перепробовал все!
Путь правильный, если путь несовпадает или выполняю другую команду - выдает ошибку: использован неизвестный М-код. А так все четко выполняется, но результата в хал-метре не видно.
В терминале выполняю например ./M100 7 8 - в хал-метре сразу отображается записанный параметр 7 и 8 соответственно.. хз где тут затык происходит, уже мозг почти сломал.. Может название файла неправильное - у меня просто М100, например, на другое - выдает ошибку.
Через М67 не получилось вообще - не хочет писать значение пина в параметр, не нашел такой процедуры, параметр можно только установить командой setp - и пипец, больше никак!! :freak:

PS. Пытаюсь конкретно записать значение с motion.analog-out-NN, конвертирую в u32 и подаю в encoder-ratio.0.master-teeth - не лезет, блин, сволочь...
В описании параметра encoder-ratio.0.master-teeth написано, что он unsigned rw - это вроде I/O, как его настроить на что-то конкретное In или Out?
Последний раз редактировалось zilk 03 фев 2012, 00:22, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Не лезет потому, что в motion.analog-out-NN - float, а как ты его конвертируешь?
По моему, если соединить пин и параметр командой net, то параметр должен устанавливаться.

А зачем тебе только in или только out? Чем тебе IO не нравится?

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а):Не лезет потому, что в motion.analog-out-NN - float, а как ты его конвертируешь?
конвертирую как положено conv-float-u32, если этого не делать, пишет соответствующую ошибку.
Первое, что я сделал - соединил пин и параметр командой net, но получил болт... :)

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Итак, мелкими куриными шагами продвигаемся вперед... :freak:
Выяснил, что число, набранное в терминале и то же самое число, набранное в MDI - это две большие разницы. Например, в терминале 123 - соответствует 123.0000 в MDI!
Отсюда и грабли, предупреждать надо! :hehehe:
Что надо покурить, чтобы они стали одинаковыми?
Как в скрипте написать чтобы интерпретатор bash переменную воспринимал как целое число?
Если использовать halcmd, то история повторится, как и с М67, т.е. снова грабли...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

По идее hal должен сам конвертировать введенные числа в нужный формат пина, т.е. если пин float то 123 = 123.000.

Если параметр будет меняться в ручную, смотри в сторону GladeVCP или PyVCP
По русски но без картинок: http://www.cnc-club.ru/forum/viewtopic. ... 406#p11406
По английски: http://unpy.net/emc2-docs-new/hal_vcp.html

попробуй вместо Q123 набрать Q[123], хотя не должно ничего поменять, но все таки попробуй :).
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Спасибо, буду пробовать!
Nick, подскажи еще один момент - в процессе всех копаний слетели настройки терминала, т.е. при запуске в окне не появляется стандартного приглашения, а только значек $. Приходится запускать bash вначале, очень неудобно. В пользователях и группах для своей записи сменил /bin/sh на /bin/bash а потом обратно, и после этого все пропало.. :oops:
Если не подскажешь что делать, буду переустанавливать систему.. :hehehe:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Nick писал(а):Вот это не совсем понял, где точнее менял?
Система - Администрирование - Пользователи и группы - Дополнительные параметры - вкладка Дополнительно - командный интерпретатор
Через Предпочитаемые приложения - ничего не меняется, есть gnjme-terminal и xterm - один хрен...

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

На всякий случай,
Проверь, что запускается bash в командной строке help и смотрим верхнюю строчку. Ну и проверь, что настройка действительно вернулась назад.
Или выполни следующее $ chsh -s /usr/local/bin/bash zilk
zilk
Опытный
Сообщения: 139
Зарегистрирован: 07 янв 2012, 19:05
Репутация: 1
Откуда: Украина, Харьков
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение zilk »

Все, две проблемы решил!
Написал скрипт для установки параметров из MDI, может и кривоватый, но рабочий и терминал починил - обновился до 10.10 :hehehe:
Теперь бы сообразить, как быстренько сделать образ системы, пока все работает... :freak:
Ответить

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