Конфигурация 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 (319900 просмотров) <a class='original' href='./download/file.php?id=781&mode=view' target=_blank>Загрузить оригинал (41.24 КБ)</a>
Настройка EMC2
Конфигурация ЕМС2 (319900 просмотров) <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 (319900 просмотров) <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 (319900 просмотров) <a class='original' href='./download/file.php?id=783&mode=view' target=_blank>Загрузить оригинал (99.1 КБ)</a>
Настройка LPT для EMC2
Настройка LPT для EMC2 (319900 просмотров) <a class='original' href='./download/file.php?id=784&mode=view' target=_blank>Загрузить оригинал (88.29 КБ)</a>
Настройка LPT для EMC2

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

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

Настройка осей станка в EMC2 LinuxCNC (319900 просмотров) <a class='original' href='./download/file.php?id=785&mode=view' target=_blank>Загрузить оригинал (66.88 КБ)</a>
Настройка осей станка в EMC2 LinuxCNC
Проверка настроек осей LinuxCNC (319900 просмотров) <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 (319900 просмотров) <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 (319900 просмотров) <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 (319900 просмотров) <a class='original' href='./download/file.php?id=789&mode=view' target=_blank>Загрузить оригинал (74.23 КБ)</a>
Окончание настройки EMC2

Заключение


См. также

Нахождение максимальной скорости и ускорения станка
PyVCP дополнительный интерфейс для EMC2 LinuxCNC
pianodrumguitar
Новичок
Сообщения: 6
Зарегистрирован: 04 дек 2013, 18:05
Репутация: 0
Откуда: Минск, Беларусь
Контактная информация:

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

Сообщение pianodrumguitar »

Набросал тут по примеру драйвера для pcl720 (pcl720.comp в src/hal/components) драйвер для своих gpio на борде, но как-то пока не работает:

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

component imx6gpio """Driver for iMX6 Phytec board""";

pin in bit pin-##-out[8] "Output pins";
pin out bit pin-##-in[8] "Input pins";

function read nofp "Reads each of the digital inputs and updates the HAL pins";
function write nofp "Writes the values of the output HAL pins to the digital IO";

variable u64 write_time;

option count_function no;

license "GPL";
author "Paul S";
;;

#define MAX_CHAN 8

int gpioaddr[MAX_CHAN] = {0x20a8002, 0x209c000, 0x209c001, 0x20b4001, 0x20b4001, 0x20a8000, 0x20a0002, 0x20a0002};

FUNCTION(read){
    int i;
    unsigned long R = 0;
    int offset[MAX_CHAN] = {2, 13, 16, 27, 36, 44, 54, 63};

	for (i = 0; i < 8; i++){
		R += (rtapi_inb(gpioaddr[i]) << 8*i);
		pin_in(i) = R & (1 << offset[i]);
	}
}

FUNCTION(write){
    int i;
    unsigned char buf;
    int state;
    int offset[MAX_CHAN] = {6, 3, 8, 5, 4, 4, 2, 1};
    
    for (i = 0; i < 8; i++){
		state = pin_out(i);
		buf = rtapi_inb(gpioaddr[i]);
		
		if (state)
			buf |= (1 << offset[i]);
		else
			buf &= ~(1 << offset[i]);
		
		rtapi_outb(buf, gpioaddr[i]);
    }
    write_time = rtapi_get_time();
}
Адреса сходятся с адресами для банков GPIO, которые прописаны в даташите к SOC'у. Меня смущает момент, что в преобразованном благодаря bin/comp коде нет обращения к /dev/mem, с которым, по идее, должен в итоге взаимодействовать драйвер. Пробовал для проверки писать при помощи rtapi_outb значения 0xFF и 0x00, чтобы обнулять/выставлять в единицу не только один бит, но целый байт, но всё равно безрезультатно вышло, осциллограф врать не будет.
Ещё мне немного непонятно, нужно ли конфигурировать linuxcnc с опцией --enable-shmdrv (потому как я пробовал, но он так не конфижится, пока не разобрался, отчего именно).
Последний раз редактировалось pianodrumguitar 03 фев 2014, 15:36, всего редактировалось 1 раз.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

pianodrumguitar писал(а):Меня смущает момент, что в преобразованом благодаря bin/comp коде нет обращения к /dev/mem
И не будет. Эти обращения в библиотеках, которые подгружаются при выполнении.
pianodrumguitar писал(а):но всё равно безрезультатно вышло, осциллограф врать не будет.
А просто на С программку написать - пинами подёргать?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
pianodrumguitar
Новичок
Сообщения: 6
Зарегистрирован: 04 дек 2013, 18:05
Репутация: 0
Откуда: Минск, Беларусь
Контактная информация:

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

Сообщение pianodrumguitar »

UAVpilot писал(а):А просто на С программку написать - пинами подёргать?..
Так ведь в итоге и получается сишный код, который компилится как модуль ядра, и, по идее, hal и будет дёргать пины.
Есть интерфейс для работы с gpio через sysfs, но мне кажется, что это совсем не realtime-взаимодействие выходит. Через bash всё дёргается, впрочем, да (:
Предлагаешь набросать юзерспейсную программку, которая безо всякого hal'а будет дёргать пины, если я верно понял? А как потом от неё перейти к драйверу для hal?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

pianodrumguitar писал(а):Предлагаешь набросать юзерспейсную программку, которая безо всякого hal'а будет дёргать пины, если я верно понял?
Да, чтобы проверить, что такой способ управления (через outb) возможен.
pianodrumguitar писал(а):А как потом от неё перейти к драйверу для hal?
Думаю это не будет проблемой, если использовать разрешённые для RTAI механизмы.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
pianodrumguitar
Новичок
Сообщения: 6
Зарегистрирован: 04 дек 2013, 18:05
Репутация: 0
Откуда: Минск, Беларусь
Контактная информация:

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

Сообщение pianodrumguitar »

UAVpilot писал(а):Да, чтобы проверить, что такой способ управления (через outb) возможен.
Добре, буду разбираться, спасибо. Буду держать в курсе, как только что-нибудь путное выйдет.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Получил на форуме Пурелоджика параметры для драйверов

PLD86, PLD2080s:
Step Time = 1 мкс
Step Space = 5 мкс
Direction Hold = 3 мкс
Direction Setup = 3 мкс

PLC330, PLC330b, PLD330:
Step Time = 30 мкс
Step Space = 60 мкс
Direction Hold = 15 мкс
Direction Setup = 15 мкс

Не знаю куда положить, но было бы интересно иметь "под рукой"...
Последний раз редактировалось Ворон226 04 фев 2014, 21:01, всего редактировалось 1 раз.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

В вики :)
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Хочешь быть счастливым? Будь им!
frezakov
Кандидат
Сообщения: 45
Зарегистрирован: 15 фев 2014, 20:59
Репутация: 1
Контактная информация:

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

Сообщение frezakov »

Подскажите пожалуйста, возможно ли просто перенести настройки из Mach3 в EMC2? К примеру у меня есть станок полностью настроен и работает под Mach3, я хочу перейти на EMC2, но у меня нет документации по контроллеру. То есть конкретно там где описывается что вводить в настройках пинов LPT, у меня данных нет, только то что установлено в Mach. Станок куплен в Луганске, 777.lg.ua Станок при долгой работе уводит центр обнуления и чем дольше тем больше, за пять часов примерно на 1мм, про поворотную ось я вообще молчу. Уже устал ковырять этот Mach. на станке люфты все убраны, заеданий нет. Винда стоит чистая и поотключал кучу служб. Танцую с бубнами уже несколько месяцев. Вот осталась последняя надежда на LinuxCNC.
И еще вопрос, для установки парной оси по Y(портал), достаточно просто -
"задаем на разные пины LPT в stepconf один и тот же сигнал скажем на 3 и 5 StepX, а на 4 и 6 DirX"?
Заранее благодарен за любую помощь!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

frezakov, открывай новую тему по своему станку, там помогут с настройками...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение Nick »

В смысле "сначала" и "уже потом"?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение Nick »

Хммм... а если не G30z0 написать, а просто G30?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

UAVpilot писал(а):у меня почему-то едет сначала в 0 по g54, а уже потом в абсолютный.
Строго по описанному
G30 axes - makes a rapid move to the position specified by axes including any offsets, then will make a rapid move to the absolute position of the values in parameters 5181-5186 for axes specified. Any axis not specified will not move.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Жесть! Логику этого трудно понять, это нужно просто запомнить!
g30 g91 z0
:idiot:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

Ну как бы команды G28 и G30 для того, чтобы выехать из детали, и потом переть по диагонали в заранее заданное место.
UAVpilot писал(а):g30 g91 z0
А это разве не равно G30 :thinking:
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Сергей Саныч писал(а):Ну как бы команды G28 и G30 для того, чтобы выехать из детали, и потом переть по диагонали в заранее заданное место.
Мне всегда казалось, что из детали надо выезжать невзирая на любые смещения... Я собственно и попался на смещениях - у меня ноль системы координат оказался ниже датчика длины, хорошо, что он оказался сильнее привода Z. :freak:
Сергей Саныч писал(а):А это разве не равно G30 :thinking:
Нет. Собственно если начать буквоедствовать, то работает как и написано, это и натолкнуло на мысль попробовать g91: Сначала смещается по Z на 0 мм, а потом (по Z!) едет по заданным абсолютным координатам. Но мотивация всё равно непонятна. :thinking:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

Погоди.
G30 имеет два варианта (не считая G30.1)
G30 без параметров сразу идет по заданным G30.1 абсолютным координатам,
а G30 axes вначале идет по координатам, заданным axes в текущей координатной системе, а уж потом - туда же, куда G30 без параметров.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

g30 без параметров едет в заданные координаты одновременно всеми осями, т.е. не взирая на деталь и крепление. Мне-же хочется сначала подняться на безопасную высоту...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

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