Конфигурация EMC2 LinuxCNC

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

Конфигурация EMC2 LinuxCNC

Сообщение Nick »

После того как Вы произвели установку EMC2, можно переходить к конфигурации.
Начнем с простого пути, использования утилиты Stepconf. Sterconf это графическая утилита для настройки EMC2 для различных станков. Конечно она не реализует все возможности EMC2, но подойдет для большинства станков со step-dir контроллерами управляемыми через lpt порт. Stepconf устанавливается вместе с EMC2 и его можно запустить из меню Приложения -> EMC2 -> Stepconf.
Это незавершенный раздел, Вы можете помочь в его оформлении.
Нужны исправления, комментарии. Публикуйте их в этой теме.

Содержание


Настройка EMC2 (338402 просмотра) <a class='original' href='./download/file.php?id=781&mode=view' target=_blank>Загрузить оригинал (41.24 КБ)</a>
Настройка EMC2
Конфигурация ЕМС2 (338402 просмотра) <a class='original' href='./download/file.php?id=780&mode=view' target=_blank>Загрузить оригинал (44.23 КБ)</a>
Конфигурация ЕМС2

Выбор конфигурации

В первом окне Stepconf есть выбор: создать новую конфигурацию или изменить старую. Выбираем создать новую. Также можно проставить галки напротив Create shortcut, чтобы в последствии запускать EMC2 с созданной конфигурацией в один клик.

Screenshot-EMC2 Stepper Mill Configuration-2.png (338402 просмотра) <a class='original' href='./download/file.php?id=782&mode=view' target=_blank>Загрузить оригинал (95.31 КБ)</a>

Параметры станка, контроллера и быстродействия

Настройки станка
Вводим название станка, в документации говорится, что можно использовать заглавные и строчные буквы, цифры и знаки "-" и "_".
Выбираем конфигурацию осей. XYZ (Фрезер), XYZA (4-х осевой фрезер) или XZ (Токарный станок). Названия только для примера. Если у Вас двух осевой станок, то можете выбрать XYZ, и ось Z оставить не настроенной.
Единицы измерения станка: дюймы или миллиметры.

Настройки контроллера
Можно выбрать из набора предустановленных параметров если Ваш контроллер в список. Или настроить все самому.
Параметры Step time, Step space, Direction hold, Direction setup смотрите в документации к вашему контроллеру.

Настройки lpt
Если у Вас только один lpt, то можно ничего не трогать по умолчанию стоит установка стандартного адреса lpt порта.

Настройки быстродействия
Base period - это одна из основных величин быстродействия, она определяет максимальную скорость работы с контроллером. Она определяет так называемый heartbeat (сердцебиение системы в целом) от которого зависит время для генерации сингала Step. Фактически, чем меньше base period тем больше максимальная частота генерации шагов (например, при Base period = 30 000 ns максимальная частота генерации шагов равна 33333Гц, что при 200 шагах на оборот в режиме микрошага 1:8 дает максимум 20 оборотов в секунду).

Base period зависит от параметров компьютера. Правильно определить base period можно при помощи утилиты Latency test, она тоже входит в состав EMC2. Latency это задержка с которой компьютер может остановить процесс работы для обработки внешнего запроса. В нашем случае, запросом является периодичный "heartbeat" (стук сердца) на основе которого вычисляется нужное время для следующего шага. Для того, чтобы контроллер работал правильно и не пропускал шаги минимальный base period должен быть равным длительность direction setup+direction hold+step space+maximum latency.

Итак, запускаем Latency test, и пытаемся нагрузить компьютер разными задачами, чтобы наверняка получить максимальную задержку. Можно запустить проигрываться фильм, полазить по интернету, скопировать большой файл, перемещать окна. Через несколько минут смотрим значение Base thread Max jitter (максимальное дрожание base period) и вставляем это значение в соответствующую строку в Stepconf.

Onscreen prompt for tool change - уведомление о смене инструмента. Если эта опция включена, то EMC2 будет останавливаться и выдавать сообщение о смене инструмента, каждый раз, когда в управляющей программе будет встречаться код M6. Оставьте эту опцию включенной, только если Вы не собираетесь делать автоматическую смену инструмента.

Настройка LPT для EMC2 (338402 просмотра) <a class='original' href='./download/file.php?id=783&mode=view' target=_blank>Загрузить оригинал (99.1 КБ)</a>
Настройка LPT для EMC2
Настройка LPT для EMC2 (338402 просмотра) <a class='original' href='./download/file.php?id=784&mode=view' target=_blank>Загрузить оригинал (88.29 КБ)</a>
Настройка LPT для EMC2

Настройки пинов LPT

На этой странице мы можем настроить значения всех пинов параллельного порта.
Значения для этих настроек смотрите в документации к контроллеру.

Настройка осей станка в EMC2 LinuxCNC (338402 просмотра) <a class='original' href='./download/file.php?id=785&mode=view' target=_blank>Загрузить оригинал (66.88 КБ)</a>
Настройка осей станка в EMC2 LinuxCNC
Проверка настроек осей LinuxCNC (338402 просмотра) <a class='original' href='./download/file.php?id=786&mode=view' target=_blank>Загрузить оригинал (21.23 КБ)</a>
Проверка настроек осей LinuxCNC

Настройка осей станка

Далее настраиваем все оси станка:

Motor Steps Per Revolution - количество шагов двигателя на один оборот.

Driver Microstepping - настройка микрошага контроллера. Для микрошага 1:8 устанавливайте "8"

Pulley Ratio - значение редуктора, если между валом двигателя и ходовым винтом стоит редуктор установите передаточное число.

Leadscrew Pitch - шаг ходового винта. Можно поменять направление движения вдоль оси установив отрицательное значение шага винта.

Maximum Velocity - Максимальная скорость перемещения.

Maximum Acceleration - Максимальное ускорение по данной оси.

Home Location - положение начала оси. Это положение в котором станок остановится после поиска начала.

Table Travel - границы оси. Положение начала должно быть внутри table travel, причем оно не должно совпадать с границами оси.

Home Switch Location - Положение концевика начального положения. Если у Вас совмещены home switch и limit switch в одном концевике, то значение home location не должно быть равным home switch location иначе появится ошибка "joint limit error", т.е. станок не должен остановиться в точке срабатывания ограничительного концевика.

Home Search Velocity - скорость поиска начала оси. Если концевой датчик расположен рядом с концом оси это значение должно быть выбрано с учетом того, что станок должен будет успеть остановиться до того как он ударится о конец оси. Если концевик замыкается только когда ответная часть рядом с ним, то скорость должна быть выбрана таким образом, чтобы станок успел остановиться пока концевик не разомкнулся. Если станок движется в противоположную сторону от концевика при поиске начала установите отрицательную скорость.

Home Latch Direction - направление уточнения начала, после первоначальной установки начала, они уточняются на очень маленькой скорости. Если выбрана опция "Same" при повторном срабатывании концевика начала будут установлены, если "Opposite" станок будет медленно откатываться пока концевик не разомкнется.

Ниже будут приведены вычисления параметров оси:
  • Time to accelerate to max speed - время ускорения до максимальной скорости (время остановки)
  • Distance to accelerate to max speed - дистанция ускорения до максимальной скорости (дистанция остановки)
  • Pulse rate at max speed - частота сигналов на максимальной скорости
  • Axis SCALE - количество шагов в одной единице измерения шагов/мм (шагов/дюйм)
После введения всех параметров ось можно протестировать. Для этого нажимаем Test this axis.

Настройка управления шпинделем в EMC2 (338402 просмотра) <a class='original' href='./download/file.php?id=787&mode=view' target=_blank>Загрузить оригинал (32.67 КБ)</a>
Настройка управления шпинделем в EMC2

Настройка шпинделя

Если шпиндель регулируется при помощи ШИМ:
Устанавливаем Carrier frequency (Несущая частота) согласно инструкции к Вашему контроллеру шпинделя.
Устанавливаем Speed 1, Speed 2, PWM 1, PWM 2 - значения скоростей в оборотах в минуту при заданном значении ШИМ. Эту информацию можно найти в инструкции к Вашему контроллеру, либо попробовать определить самостоятельно. Этими параметрами определяется линейная зависимость скорости шпинделя от значения PWM.

Дополнительные настройки EMC2 (338402 просмотра) <a class='original' href='./download/file.php?id=788&mode=view' target=_blank>Загрузить оригинал (70.45 КБ)</a>
Дополнительные настройки EMC2

Настройка дополнительного интерфейса

  • Include Halui - Добавить пользовательскую панель Halui.
  • Include PyVCP GUI panel - Добавить панель pyVCP.
    См. статью по настройке и применению pyVCP в EMC2
  • Include ClassicLadder PLC - Добавить программируемый контроллер на лестничной логике (Programmable Ladder Logic Controller).

Окончание настройки EMC2 (338402 просмотра) <a class='original' href='./download/file.php?id=789&mode=view' target=_blank>Загрузить оригинал (74.23 КБ)</a>
Окончание настройки EMC2

Заключение


См. также

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

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

PKM писал(а):Можно запустить диагностику, чтобы показывало отработанные периоды
А это не http://www.linuxcnc.org/docs/html/man/m ... lta.9.html ?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение Serg »

Nick писал(а):А это не http://www.linuxcnc.org/docs/html/man/m ... lta.9.html ?
Тут используется тот-же метод, что и в тесте.
Собственно сам метод заключается в посчёте количества импульсов за время, отсчитываемое аппаратными системными часами.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение alexandr1988 »

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

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

Остановится "мгновенно", но со стандартным ускорением.
Это подойдет?
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение alexandr1988 »

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

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

Ну тогда просто в custom.hal надо дописать:

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

net feed-hold <= parport.0.... # название пина lpt
net feed-hold => motion.feed-hold 
Да, стоять будет пока пин нажат! Если надо нажал отсановился - нажал поехал, то надо добавить flipflop и возможно еще debounce.
alexandr1988
Кандидат
Сообщения: 77
Зарегистрирован: 07 окт 2014, 11:54
Репутация: 5
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение alexandr1988 »

Спасибо за оперативный ответ! Надо как раз так, чтобы по переднему фронту сигнала с пина оси остановились, а по заднему фронту поехали дальше.
Теперь установлю LinuxCnc и протестирую. О результатах сообщу.
yell
Опытный
Сообщения: 183
Зарегистрирован: 28 июн 2013, 14:27
Репутация: 22
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение yell »

Сделал себе энкодер на 100 щелей на шпиндель. У меня там только 2 датчика. 3-ий индексный пока не могу поставить. Тем более, что движок через понижающую передачу 1:2 крутит шпиндель. Это надо будет на сам шпиндель индекс ставить потом. У меня чисто конструктивно проще и красивее было организовать энкодер на движке. То, что лучше на сам шпиндель понимаю, но пока только так...

Но сейчас вопросы следующие:

1. Можно ведь за индексный сигнал принять первый попавшийся и просто в hal и следить за ним и выдавать как фазу Z. Единственный недостаток это то, что если свет пропадет, то хана. Ну или если импульс случайно пропустит (хотя вроде все стабильно). А так в целом я прав?

2. Если я врубаю квадратурный режим, чтоб по каждому фронту считал сигнал, то получается слишком шумно (смотрю по halcsope). Очевидно нужно очень точно ловить смещение 90градусов, да и сами импульсы должны быть строго одинаковой ширины. Короче, в обычном режиме (если скорость смотреть по одному датчику) график скорости само собой гораздо глаже получается. Еще была мысль сделать два компонента энкодера и брать среднюю скорость полученную с обоих датчиков.

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

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

yell писал(а):Сделал себе энкодер на 100 щелей на шпиндель. У меня там только 2 датчика. 3-ий индексный пока не могу поставить. Тем более, что движок через понижающую передачу 1:2 крутит шпиндель. Это надо будет на сам шпиндель индекс ставить потом. У меня чисто конструктивно проще и красивее было организовать энкодер на движке. То, что лучше на сам шпиндель понимаю, но пока только так...
А тебе нужно контроллировать вращение в обе стороны и всегда знать точное положение?
Можно один датчик поставить считать скорость, а второй поставить на индексную метку. Направление брать из команды шпинделю.
yell писал(а):1. Можно ведь за индексный сигнал принять первый попавшийся и просто в hal и следить за ним и выдавать как фазу Z. Единственный недостаток это то, что если свет пропадет, то хана. Ну или если импульс случайно пропустит (хотя вроде все стабильно). А так в целом я прав?
Не пойдет. Индексный пин нужен для синхронизации начала движения, он должен быть строго 1 на оборот (или меньше), иначе при нарезке резьбы можншь каждый раз начинать резать с любого из пинов.
По идее, можно сделать простенький счетчик, который будет выдавать 1 только на каждую n-ную 1 на входе, и запихнуть его в base-thread.
yell писал(а):3. У шпинделя есть люфт при смене направления вращения. Как лучше его учесть?
А зачем тебе его учитывать? У тебя токарник? Режем всегда начиная с индексного пина - пока разгонимся люфт выберется. Или ты хочешь синхронизовать обработки с правым и левым вращением двигателя? В принципе, можно все обработки в одну сторону стартовать на xxx.xxx мм раньше, чтобы выбрать люфт.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение Сергей Саныч »

При программной обработке и числом импульсов на оборот 100 можно будет более-менее уверенно работать с квадратурным сигналом при скорости не выше 1500-2000 об/мин (при реальных значениях базовой частоты 25-30 кГц).
Чудес не бывает. Бывают фокусы.
yell
Опытный
Сообщения: 183
Зарегистрирован: 28 июн 2013, 14:27
Репутация: 22
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение yell »

Nick писал(а):А тебе нужно контроллировать вращение в обе стороны и всегда знать точное положение?
Можно один датчик поставить считать скорость, а второй поставить на индексную метку. Направление брать из команды шпинделю.
Да. Для фрезерных и токарных работ на одном станке. Хочу нарезать резьбу токарно за несколько проходов. И иметь возможность метчиком тоже несколько раз пройтись.
Nick писал(а):По идее, можно сделать простенький счетчик, который будет выдавать 1 только на каждую n-ную 1 на входе, и запихнуть его в base-thread.
Так я про эту идею и говорю. У меня 100 меток, зачем мне делать отдельный 3-й датчик и особую метку для него, когда я могу программно следить за любой из этих ста. Возможно, пристрою компонент updown.
Сергей Саныч писал(а):При программной обработке и числом импульсов на оборот 100 можно будет более-менее уверенно работать с квадратурным сигналом при скорости не выше 1500-2000 об/мин (при реальных значениях базовой частоты 25-30 кГц).
Скорости у меня до 2000. Вот так у меня выглядят квадратурный сигнал скорости для 100 об/мин (тот, что шумный.. т.е. 400 импульсов) и обычный с одного датчика (более стабильный... это 100 импульсов). Точнее квадратурный настроить на получается. Так что не вижу смысла его использовать.
Вложения
Снимок.png
Снимок.png (10.28 КБ) 2231 просмотр
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

Надо наверное сглаживать этот паказатель.

Надо прикинуть, 2000 об/мин * 400 рисок /60 секунд = 13.333 кГц. Если сервопериод 1кГц, то за 1 сервопериод можно получить от 12 до 14 рисок = разброс в 15%...

Помсотреть бы на последовательность тиков энкодера на входе... сделай графики фазы A и B...
yell
Опытный
Сообщения: 183
Зарегистрирован: 28 июн 2013, 14:27
Репутация: 22
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение yell »

Там разумеется не точные 90град. И ширина уровней тоже не точна. Поэтому и получаются шумы. Но точнее пока возможности нет сделать.

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

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

lowpass - и подбираешь коэффициент gain.
http://linuxcnc.org/docs/html/man/man9/lowpass.9.html
yell
Опытный
Сообщения: 183
Зарегистрирован: 28 июн 2013, 14:27
Репутация: 22
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение yell »

Как сравнить на равенство два целых числа? (именно целых, чтоб в поток base-thread это засунуть)
Чего-то не нашел, в итоге разложил на биты через bitslice и сравнил match8. Но это как-то смешно. Может плохо искал и есть нормальный компонент?

Еще например abs_s32 очевидно возвращает беззнаковое. Но по факту они возвращают s32, но с пометкой, что оно беззнаковое. Тоже как-то не айс.

Куда эти все предложения писать, чтобы разработчики обратили внимание, кроме ихнего форума. Есть какой-нибудь issue tracker у них?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение nkp »

yell писал(а):Чего-то не нашел, в итоге разложил на биты через bitslice и сравнил match8.
если чего то не хватает - можно написать свой компонент
вот код большей части компонентов...
yell писал(а):Есть какой-нибудь issue tracker у них?
может это подойдет:
1
2
3
по первой ссылке наибольшая активность...
Bmax77
Мастер
Сообщения: 400
Зарегистрирован: 13 авг 2013, 11:05
Репутация: 39
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение Bmax77 »

А где в конфиге прописана длина импульса степ и пауза между ними?
yell
Опытный
Сообщения: 183
Зарегистрирован: 28 июн 2013, 14:27
Репутация: 22
Контактная информация:

Re: Конфигурация EMC2 LinuxCNC

Сообщение yell »

настройки компонента stepgen в hal.файле

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

setp stepgen.N.steplen
setp stepgen.N.stepspace
setp stepgen.N.dirhold
setp stepgen.N.dirsetup
Только вот я смотрю оно у меня не совсем совпадает с тем, что я указываю в stepconf'e. Например, в stepconf'e у меня так:
Step Time 1000
Step Space 4500
Direction Hold 200
Direction Setup 200
Jitter 20000


А в hal так:

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

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

Re: Конфигурация EMC2 LinuxCNC

Сообщение Nick »

yell писал(а):Только вот я смотрю оно у меня не совсем совпадает с тем, что я указываю в stepconf'e. Например, в stepconf'e у меня так:
Step Time 1000
Step Space 4500
Direction Hold 200
Direction Setup 200
Jitter 20000
Это сделано для работы в base-thread. В любом случае base-thread больше steplen - поэтому, чтобы увеличить максимальную частоту шагов мы ставим steplen 1, т.к. иначе теоритически один импульс может растянуться на два base-thread.
Если использовать stepgen на mesa такое скорее всего не поймается - у нее длина импульса будет равна 1 ее периоду, а он там несколько МГц. Там надо выставлять действительное значение.
Ответить

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