LinuxCNC / Настройка: различия между версиями
Enderukov (обсуждение | вклад) (→Настройка работы шпинделя) |
(Удаление устаревшей информации) |
||
(не показано 9 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
=Введение= | =Введение= | ||
+ | В настоящий момент всё оборудование под управлением LinuxCNC поставляется на контроллерах [[EP7i92]]. | ||
В '''LinuxCNC''' настройка параметров под конкретное оборудование, происходит отлично от большинства популярных систем управления ЧПУ (Mach3 или NC-Studio). Большинство необходимых параметров задаются внесением изменений в текстовые конфигурационные файлы *.hal и *.ini.<br> | В '''LinuxCNC''' настройка параметров под конкретное оборудование, происходит отлично от большинства популярных систем управления ЧПУ (Mach3 или NC-Studio). Большинство необходимых параметров задаются внесением изменений в текстовые конфигурационные файлы *.hal и *.ini.<br> | ||
Строка 15: | Строка 16: | ||
Для удобства освоения материала настоящее руководство разделено на 2 части: справочники по *.hal и *.ini файлам, а также отдельные главы по настройке тех или иных функций (перемещения, шпинделя, датчиков и прочее). Ниже перечислены все необходимые параметры для настройки вашего станка под управлением LPT (в руководстве используется контроллер [https://cnc-tehnologi.ru/chpu-kontrollery-i-perekhodniki/kontroller-lpt-dptr-1-03 LPT-DPTR 1.03]) | Для удобства освоения материала настоящее руководство разделено на 2 части: справочники по *.hal и *.ini файлам, а также отдельные главы по настройке тех или иных функций (перемещения, шпинделя, датчиков и прочее). Ниже перечислены все необходимые параметры для настройки вашего станка под управлением LPT (в руководстве используется контроллер [https://cnc-tehnologi.ru/chpu-kontrollery-i-perekhodniki/kontroller-lpt-dptr-1-03 LPT-DPTR 1.03]) | ||
− | В данном руководстве подразумевается, что вы установили скаченный образ | + | В данном руководстве подразумевается, что вы установили скаченный образ LinuxCNC т.к. некоторые аспекты по настройке уже сделаны. Также в данном руководстве не подразумевается использование утилит по автоматическому созданию или изменению файлов конфигурации. |
В начале определим местоположение наших файлов конфигурации. По умолчанию файлы конфигурации расположены по адресу home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal и home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal. Обратите внимание, в директории config лежат все созданные конфигурации. Конфигурация может отличаться в зависимости от названия станка к примеру, Cutter_GR, мой-станок.hal и другое. | В начале определим местоположение наших файлов конфигурации. По умолчанию файлы конфигурации расположены по адресу home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal и home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal. Обратите внимание, в директории config лежат все созданные конфигурации. Конфигурация может отличаться в зависимости от названия станка к примеру, Cutter_GR, мой-станок.hal и другое. | ||
Строка 48: | Строка 49: | ||
Кроме этого, для правильной работы шаговых двигателей необходимо выставить параметр SCALE в *.ini файле. SCALE - количество импульсов на мм, параметр прямо-пропорциональный количеству импульсов на оборот шагового двигателя и обратно-пропорциональный шагу винта. Другими словами, если на драйвере выставлено деление шага 1/4, шаговому двигателю требуется 800 импульсов на оборот (т.е. стандартное деление шага 200 умножили на делитель 4), а винт ШВП, установленный на станке, имеет шаг 5 мм, то параметр SCALE = 800 / 5 = 160. <br> | Кроме этого, для правильной работы шаговых двигателей необходимо выставить параметр SCALE в *.ini файле. SCALE - количество импульсов на мм, параметр прямо-пропорциональный количеству импульсов на оборот шагового двигателя и обратно-пропорциональный шагу винта. Другими словами, если на драйвере выставлено деление шага 1/4, шаговому двигателю требуется 800 импульсов на оборот (т.е. стандартное деление шага 200 умножили на делитель 4), а винт ШВП, установленный на станке, имеет шаг 5 мм, то параметр SCALE = 800 / 5 = 160. <br> | ||
− | Параметр SCALE указана в *.ini файле, в соответствии с каждой группой для своей оси. К примеру для того, чтобы изменить данный параметр для оси X нужно найти его в группе [JOINT_0]. Аналогично [JOINT_1] для оси Y и [JOINT_2] для оси Z. | + | Параметр SCALE указана в *.ini файле, в соответствии с каждой группой для своей оси. К примеру для того, чтобы изменить данный параметр для оси X нужно найти его в группе [JOINT_0]. Аналогично [JOINT_1] для оси Y и [JOINT_2] для оси Z.<br> |
+ | |||
+ | Если направление перемещения не совпадает с фактическим, то необходимо удалить строчку setp parport.... для необходимого пина. К примеру, если направление перемещения не совпадает по оси X то в *.hal файле необходимо найти строчку setp parport.0.pin-03-out-invert 1 и её удалить (достаточно сделать её комментарием поставив знак # перед строчкой: #setp parport.0.pin-03-out-invert 1). | ||
==Настройка датчиков домашнего положения== | ==Настройка датчиков домашнего положения== | ||
Строка 56: | Строка 59: | ||
net home-y <= parport.0.pin-11-in<br> | net home-y <= parport.0.pin-11-in<br> | ||
net home-z <= parport.0.pin-12-in<br> | net home-z <= parport.0.pin-12-in<br> | ||
− | net home-a <= parport.0.pin- | + | net home-a <= parport.0.pin-13-in<br> |
</code> | </code> | ||
+ | |||
Подобным образом происходит связь аппаратной и программной части в области датчиков домашнего положения. Рассмотрев детальнее мы поймешь что pin 10 соответствует входу LimX на плате LPT-DPTR 1.03 и другие входные сигналы соответственно. <br> | Подобным образом происходит связь аппаратной и программной части в области датчиков домашнего положения. Рассмотрев детальнее мы поймешь что pin 10 соответствует входу LimX на плате LPT-DPTR 1.03 и другие входные сигналы соответственно. <br> | ||
− | После того, как мы установили датчики домашнего положения необходимо проверить их срабатывание через hal-scope (более подробно см. в главе Hal-scope настоящего руководства).<br> | + | После того, как мы установили датчики домашнего положения необходимо проверить их срабатывание через hal-scope или HAL-метр (более подробно см. в главе Hal-scope настоящего руководства).<br> |
+ | Необходимо убедиться, что в свободном состоянии т.е. в состоянии когда датчик не сработал состояние в LinuxCNC соответствует FALSE.<br> | ||
+ | Для того, чтобы привести значение всех датчиков к FALSE необходимо изменить значение датчика на in-not. <br> | ||
+ | После того, как все датчики в свободном состоянии соответствуют показанию FALSE, можно приступать к дальнейшей настройке. <br> | ||
+ | |||
+ | Убедитесь, что строки, отвечающие за датчики в *.ini файле верные. Так, к примеру для оси X настройки датчиков хранятся в группе параметров [JOINT_0]:<br> | ||
+ | <code> | ||
+ | HOME_OFFSET = 0.00<br> | ||
+ | HOME_SEARCH_VEL = 15.00<br> | ||
+ | HOME_LATCH_VEL = -1.50<br> | ||
+ | HOME_IGNORE_LIMITS = YES<br> | ||
+ | HOME_SEQUENCE = 1 <br> | ||
+ | </code><br> | ||
+ | Такие же параметры соответствуют осям в группах [JOINT_1] для оси X, [JOINT_1] для оси Z.<br> | ||
+ | |||
+ | Теперь можно вернуть все оси в домашнее положение. <br> | ||
+ | В случае, если одна из осей начинает перемещаться в направлении обратном положению датчика, необходимо изменить направление поиска домашнего положения. Для этого необходимо изменить знак скорости поиска домашнего положения, к примеру: <br> | ||
+ | <code> | ||
+ | HOME_SEARCH_VEL = -15.00<br> | ||
+ | HOME_LATCH_VEL = 1.50<br> | ||
+ | </code><br> | ||
+ | Обратите внимание, что также изменяется знак параметра HOME_LATCH_VEL.<br> | ||
Далее необходимо определить минимальные и максимальные пределы (размеры рабочего поля). Для этого обратимся к *.ini файлу. В *.ini файле, для каждой оси присутствует группа параметров AXIS и JOINT. К примеру, для оси X группа [AXIS_X] и [JOINT_0]. В этих группах необходимо изменить параметры MIN_LIMIT и MAX_LIMIT, для минимального и максимального перемещения соответственно. Обратите внимание, что данные параметры повторяются как в группе AXIS, так и в группе JOINT.<br> | Далее необходимо определить минимальные и максимальные пределы (размеры рабочего поля). Для этого обратимся к *.ini файлу. В *.ini файле, для каждой оси присутствует группа параметров AXIS и JOINT. К примеру, для оси X группа [AXIS_X] и [JOINT_0]. В этих группах необходимо изменить параметры MIN_LIMIT и MAX_LIMIT, для минимального и максимального перемещения соответственно. Обратите внимание, что данные параметры повторяются как в группе AXIS, так и в группе JOINT.<br> | ||
− | |||
− | |||
==Настройка работы шпинделя== | ==Настройка работы шпинделя== | ||
Строка 91: | Строка 114: | ||
==Настройка сети и подключение сетевой папки== | ==Настройка сети и подключение сетевой папки== | ||
− | Настройку общего доступа к папке будем производить на компьютере под управлением ОС Windows. А подключаться к ней будем уже с компьютера с ОС Debian | + | Настройку общего доступа к папке будем производить на компьютере под управлением ОС Windows. А подключаться к ней будем уже с компьютера с ОС Debian GNU/Linux с LinuxCNC. |
Создаём папку в Windows где-нибудь, кликаем правой кнопкой мыши, выбираем "Свойства" - "Доступ" и жмём "Расширенная настройка":<br> | Создаём папку в Windows где-нибудь, кликаем правой кнопкой мыши, выбираем "Свойства" - "Доступ" и жмём "Расширенная настройка":<br> | ||
[[Файл:Share files windows 1.png|border|400px]]<br> | [[Файл:Share files windows 1.png|border|400px]]<br> | ||
Строка 109: | Строка 132: | ||
Надо отключить общий доступ с парольной защитой и "Сохранить изменения". | Надо отключить общий доступ с парольной защитой и "Сохранить изменения". | ||
− | ==Настройка | + | ==Настройка внешней кнопки E-Stop== |
− | + | Для удобства работы чаще всего организовывается внешняя кнопка E-stop (фактически сигналом E-Stop может, более того, должна являться не только кнопка E-stop, но и другие источники сигнала аварии. Такими источниками: драйвера шаговых двигателей имеющих выход Alarm или Fault; преобразователь частоты). Отдельное внимание стоит обратить на то, что в случае использования внешней кнопки E-stop первая функциональная клавиша (соответствующая F1) в LinuxCNC становится привязана к сигналу E-stop, что также является очень удобным. | |
− | + | Для того, чтобы клавиша была функциональна необходимо внести соответствующие изменения в *.hal файл. | |
− | + | Привести к данному следующие строки файла:<br> | |
− | + | <code> | |
− | + | net estop-ext => parport.0.pin-15-in<br> | |
− | + | net estop-out <= iocontrol.0.user-enable-out<br> | |
− | + | net estop-ext => iocontrol.0.emc-enable-in<br> | |
+ | </code> | ||
− | + | Примечание: если при включении система заблокирована, то вероятно дело в том, что входной сигнал имеет неправильное нормальное состояние (NO, NC). В таком случае нужно инвертировать входной сигнал, для этого: <br> | |
− | + | <code> | |
− | + | net estop-ext => parport.0.pin-15-in-not<br> | |
− | = | + | </code> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==Рекомендации по выбору беспроводного адаптера== | |
− | + | Для того, чтобы удобнее организовать работу оператора между рабочим ПК и ПК станка можно организовать локальную сеть. Таким образом отпадет возможность использовать Flash-диски. <br> | |
+ | Есть несколько способов организовать локальную сеть: проводную и беспроводную. Мы рекомендуем использовать беспроводной адаптер TP-Link TL-WN727N в ввиду надежности, стоимости и легкости установки драйверов в Linux. | ||
+ | Драйвера для адаптера TL-WN727N можно скачать по ссылке: <br> | ||
+ | Последовательность установки драйверов: <br> | ||
+ | 1. В скачанном архиве находятся руководство по установке и архив с драйвером. Распаковываем архив с драйвером и получаем папку rtl8188EUS_linux_v5.2.2.4_25483.20171222. Распаковывать в любое удобное место. <br> | ||
+ | 2. Открываем эмулятор терминала и переходим в папку с драйвером. К примеру, cd home/notroot/rtl8188EUS_linux_v5.2.2.4_25483.20171222.<br> | ||
+ | 3. Вводим в терминала <code> make clean</code><br> | ||
+ | 4. Вводим в терминале <code> make</code>1<br> | ||
+ | 5. Вводим <code> sudo cp 8188eu.ko lib/modules/[kernel version]/drivers/net/wirieless</code>2<br> | ||
+ | 6. Вводим <code> sudo depmode -a </code><br> | ||
+ | 7. Вводим <code> sudo modprobe 8188eu.ko </code><br> | ||
− | + | 1. После компиляции командой make в терминале мы увидим сообщения о том, какой файл скомпилирован "8188eu.ko"<br> | |
+ | 2. Версию ядра [kernel version]мы можем увидеть, если пройдем по пути lib/modules/<br> | ||
=Справочник параметров *.ini файла= | =Справочник параметров *.ini файла= | ||
Строка 293: | Строка 319: | ||
В данном блоке обратим внимание на строки setp pwmgen.0.pwm-freq 988.0, setp pwmgen.0.scale 24000, setp pwmgen.0.offset 0.02. | В данном блоке обратим внимание на строки setp pwmgen.0.pwm-freq 988.0, setp pwmgen.0.scale 24000, setp pwmgen.0.offset 0.02. | ||
− | Изменение этих параметров позволяет нам настроить соответствие реального значения оборотов шпинделя и значения оборотов в процентах, которое задается в | + | Изменение этих параметров позволяет нам настроить соответствие реального значения оборотов шпинделя и значения оборотов в процентах, которое задается в LinuxCNC пользователем. |
В строке setp pwmgen.0.scale 24000 задается максимальное количество оборотов шпинделя за 1 минуту. | В строке setp pwmgen.0.scale 24000 задается максимальное количество оборотов шпинделя за 1 минуту. | ||
В строке setp pwmgen.0.pwm-freq 988.0 задается частота генерации импульсов, которые отправляются в частотный преобразователь. | В строке setp pwmgen.0.pwm-freq 988.0 задается частота генерации импульсов, которые отправляются в частотный преобразователь. | ||
− | В строке pwmgen.0.offset 0.02 задается смещение рабочего цикла. Увеличение данного значения дает увеличение оборотов шпинделя при одном и том же значении % в | + | В строке pwmgen.0.offset 0.02 задается смещение рабочего цикла. Увеличение данного значения дает увеличение оборотов шпинделя при одном и том же значении % в LinuxCNC. Уменьшение - соответственно наоборот дает уменьшение оборотов. |
net xstep => parport.0.pin-02-out | net xstep => parport.0.pin-02-out | ||
Строка 407: | Строка 433: | ||
Для наших задач удобно просматривать состояния пинов. | Для наших задач удобно просматривать состояния пинов. | ||
− | Для запуска требуется перейти в раздел | + | Для запуска требуется перейти в раздел меню «Станок в LinuxCNC» и выбрать пункт «Показать установки HAL». |
Далее мы должны увидеть окно HALSHOW. | Далее мы должны увидеть окно HALSHOW. | ||
Строка 427: | Строка 453: | ||
Описание realtime компонентов HAL http://linuxcnc.org/docs/html/hal/rtcomps.html | Описание realtime компонентов HAL http://linuxcnc.org/docs/html/hal/rtcomps.html | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Возможные ошибки и методы их устранения== | ==Возможные ошибки и методы их устранения== |
Текущая версия на 16:37, 12 января 2024
Содержание
Введение
В настоящий момент всё оборудование под управлением LinuxCNC поставляется на контроллерах EP7i92.
В LinuxCNC настройка параметров под конкретное оборудование, происходит отлично от большинства популярных систем управления ЧПУ (Mach3 или NC-Studio). Большинство необходимых параметров задаются внесением изменений в текстовые конфигурационные файлы *.hal и *.ini.
Примечание: В составе LinuxCNC есть приложение с графическим интерфейсом пользователя для настройки конфигурации станка (Stepconf), однако, как показывает практика некоторые изменения приходится вносить в конфигурационные файлы вручную. В большинстве случаев в этом нет необходимости. Именно поэтому в данном руководстве вся настройка и внесение изменений происходят через *.hal и *.ini файлы.
Что же такое *.hal и *.ini файлы? Немного теории.
hal - Hardware Abstraction Layer (Слой аппаратных абстракций) - конфигурационный файл Linux, отвечающий за связь аппаратной и программной части станка.
К примеру в данном файле содержится информация: адрес устройства ввода-вывода (PCI-LPT или другой контроллер), назначение портов ввода\вывода функциям системы и др.
ini - файл конфигурации, содержащий настройки системы. К примеру в данном файле содержится информация: скорости, ускорения, количество импульсов на мм, скорость поиска домашнего положения, пределы перемещений и др.
Для удобства освоения материала настоящее руководство разделено на 2 части: справочники по *.hal и *.ini файлам, а также отдельные главы по настройке тех или иных функций (перемещения, шпинделя, датчиков и прочее). Ниже перечислены все необходимые параметры для настройки вашего станка под управлением LPT (в руководстве используется контроллер LPT-DPTR 1.03)
В данном руководстве подразумевается, что вы установили скаченный образ LinuxCNC т.к. некоторые аспекты по настройке уже сделаны. Также в данном руководстве не подразумевается использование утилит по автоматическому созданию или изменению файлов конфигурации.
В начале определим местоположение наших файлов конфигурации. По умолчанию файлы конфигурации расположены по адресу home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal и home/notroot/linuxcnc/config/Cutter_ST/Cutter_ST.hal. Обратите внимание, в директории config лежат все созданные конфигурации. Конфигурация может отличаться в зависимости от названия станка к примеру, Cutter_GR, мой-станок.hal и другое.
Настройка адреса ввода\вывода LPT-PCI
Настройка системы LinuxCNC для работы с LPT-портом начинается с указания адреса ввода-вывода LPT в вашем ПК. В случае использования материнской платы не имеющего на борту встроенного LPT порта, рекомендуется воспользоваться платой PCI-LPT c чипом CH351Q (ссылка на сайт CNC-Technology).
Для того, чтобы увидеть установленные в системный блок PCI устройства нужно открыть эмулятор терминала и набрать команду:
lspci –vv
В командной строке отобразятся все устройства, доступные операционной системе для работы. Среди них необходимо найти Parallel controller. Необходимый нам Region 0, адрес данного устройства, к примеру c000.
Данный адрес необходимо указать в *.hal файле конфигурации:
linuxcnc/configs/Cutter_ST/ST.hal
В открытом файле Cutter_ST.hal изменить строку loadrt hal_parport cfg=”0x378 out” на loadrt hal_parport cfg=”0xс000 out”, где 0xс000 адрес п0орта pci-платы, который мы определили ранее. Теперь мы можем запустить linuxcnc ярлыком на рабочем столе и убедиться что станок перемещается.
Настройка работы шаговых двигателей
Основные параметры настройки шаговых двигателей это деление шага (кол-во импульсов на мм), направление движения, скорости и ускорения. Дополнительные параметры, которые могут потребоваться: изменение временных составляющих импульсов на драйвер. Рассмотрим основные параметры и алгоритм настройки.
Установка пинов в *.hal
Необходимо открыть *.hal файл и убедиться в том, что порты и пины указаны в соответствии с распиновкой LPT. Подробнее смотрите в справочнике по *.hal файлу.
Настройка направлений, скоростей и ускорений для каждой из осей.
Детальней рассмотрим назначение пинов для xtep и xdir.
net xstep => parport.0.pin-02-out
Данные записи означают, что сигнал Step по оси X будет подаваться на пин 2 LPT-порта, а сигнал Dir по оси X будет подаваться на пин 3 LPT-порта. По аналогии проверяем другие сигналы для LPT.
net xdir => parport.0.pin-03-out
Кроме этого, для правильной работы шаговых двигателей необходимо выставить параметр SCALE в *.ini файле. SCALE - количество импульсов на мм, параметр прямо-пропорциональный количеству импульсов на оборот шагового двигателя и обратно-пропорциональный шагу винта. Другими словами, если на драйвере выставлено деление шага 1/4, шаговому двигателю требуется 800 импульсов на оборот (т.е. стандартное деление шага 200 умножили на делитель 4), а винт ШВП, установленный на станке, имеет шаг 5 мм, то параметр SCALE = 800 / 5 = 160.
Параметр SCALE указана в *.ini файле, в соответствии с каждой группой для своей оси. К примеру для того, чтобы изменить данный параметр для оси X нужно найти его в группе [JOINT_0]. Аналогично [JOINT_1] для оси Y и [JOINT_2] для оси Z.
Если направление перемещения не совпадает с фактическим, то необходимо удалить строчку setp parport.... для необходимого пина. К примеру, если направление перемещения не совпадает по оси X то в *.hal файле необходимо найти строчку setp parport.0.pin-03-out-invert 1 и её удалить (достаточно сделать её комментарием поставив знак # перед строчкой: #setp parport.0.pin-03-out-invert 1).
Настройка датчиков домашнего положения
Для настройки датчиков необходимо убедиться, что аппаратная и программная часть связаны. Для этого откроем наш *.hal файл и проверим правильность настройки.
net home-x <= parport.0.pin-10-in
net home-y <= parport.0.pin-11-in
net home-z <= parport.0.pin-12-in
net home-a <= parport.0.pin-13-in
Подобным образом происходит связь аппаратной и программной части в области датчиков домашнего положения. Рассмотрев детальнее мы поймешь что pin 10 соответствует входу LimX на плате LPT-DPTR 1.03 и другие входные сигналы соответственно.
После того, как мы установили датчики домашнего положения необходимо проверить их срабатывание через hal-scope или HAL-метр (более подробно см. в главе Hal-scope настоящего руководства).
Необходимо убедиться, что в свободном состоянии т.е. в состоянии когда датчик не сработал состояние в LinuxCNC соответствует FALSE.
Для того, чтобы привести значение всех датчиков к FALSE необходимо изменить значение датчика на in-not.
После того, как все датчики в свободном состоянии соответствуют показанию FALSE, можно приступать к дальнейшей настройке.
Убедитесь, что строки, отвечающие за датчики в *.ini файле верные. Так, к примеру для оси X настройки датчиков хранятся в группе параметров [JOINT_0]:
HOME_OFFSET = 0.00
HOME_SEARCH_VEL = 15.00
HOME_LATCH_VEL = -1.50
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
Такие же параметры соответствуют осям в группах [JOINT_1] для оси X, [JOINT_1] для оси Z.
Теперь можно вернуть все оси в домашнее положение.
В случае, если одна из осей начинает перемещаться в направлении обратном положению датчика, необходимо изменить направление поиска домашнего положения. Для этого необходимо изменить знак скорости поиска домашнего положения, к примеру:
HOME_SEARCH_VEL = -15.00
HOME_LATCH_VEL = 1.50
Обратите внимание, что также изменяется знак параметра HOME_LATCH_VEL.
Далее необходимо определить минимальные и максимальные пределы (размеры рабочего поля). Для этого обратимся к *.ini файлу. В *.ini файле, для каждой оси присутствует группа параметров AXIS и JOINT. К примеру, для оси X группа [AXIS_X] и [JOINT_0]. В этих группах необходимо изменить параметры MIN_LIMIT и MAX_LIMIT, для минимального и максимального перемещения соответственно. Обратите внимание, что данные параметры повторяются как в группе AXIS, так и в группе JOINT.
Настройка работы шпинделя
Настройка шпинделя как правило состоит из двух частей: настройка автоматического вкл./выкл. шпинделя и настройка генерации ШИМ для управления скоростью вращения шпинделя.
Рассмотрим первую составляющую. Включение - выключение шпинделя простая задача, потому в *.hal файле всего две строки, указывающие на эту функцию. Необходимо убедиться, что в *.hal файле существует связь сигнала spindle-cw
с пином, отвечающим за включение.
net spindle-cw => parport.0.pin-16-out
setp parport.0.pin-16-out-invert 1
Далее необходимо убедиться, что точно также подключен сигнал spindle-pwm
отвечающий за выход ШИМ.
net spindle-pwm => parport.0.pin-14-out
setp parport.0.pin-14-out-invert 1
Далее, обратим внимание на настройку формирования импульсов ШИМ, который отвечает за регулировку оборотов шпинделя.
setp pwmgen.0.pwm-freq 988.0
Среди них, параметр
setp pwmgen.0.scale 24000
setp pwmgen.0.offset 0.02
setp pwmgen.0.dither-pwm true
setp pwmgen.0.pwm-freq 988.0
является несущей частотой ШИМ сигнала, параметр setp pwmgen.0.scale 24000
является максимальной скоростью шпинделя, параметр setp pwmgen.0.offset 0.02
, определяет смещение фактической частоты от заданной (применяется для более точной калибровки) и параметр setp pwmgen.0.dither-pwm true
указывает на "метод округления".
Настройка сети и подключение сетевой папки
Настройку общего доступа к папке будем производить на компьютере под управлением ОС Windows. А подключаться к ней будем уже с компьютера с ОС Debian GNU/Linux с LinuxCNC.
Создаём папку в Windows где-нибудь, кликаем правой кнопкой мыши, выбираем "Свойства" - "Доступ" и жмём "Расширенная настройка":
Далее проставляем галочку "Открыть общий доступ к этой папке" и нажимаем "Применить":
Всё, мы расшарили папку в Windows и к ней можно подключаться.
Как же все таки подключиться из Debian к нашей сетевой папке?
Откроем файловый менеджер (Thunar).
И выберем "Обзор сети".
Осталось найти сетевую папку в сети и ввести пароль и логин пользователя Windows.
Как же подключиться без ввода пароля к Windows папке из Debian?
Нужно в Windows открыть "Центр управления сетями и общим доступом", выбрать "Изменить дополнительные параметры общего доступа":
В пункте "Все сети" в самом низу будет пункт "Общий доступ с парольной защитой":
Надо отключить общий доступ с парольной защитой и "Сохранить изменения".
Настройка внешней кнопки E-Stop
Для удобства работы чаще всего организовывается внешняя кнопка E-stop (фактически сигналом E-Stop может, более того, должна являться не только кнопка E-stop, но и другие источники сигнала аварии. Такими источниками: драйвера шаговых двигателей имеющих выход Alarm или Fault; преобразователь частоты). Отдельное внимание стоит обратить на то, что в случае использования внешней кнопки E-stop первая функциональная клавиша (соответствующая F1) в LinuxCNC становится привязана к сигналу E-stop, что также является очень удобным.
Для того, чтобы клавиша была функциональна необходимо внести соответствующие изменения в *.hal файл.
Привести к данному следующие строки файла:
net estop-ext => parport.0.pin-15-in
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
Примечание: если при включении система заблокирована, то вероятно дело в том, что входной сигнал имеет неправильное нормальное состояние (NO, NC). В таком случае нужно инвертировать входной сигнал, для этого:
net estop-ext => parport.0.pin-15-in-not
Рекомендации по выбору беспроводного адаптера
Для того, чтобы удобнее организовать работу оператора между рабочим ПК и ПК станка можно организовать локальную сеть. Таким образом отпадет возможность использовать Flash-диски.
Есть несколько способов организовать локальную сеть: проводную и беспроводную. Мы рекомендуем использовать беспроводной адаптер TP-Link TL-WN727N в ввиду надежности, стоимости и легкости установки драйверов в Linux.
Драйвера для адаптера TL-WN727N можно скачать по ссылке:
Последовательность установки драйверов:
1. В скачанном архиве находятся руководство по установке и архив с драйвером. Распаковываем архив с драйвером и получаем папку rtl8188EUS_linux_v5.2.2.4_25483.20171222. Распаковывать в любое удобное место.
2. Открываем эмулятор терминала и переходим в папку с драйвером. К примеру, cd home/notroot/rtl8188EUS_linux_v5.2.2.4_25483.20171222.
3. Вводим в терминала make clean
4. Вводим в терминале make
1
5. Вводим sudo cp 8188eu.ko lib/modules/[kernel version]/drivers/net/wirieless
2
6. Вводим sudo depmode -a
7. Вводим sudo modprobe 8188eu.ko
1. После компиляции командой make в терминале мы увидим сообщения о том, какой файл скомпилирован "8188eu.ko"
2. Версию ядра [kernel version]мы можем увидеть, если пройдем по пути lib/modules/
Справочник параметров *.ini файла
- .ini - файл конфигурации, в котором хранятся основные настройки конфигурации LinuxCNC под конкретное оборудование. Данный файл располагается в директории: home/user/linuxcnc/configs/ST.ini, где:
user - имя пользователя на вашем ПК
ST*.ini - название вашей конфигурации
Давайте разберем, из чего состоит *.ini файл.
Группа [DISPLAY]
DISPLAY
Имя интерфейса для использования при загрузки текущей конфигурации LinuxCNC.
Доступные интерфейсы: axis, touchy, gmoccapy, gscreen, keystick, mini, tklinuxcnc, xemc.
DISPLAY = gmoccapy
Выбран интерфейс GMOCCAPY.
EDITOR
Имя графического редактора, с помощью которого можно открыть файл управляющей программы для редактирования.
Доступные редакторы: gedit, mousepad.
EDITOR = gedit
Выбран графический редактор gedit.
POSITION_OFFSET
Система координат, которая отображается по умолчанию.
Доступные системы координат: RELATIVE - относительная, MACHINE - абсолютная.
POSTION_OFFSET = RELATIVE
По умолчанию выбрана относительная система координат.
POSITION_FEEDBACK
Отображение координат в интерфейсе.
Возможно отображать текущую позицию двумя способами: ACTUAL - действительное положение т.е. положение полученное по обратной связи от двигателей, COMMANDER - заданное (идеальное) значение координат.
POSITION_FEEDBACK = ACTUAL
По умолчанию выбрано актуальное отображение.
ARCDIVISION
Тип отображения дуг (дробление дуги на прямые участки). Чем большее значение дробления указано, тем более точное (приближенное к идеальной дуге) отображение будет в окне предпросмотра, но чем тем требуется больше ресурсов ПК.
ARCDIVISION = 64
Значение по умолчанию 64.
GRIDS
Тип деления сетки. Единица измерения дюймы (in), мм (mm).
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
Доступные по умолчанию сетки.
MAX_FEED_OVERRIDE
Максимальное изменение скорости подачи, относительно скорости выставленной в управляющей программе или окне MDI.
MAX_FEED_OVERRIDE = 1.2
Значение 1.2 означает, что пользователь может превысить значение установленной скорости лишь на 20%
MIN_SPINDLE_OVERRIDE
Минимальное значение скорости вращения шпинделя, относительно выставленной в управляющей программе или окне MDI.
MIN_SPINDLE_OVERRIDE = 0.5
Значение 0.5 означает, что пользователь может понизить установленную скорость вращения шпинделя не более чем на 50%
MAX_SPINDLE_OVERRIDE
Максимальное значение скорости вращения шпинделя, относительно выставленной в управляющей программе или окне MDI.
MAX_SPINDLE_OVERRIDE = 1.2
Значение 1.2 означает, что пользователь может повысить установленную скорость вращения шпинделя не более чем на 20%
DEFAULT_LINEAR_VELOCITY
Скорость перемещений, установленная при первом запуске LinuxCNC.
DEFAULT_LINEAR_VELOCITY = 20.0
Скорость по умолчанию 20 мм/сек.
MAX_LINEAR_VELOCITY
Максимальная скорость свободных перемещений, которую можно изменять из интерфейса.
MAX_LINEAR_VELOCITY = 100.0
Максимальная скорость перемещений не более 100.0 мм\сек.
Группа [EMCMOT]
EMCMOT
COMM_TIMEOUT
BASE_PERIOD
Параметр BASE_PERIOD
является одним из основных параметров, влияющих на максимальную скорость перемещения станка. Параметр BASE_PERIOD
определяется исходя из показателей Latency-Test.
SERVO_PERIOD
Группа [TRAJ]
Группа [AXIS_*]
TYPE
В LinuxCNC могут быть два типа оси: линейная и угловая.
TYPE = LINEAR
Линейная ось
TYPE = ANGULAT
Угловая (поворотная ось)
HOME
MAX_VELOCITY
Максимальная скорость перемещений данной оси (мм\сек).
MAX_VELOCITY = 100.0
Максимальная скорость перемещения 100.0 мм/сек.
MAX_ACCELERATION
Максимальное ускорение данной оси (мм\сек^2).
Пример: Максимальное ускорение 600 мм\сек^2 MAX_ACCELERATION = 600.0
STEPGEN_MAXACCEL
Данные значение должно быть на 1-10% больше по сравнению с параметром MAX_ACCELERATION. Если вы используете параметр BACKLASH (компенсацию люфта), то данный параметр необходимо увеличить в 1,5 - 2 раза по сравнению с параметром MAX_ACCELERATION.
SCALE
Параметр SCALE отвечает за количество импульсов на единицу перемещения. Другими словами, данный параметр отвечает за соответствие реального перемещения станка программному. Для того, чтобы посчитать количество импульсов на мм, необходимо воспользоваться формулой.
FERROR
Максимальное допустимое отклонение от перемещений станка (в мм). Если рассогласование между реальным и заданным положением превысит значение FERROR, то контроллер отключится. Максимально допустимое отклонение FERROR может достигаться при скорости [TRAJ] MAX_VELOCITY и при снижении скорости ошибка будет стремиться к MIN_FERROR.
MIN_FERROR
Минимальное допустимое отклонение от заданного перемещения (в мм). Если рассогласование между реальным и заданным положением превысит значение MIN_FERROR, то контроллер отключится. Минимально допустимое отклонение MIN_FERROR при низкой скорости. При росте скорости, пропорционально будет увеличиваться ошибка рассогласования и может достигать FERROR при скорости MAX_VELOCITY.
MIN_LIMIT
Минимальные машинные координаты для перемещения (мм).
MAX_LIMIT
Максимальные координаты станка для перемещения (мм).
HOME_OFFSET
Смещение рабочего поля станка относительно датчика домашнего положения для данной оси.
HOME_SEARCH_VEL
Скорость возврата в домашнее положение по датчикам (мм\сек).
Примечание: Для того, чтобы изменить направление поиска домашнего положения, необходимо поменять знак.
Пример: HOME_SEARCH_VEL = -150.00000
Примечание: При указании параметра HOME_SEARCH_VEL = 0.0, ось не будет возвращаться в домашнее положение (если в конструкции станка, не предусмотрен датчик домашнего положения).
HOME_LATCH_VEL
Скорость уточнения (точной калибровки) датчиков домашнего положения (мм\сек).
HOME_IGNORE_LIMITS
HOME_SEQUENCE
Справочник параметров *.hal файла
Для работы системы необходим правильно настроенный *.hal файл. Пройдемся по реальному конфигурационному файлу и изучим требуемые параметры.
loadrt [KINS]KINEMATICS loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS loadrt hal_parport cfg="0xe000 out" setp parport.0.reset-time 5000 loadrt stepgen step_type=0,0,0 loadrt pwmgen output_type=1
В блоке выше нас интересует строка loadrt hal_parport cfg="0xe000 out", в ней указан адрес LPT порта в системе, для того, чтобы узнать какой адрес требуется сюда вписать обратимся к разделу "Настройка адреса ввода\вывода LPT-PCI".
addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf pwmgen.make-pulses base-thread addf parport.0.write base-thread addf parport.0.reset base-thread addf stepgen.capture-position servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf stepgen.update-freq servo-thread addf pwmgen.update servo-thread net spindle-cmd-rpm => pwmgen.0.value net spindle-on <= spindle.0.on => pwmgen.0.enable net spindle-pwm <= pwmgen.0.pwm setp pwmgen.0.pwm-freq 988.0 setp pwmgen.0.scale 24000 setp pwmgen.0.offset 0.02 setp pwmgen.0.dither-pwm true net spindle-cmd-rpm <= spindle.0.speed-out net spindle-cmd-rpm-abs <= spindle.0.speed-out-abs net spindle-cmd-rps <= spindle.0.speed-out-rps net spindle-cmd-rps-abs <= spindle.0.speed-out-rps-abs net spindle-at-speed => spindle.0.at-speed net spindle-cw <= spindle.0.forward net spindle-ccw <= spindle.0.reverse
В данном блоке обратим внимание на строки setp pwmgen.0.pwm-freq 988.0, setp pwmgen.0.scale 24000, setp pwmgen.0.offset 0.02. Изменение этих параметров позволяет нам настроить соответствие реального значения оборотов шпинделя и значения оборотов в процентах, которое задается в LinuxCNC пользователем. В строке setp pwmgen.0.scale 24000 задается максимальное количество оборотов шпинделя за 1 минуту. В строке setp pwmgen.0.pwm-freq 988.0 задается частота генерации импульсов, которые отправляются в частотный преобразователь. В строке pwmgen.0.offset 0.02 задается смещение рабочего цикла. Увеличение данного значения дает увеличение оборотов шпинделя при одном и том же значении % в LinuxCNC. Уменьшение - соответственно наоборот дает уменьшение оборотов.
net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 net xdir => parport.0.pin-03-out setp parport.0.pin-03-out-invert 1
net ystep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net ydir => parport.0.pin-05-out setp parport.0.pin-05-out-reset 1
net zstep => parport.0.pin-06-out setp parport.0.pin-06-out-reset 1 net zdir => parport.0.pin-07-out setp parport.0.pin-07-out-reset 1
В блоках выше настраиваются параметры осей X,Y,Z. Разберем на примере первого блока (ось X). net xstep => parport.0.pin-02-out - В данной строке мы задаем номер пина LPT, к которому подключен сигнал STEP от драйвера. Тоесть 02 - номер пина LPT. setp parport.0.pin-02-out-reset 1 - Задает режим работы пина (он может быть прямым или инвертированным). Для сигнала STEP инверсия не требуется, поэтому в этой строке ничего кроме номера пина LPT менять не надо. net xdir => parport.0.pin-03-out - В данной строке мы задаем номер пина LPT, к которому подключен сигнал DIR от драйвера. Тоесть 03 - номер пина LPT. setp parport.0.pin-03-out-reset 1 - Задает режим работы пина (он может быть прямым или инвертированным). Для сигнала DIR может потребоваться инверсия - это изменит направление движения двигателя. Для инверсии потребуется заменить reset на invert. Что касается номера пина LPT, тут всё остается как и в пояснении выше (если меняем номер пина сигнала DIR, то тут тоже потребуется поменять).
Остальные блоки (для других осей) настраиваются полностью аналогично. Переходим далее.
net spindle-cw => parport.0.pin-16-out setp parport.0.pin-16-out-invert 1
В первой строке задается пин LPT для запуска шпинделя в прямом напрвлении. В второй строке задается инверсия для этого сигнала. Если требуется запускать шпиндель в обратном направлении используем spindle-ccw
net spindle-pwm => parport.0.pin-14-out setp parport.0.pin-14-out-invert 1
В первой строке этого блока задается пин LPT для ШИМ управления шпинделя. Во второй строке задается режим работы ШИМ/ЧИМ. Для наших задач этот пин должен быть инвертирован.
net home-x <= parport.0.pin-10-in net home-y <= parport.0.pin-11-in net home-z <= parport.0.pin-13-in net estop-ext <= parport.0.pin-15-in net probe-in => motion.probe-input net probe-in <= parport.0.pin-12-in-not
В данном блоке настраиваются входные пины LPT для датчиков по осям, пин кнопки аварийной остановки и пин датчика высоты инструмента. Стоит заметить, что инверсия входных пинов производится с помощью кострукции -not (Примером является последняя строка в блоке)
setp stepgen.0.position-scale [JOINT_0]SCALE setp stepgen.0.steplen 1 setp stepgen.0.stepspace 0 setp stepgen.0.dirhold 10000 setp stepgen.0.dirsetup 10000 setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb net xstep <= stepgen.0.step net xdir <= stepgen.0.dir net xenable joint.0.amp-enable-out => stepgen.0.enable net home-x => joint.0.home-sw-in net min-home-x => joint.0.neg-lim-sw-in
setp stepgen.1.position-scale [JOINT_1]SCALE setp stepgen.1.steplen 1 setp stepgen.1.stepspace 0 setp stepgen.1.dirhold 10000 setp stepgen.1.dirsetup 10000 setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb net ystep <= stepgen.1.step net ydir <= stepgen.1.dir net yenable joint.1.amp-enable-out => stepgen.1.enable net home-y => joint.1.home-sw-in net min-home-y => joint.1.neg-lim-sw-in
setp stepgen.2.position-scale [JOINT_2]SCALE setp stepgen.2.steplen 1 setp stepgen.2.stepspace 0 setp stepgen.2.dirhold 10000 setp stepgen.2.dirsetup 10000 setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL net zpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd net zpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb net zstep <= stepgen.2.step net zdir <= stepgen.2.dir net zenable joint.2.amp-enable-out => stepgen.2.enable net home-z => joint.2.home-sw-in net min-home-z => joint.2.neg-lim-sw-in
Как мы можем видеть, в блоках выше настраиваются параметры шаговых двигателей по осям. Нас интересуют только идентичные для блоков выше параметры steplen,stepspace, dirhold, dirsetup. Они задаются в соответствии с используемыми драйверами, по-умолчанию заданы эти параметры.
net estop-out <= iocontrol.0.user-enable-out net estop-ext => iocontrol.0.emc-enable-in
В данном блоке настраивается блокировка работы кнопкой аварийной остановки, тоесть если кнопка нажата, то мы не можем управлять станком. Если нам требуется временно отключить эту кнопку (для тестирования), то для этого потребуется заменить вторую строку на net estop-out => iocontrol.0.emc-enable-in.
loadusr -W hal_manualtoolchange net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Блок выше отвечает за использование автоматической или ручной смены инструмента, по умолчанию используется ручная, поэтому изменения не потребуются.
Работа с утилитами HAL
HALSHOW
Данная утилита позволяет работать со всеми переменными, пинами, сигналами системы.
Для наших задач удобно просматривать состояния пинов.
Для запуска требуется перейти в раздел меню «Станок в LinuxCNC» и выбрать пункт «Показать установки HAL».
Далее мы должны увидеть окно HALSHOW.
В левой колонке мы можем найти интересующий нас пин. Откроем ветку дерева Pins->parport->0. Для просмотра состояний пинов щелкнем по вкладке "Следить" и выберем из нашей ветки нужные пины для просмотра двойным кликом по ним.
Теперь, когда мы видим состояния нужных нам пинов, можно проверить работу утилиты физически замыкая датчики.
Приложения
Ссылки на дополнительную документацию
Вы можете найти полное описание системы EMC2 перейдя по ссылке http://linuxcnc.org/docs/html/
Список компонентов HAL http://linuxcnc.org/docs/2.7/html/hal/components.html
Описание realtime компонентов HAL http://linuxcnc.org/docs/html/hal/rtcomps.html
Возможные ошибки и методы их устранения
Ошибка | Возможная причина | Метод устранения |
Joint * following error | Компьютер не отвечает техническим требованиям; Установленная скорость перемещений слишком велика для допустимого параметра BASE_PERIOD в *.hal файле;
|
Провести LATENCY-TEST и установить параметр BASE_PERIOD на 10% выше значение MaxJitter (обратите внимание на метод проведения LATENCY-TEST). |
Показатели Latency-Test на различных ПК
Max Interval (1.0 ms) | Max Jitter (1.0 ms) | Max Interval (25 ns) | Max Jitter (25 ns) | Материнская плата | Центральный процессор | Объем RAM | Видеокарта | HDD |
1032498 | 36782 | 54009 | 29009 | Asus A68HM-K | AMD A6-7400K | 4Gb | AMD A6-7400K Radeon R5 | HDD Western Digital WD800JD-22MSA1 |