[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
Это незавершенный раздел, Вы можете помочь в его оформлении.
Andradio
Новичок
Сообщения: 21
Зарегистрирован: 05 ноя 2010, 22:02
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Andradio »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Вообще, EMC2 построен по схеме UNIX way:
Wikipedia :
«Философия UNIX гласит:
Пишите программы, которые делают что-то одно и делают это хорошо.
Пишите программы, которые бы работали вместе.
Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс», - Дуг МакИлрой
Т.е. EMC2 это не одна большая программа, которая умеет делать все, а множество маленьких модулей, каждый из которых отвечает за свою часть работы и делает это хорошо.
Одни модули занимаются планированием траектории, другие - обработкой сигналов, третьи - отображением на экране и т.д.
Так и с HAL, когда у EMC2 появляется новое событие, например, нужно сделать шаг, он говорит HAL "Tell the hardware to make a step at axix x" и HAL говорит контроллеру: "Таки уже можно сделать шаг, в направлении Х" :).
И самое прекрасное, что все эти модули общаются друг с другом по определенным протоколам, и могут работать совершенно самостоятельно.
Т.е. если мы хотит сделать поддержку какого-то совершенно экзотического оборудования, нам нужно разобраться всего лишь с одним маленьким модулем, а не переделывать одну огромную программу.
Andradio
Новичок
Сообщения: 21
Зарегистрирован: 05 ноя 2010, 22:02
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Andradio »

Станок самодельный, имеет три оси, все на шаговых двигателях. Раньше управлял с LPT порта через схему собраную на микросхемах ТМ7. Потом переделал схему управления на атмел контроллере на выходе с микросхемами ULN2003. Написал простенькую программу вывода bmp файлов на него, все работает, но нету, так сказать, оптимизации траектории движения ну и плюс нашел программу EMC2 под линукс и заинтересовало меня соеденить их.
Станок принимает команды типа [название оси][направление]Выглядит примерно так: х0 или z1 , может вскоре перепишу на [название оси][направление][количество шагов].
Вот и думаю или какой модуль/драйвер написать для ЕМС или ещо что, если такое возможно канешно.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

При задании [название оси][направление][количество шагов] не передаются очень важные параметры скорости и ускорения. Их можно контролировать только при непосредственном управлении шагами двигателей. Т.е. [название оси][направление] выглядит предпочтительней.
Но! Огромный минус перехода с LPT на RS232 это потеря параллельности. RS232 - последовательный порт это внесет множество проблем.

При использовании последовательных портов используют умные контроллеры, которые сами могут интерпретировать Gкод и выдавать команды на драйверы. А что такое умный контроллер - это обычный контроллер + "встроенный EMC".

Но, не смотря на это все вот пример управления некоторыми функциями станка из рассылки EMC2:
Это скрипт на питоне, который реализует HAL компонент:

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

#!/usr/bin/python
# -----------------------------------------------------------------------
# Import the necessary modules (импортируем необходимые модули)
import hal
import time
import pyserial

# Get the serial connection -- first port, 9600,8,N,1 (создаем соединение с портом)
import serial
ser = serial.Serial(0)

# Create the HAL component and its pin.  You will use a .hal file to 
# connect whatever bit signal you want to the pin 'example.enable'.
№(Создаем HAL компонент и пин, которым он будет управляться. Для нашего случая нужно будет создать 6 компонентов для расшифровки сигналов, по 2 на каждую ось, 
первый - на смену направления (просто сохраняем направление в переменной) 
второй - для совершения шага, он будет давать команду контроллеру (ось - направление) )
h = hal.component("example")
h.newpin("enable", hal.HAL_BIT, hal.HAL_IN)
h.ready()

# (Создаем переменную которая будет хранить предыдущее состояние нашего пина)
# The previous value of the 'enable' pin so that a byte is only sent on
# the serial port when it is necessary.  This setting, which is not a
# number, means that the first time the value will always be considered
# "changed".
last = None

# (without try/except, the component will print what looks like an error
# when emc is shut down, and the cleanup below won't happen)
try:
    while 1:
        # Основной цикл  - при смене значения пина  будет выдавать управляющий сигнал 
        # As long as the component is running, periodically check
        # whether the value has changed; if it has, send a command to
        # set the new value
        new = h["enable"]
        if new != old:
            if new: ser.write("1")
            else: ser.write("0")
        old = new
        time.sleep(.01)
except KeyboardInterrupt: pass
            
# Shut down the connected device at exit
ser.write("0")
# -----------------------------------------------------------------------
Честно говоря, не знаю насколько это окажется работоспособным. Т.к. в EMC шаги генерируются в реальном времени, а вот на счет этого скрипта не уверен, хотя для хоббийного станка может и сработает.

Советую вернуться к LPT это проще, правильнее и надежнее.

ЗЫ А как осуществляется обратная связь (датчики и т.п.)?
Andradio
Новичок
Сообщения: 21
Зарегистрирован: 05 ноя 2010, 22:02
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Andradio »

Т.е. [название оси][направление] выглядит предпочтительней.
Тут я скорей не соглашусь, так как скорость передачи данных составляет 9600 - 115200бит/с ещо учесть что передается два бита то скорость передачи управляющих пакетов будет вдвое меньше. И получается задержки между шагами большие что не хорошо сказалось на скорости. Тут согласен что нужно переходить куда то, но думаю нужно на USB переходить, так как лпт свой чуть подпалил я, а машыну менять пока не собираюсь. Можно конечно USB to LPT попробовать но это нужно смотреть по месту.
ЗЫ А как осуществляется обратная связь (датчики и т.п.)?
Обратной связи нету пока никакой, и планировалось только концевые выключатели осей. Планировал выставлять все оси в ноль(вертикальную ось упирать в заготовку) и отталкиваться от нуля, так как в примерах ЕМС.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

115200бит/сек. это 115200/3 оси/2бита на ось (шаг + направление)/200 шагов на оборот/2 микростеп = 48 оборотов каждого двигателя в секунду (при 9600 это 4 оборота в секунду, т.е. в среднем до 20 об/с). Для шаговых двигателей это очень даже хорошо. но все таки при использовании последовательного порта желательно использовать более умный чем step/dir контроллер.

На счет скорости я имел в виду, что при управлении [название оси][направление][количество шагов] нет возможности контролировать скорость и ускорение станка программно, это должен делать контролер. Также не понятно как будет выполнятся синхронизация по осям? Если мы двигаемся по диагонали (т.е. одновременно шагаем по двум осям), то что будет отправлено на контроллер?
... а машину менять пока не собираюсь. Можно конечно USB to LPT попробовать но это нужно смотреть по месту.
Зачем машину менять, вот есть куча PCI-ных LPT стоят дешево от 80 до 160 гривен. EMC2 может спокойно использовать до трех таких портов. Настраиваются они за 5 секунд в stepconf.
Вот пара предложений:
http://www.sokol.ua/pci-rs232-lpt----2/p2220/
http://a-techno.com.ua/28147.html

USB to LPT не очень хороший вариант т.к. будут нужны драйверы, и опять же включается дополнительное преобразование => последовательный порт => параллельный.
Andradio
Новичок
Сообщения: 21
Зарегистрирован: 05 ноя 2010, 22:02
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Andradio »

Со всем согласен.
По поводу
Также не понятно как будет выполнятся синхронизация по осям? Если мы двигаемся по диагонали (т.е. одновременно шагаем по двум осям), то что будет отправлено на контроллер?
Такую функцию хотел реализовать, но написание программы для ПК привело к тому что у меня инструмент двигался по одной оси (на пример Х) потом другой осью (на пример Y) переходил на следующую строчку, учитывая толщину инструмента, и снова работаем осью Х. В таком случае не было необходимости двигатся по диагонали. Следуюим шагом я думал написать программу под векторную графику (сейчас есть программа для bmp файлов) но закинул єто занятие.
Ну после того как нашёл ЕМС2 снова проснулось желание но только уже думаю попробовать от лпт. Єто нужно выбрать микросхемку управления двигателями я так понял с обозначения присвоенного пинам ЛПТ порта в ЕМС2.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Сильное получается ограничение. Станок сможет только плоские узоры делать, а с контурами проблема будет.
Контроллер от LPT очень прост в исполнении. В интернете есть куча схем. По поводу пинов - лучше конечно использовать стандартные, но все очень просто настраиваемо.

Кстати мы написали программу для экспорта векторных изображений в Gкод.
Andradio
Новичок
Сообщения: 21
Зарегистрирован: 05 ноя 2010, 22:02
Репутация: 0
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Andradio »

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

HAL - это компонент который обеспечивает связь "программного" ядра "аппаратным". Но его настройки изначально не определены. То, что мы видим это стандартные конфигурации для EMC2 или настройки по умолчанию от stepcoonf.

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

Под EMC2 станок медленно работает

Сообщение Nick »

Q: Под EMC2 станок медленно работает. Медленно обрабатывает узоры. На Mach работал быстрее.
A: Нудно настроить обработку углов. По умолчанию стоит G61 (Exact Stop), т.е. станок подходя к каждому углу, даже очень маленькому останавливается практически до нулевой скорости и разгоняется заново. Это необходимо для соблюдения параметров ускорений по осям станка. Любой угол - это мгновенное изменение скорости, т.е. большое ускорение.
Для ускорения обработки используйте код G64, он задет допуски сглаживания углов для поддержания максимальной скорости обработки. Для G64 есть два параметра:
  • "P"- задает максимальное расстояние на которое EMC2 может отойти от заданной траектории для поддержания скорости.
  • "Q" - задет максимальное расстояние на которое EMC2 можеот отклониться от заданной траектории для ее упрощения. (Несколько прямолинейных сегментов заменяются одним.)
Пример Gcode: "G64 P0.5 Q0.1"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Q: Как в EMC2 настроить директорию по умолчанию для *.ngc файлов?
A: Для этого нужно изменить значение PROGRAM_PREFIX в файле настроек. Его значение по умолчанию :

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

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

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

Q: Устанавливаю EMC2 поверх готовой Ubuntu 10.10. Скачалось, установилось.
При запуске EMC2 пишет: EMC2 requires the real-time kernel 2.6.32-122-rtai to run. Before running EMC2, reboot and choose this kernel at the boot menu.
Перезагружаю машину... толку нет.
Что это?

A: При загрузке компьютера нужно выбрать ядро с поддержкой RTAI. В Ububtu 10.10 меню системного загрузчика grub показывается только если во время загрузки нажать Shift (сразу после того, как отработает BIOS). И в появившемся меню выбрать строчку в которой написано RTAI, но не recovery.
А вообще, лучше немного переписать настройку grub, чтобы меню появлялось само на несколько секунд, как это было раньше. Для этого нужно:
  • выполняем в консоле: sudo nano /etc/default/grub
  • удаляем строки (Ctrl+K - удалить строку):
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_HIDDEN_TIMEOUT=0
  • Выходим из редактора (Ctrl+X), не забыв сохранить изменения (y).
  • и обновляем Grub: sudo update-grub или sudo update-grub2, если установлен grub2/
Меню Gurb выглядит примерно так (на этом скриншоте нет нужного пункта, ядра с поддержкой RTAI):
Вложения
GRUB_screenshot.png
GRUB_screenshot.png (2.08 КБ) 28546 просмотров
_taras_
Мастер
Сообщения: 546
Зарегистрирован: 16 мар 2011, 15:19
Репутация: 69
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение _taras_ »

вне кажется, что В Вашем посте необходимо добавить следующее:
1. Как вариант на linux CNC пишут, что нужно добавить "lapic" в строку загрузки ядра в grub. Т.е. должно быть ".... quiet splash lapic".. Для ядра с поддержкой RTAI
2. Обновление Grub (по крайней мере в свежеустановленной убунте 10.04) проводится не командой sudo update-grub2, а sudo update-grub
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

1. А для чего пишут добавлять lapic, чтобы latency был лучше?

2. А в 10.04 по-моему меню груба по-умолчанию открывается, поэтому для него не актуально.
_taras_
Мастер
Сообщения: 546
Зарегистрирован: 16 мар 2011, 15:19
Репутация: 69
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение _taras_ »

1. Были (есть?) косяки с загрузкой модулей rtapi ядра и как следствие не запускается latency-test и емс2
2. Если установлена только убунту (в.т.ч. и 10.04), то меню груба не открывается. И такки устанавливается по умолчанию груб, а не груб2
Более детально с Вами обсуждали на ветке http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=946
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение Nick »

1. А, ну да... Кстати, я так и не нашел lapic помог? Нужно добавить отдельным постом.
2. Ок, исправил.
_taras_
Мастер
Сообщения: 546
Зарегистрирован: 16 мар 2011, 15:19
Репутация: 69
Контактная информация:

Re: FAQ по EMC2 LinuxCNC

Сообщение _taras_ »

Да, помог.
Сейчас пытаюсь разобраться как задать размеры рабочего поля станка (ДхШхВ).
Да, как вставить ссылку на рисунок с компа?
Ответить

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