Linux cnc инструкция по эксплуатации

LinuxCNC — это набор настраиваемых приложений для управления станками с числовым программным управлением (ЧПУ), 3D-принтерами, роботами, лазерными резаками, плазменными резаками и другими автоматизированными устройствами.

1. Как работает LinuxCNC

LinuxCNC способен обеспечить согласованное управление по 9 осям движения. По своей сути программа состоит из нескольких ключевых компонентов, которые объединены вместе и образуют единую целостную систему:

  • графический интерфейс пользователя (GUI), который образует основной интерфейс между оператором, программным обеспечением и самим станком с ЧПУ;
  • уровень аппаратной абстракции (HAL), который обеспечивает метод связывания всех различных внутренних виртуальных сигналов, генерируемых и принимаемых LinuxCNC, с внешним миром;
  • контроллеры высокого уровня, которые координируют создание и выполнение управления движением станка с ЧПУ, а именно контроллер движения (EMCMOT), контроллер дискретного ввода / вывода (EMCIO) и исполнитель задач (EMCTASK).

На иллюстрации ниже представлена ​​простая блок-схема, показывающая, как может выглядеть типичный 3-осевой фрезерный станок с ЧПУ с шаговыми двигателями:

Принцип работы LinuxCNC
Принцип работы LinuxCNC

Компьютер под управлением LinuxCNC отправляет последовательность импульсов через параллельный порт на шаговые приводы, к каждому из которых подключен один шаговый двигатель. Каждый привод получает два независимых сигнала; один сигнал, чтобы дать команду приводу перемещать связанный с ним шаговый двигатель по часовой стрелке или против часовой стрелки, и второй сигнал, который определяет скорость, с которой этот шаговый двигатель вращается.

Проиллюстрированная система шагового двигателя под управлением параллельного порта, система LinuxCNC также может использовать преимущества широкого спектра специализированных аппаратных интерфейсов управления движением для увеличения скорости и возможностей ввода-вывода.

В большинстве случаев пользователи создают конфигурацию, специфичную для настройки своего станка с ЧПУ, используя либо Stepper Configuration Wizard (для систем ЧПУ, работающих с параллельным портом компьютеров), либо Mesa Hardware Wizard (для более продвинутых систем, использующих Mesa Anything I / O PCI карта). Запуск любого из мастеров создаст несколько папок на жестком диске компьютеров, содержащих ряд файлов конфигурации, специфичных для этого станка с ЧПУ, и значок, расположенный на рабочем столе, чтобы облегчить запуск LinuxCNC.

Например, если мастер настройки шагового двигателя использовался для создания настройки для 3-осевого фрезерного станка с ЧПУ, показанного выше и названного My_CNC, папки, созданные мастером, обычно будут содержать следующие файлы:

  • Папка: My_CNC
    • My_CNC.ini
      • Файл INI содержит всю основную информацию об оборудовании, касающуюся работы фрезерного станка с ЧПУ, такую ​​как количество шагов, которые каждый шаговый двигатель должен повернуть, чтобы совершить один полный оборот, максимальная скорость, с которой может работать каждый шаговый двигатель, пределы перемещения каждой оси или конфигурации и поведения концевых выключателей на каждой оси.
    • My_CNC.hal
      • Этот файл HAL содержит информацию, которая сообщает LinuxCNC, как связать внутренние виртуальные сигналы с физическими соединениями за пределами компьютера. Например, указание вывода 4 на параллельном порту для отправки сигнала направления шага оси Z или указание LinuxCNC прекратить движение двигателя оси X при срабатывании концевого выключателя на выводе 13 параллельного порта.
    • custom.HAL
      • Настройки конфигурации фрезера, выходящие за рамки мастера, могут быть выполнены путем включения дополнительных ссылок на другие виртуальные точки в LinuxCNC в этот файл HAL. При запуске сеанса LinuxCNC этот файл читается и обрабатывается до загрузки графического интерфейса. Пример может включать в себя инициирование связи Modbus с двигателем шпинделя, чтобы он был подтвержден как работоспособный до отображения графического интерфейса пользователя.
    • custom_postgui.hal
      • Файл custom_postgui HAL допускает дальнейшую настройку LinuxCNC, но отличается от custom.HAL тем, что он обрабатывается после отображения графического интерфейса пользователя. Например, после установления связи Modbus с двигателем шпинделя в custom.hal LinuxCNC может использовать файл custom_postgui, чтобы связать считывание скорости шпинделя с моторного привода с гистограммой, отображаемой в графическом интерфейсе пользователя.
    • postgui_backup.hal
      • Он предоставляется в качестве резервной копии файла custom_postgui.hal, чтобы пользователь мог быстро восстановить ранее работавшую конфигурацию postgui HAL. Это особенно полезно, если пользователь хочет снова запустить Мастер настройки под тем же именем My_CNC, чтобы изменить некоторые параметры станка. Сохранение конфигурации в мастере перезапишет существующий файл custom_postgui, а файл postgui_backup останется нетронутым.
    • tool.tbl
      • Файл таблицы инструментов содержит параметризованный список любых режущих инструментов, используемых на фрезерном станке. Эти параметры могут включать диаметр и длину фрезы и используются для предоставления каталога данных, которые сообщают LinuxCNC, как компенсировать его движение для инструментов разного размера в рамках операции фрезерования.
  • Папка: nc_files
    • Папка nc_files предоставляется как место по умолчанию для хранения программ G-кода, используемых для управления станком с ЧПУ. Он также включает ряд подпапок с примерами G-кода.

2. Графические пользовательские интерфейсы LinuxCNC

Графический пользовательский интерфейс — это часть LinuxCNC, с которой взаимодействует оператор станка. LinuxCNC поставляется с несколькими типами пользовательских интерфейсов, которые можно выбрать, отредактировав определенные поля, содержащиеся в файле INI:

Axis — стандартный графический интерфейс клавиатуры. Это также графический интерфейс по умолчанию, запускаемый, когда мастер настройки используется для создания средства запуска значков на рабочем столе:

Интерфейс Axis LinuxCNC
Интерфейс Axis LinuxCNC

Touchy — графический интерфейс с сенсорным экраном:

Touchy графический интерфейс LinuxCNC с сенсорным экраном
Touchy графический интерфейс LinuxCNC с сенсорным экраном

Gscreen — настраиваемый пользователем графический интерфейс сенсорного экрана:

Gscreen настраиваемый пользователем графический интерфейс сенсорного экрана
Gscreen настраиваемый пользователем графический интерфейс сенсорного экрана

GMOCCAPY — графический интерфейс сенсорного экрана на основе Gscreen. GMOCCAPY также разработан, чтобы одинаково хорошо работать в приложениях, где клавиатура и мышь являются предпочтительными методами управления графическим интерфейсом:

GMOCCAPY графический интерфейс сенсорного экрана на основе Gscreen
GMOCCAPY графический интерфейс сенсорного экрана на основе Gscreen

NGCGUI — графический интерфейс LinuxCNC, обеспечивающий программирование G-кода в стиле мастера. NGCGUI может быть запущен как отдельная программа или встроен в другой графический интерфейс в виде ряда вкладок. На следующем снимке экрана показан NGCGUI, встроенный в Axis:

NGCGUI графический интерфейс подпрограммы
NGCGUI графический интерфейс подпрограммы

3. Виртуальные панели управления

Как упоминалось выше, многие графические интерфейсы LinuxCNC могут быть настроены пользователем. Это может быть сделано для добавления индикаторов, датчиков, переключателей или ползунков к основному внешнему виду одного из графических интерфейсов пользователя для повышения гибкости или функциональности. В LinuxCNC предлагается два стиля виртуальной панели управления:

PyVCP, виртуальная панель управления на основе Python, которую можно добавить в графический интерфейс Axis. PyVCP использует только виртуальные сигналы, содержащиеся на уровне аппаратной абстракции, такие как индикатор скорости шпинделя или выходной сигнал аварийной остановки, и имеет простой вид. Это делает его отличным выбором, если пользователь хочет добавить виртуальную панель управления с минимальными усилиями.

PyVCP виртуальная панель управления LinuxCNC на основе Python
PyVCP виртуальная панель управления LinuxCNC на основе Python

GladeVCP, виртуальная панель управления на основе Glade, которую можно добавить в графический интерфейс Axis или Touchy. GladeVCP имеет преимущество перед PyVCP в том, что он не ограничивается отображением или управлением виртуальными сигналами HAL, но может включать другие внешние интерфейсы вне LinuxCNC, такие как оконные или сетевые события. GladeVCP также более гибок в том, как его можно настроить для отображения в графическом интерфейсе:

GladeVCP виртуальная панель управления LinuxCNC
GladeVCP виртуальная панель управления LinuxCNC

4. Языки

LinuxCNC использует файлы перевода для перевода пользовательских интерфейсов LinuxCNC на многие языки, включая французский, немецкий, итальянский, финский, русский, румынский, португальский и китайский. Предполагая, что перевод был создан, LinuxCNC будет автоматически использовать любой родной язык, на котором вы вошли в систему при запуске операционной системы Linux. Если ваш язык не был переведен, обратитесь за помощью к разработчику в IRC, в список рассылки или на форум пользователей.

5. Режимы работы

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

В ручном режиме каждая команда вводится отдельно. Говоря человеческим языком, ручная команда могла бы включать СОЖ или подвинуть X со скоростью 25 дюймов в минуту. Это примерно эквивалентно щелчку переключателя или повороту маховика для оси. Эти команды обычно обрабатываются в одном из графических интерфейсов нажатием кнопки мыши или удержанием клавиши на клавиатуре. В автоматическом режиме аналогичная кнопка или нажатие клавиши может использоваться для загрузки или запуска целой программы G-кода, которая хранится в файле. В режиме MDI оператор может ввести блок кода и приказать машине выполнить его, нажав клавишу «return» или «enter» на клавиатуре.

Некоторые команды управления движением доступны одновременно и вызывают одинаковые изменения движения во всех режимах. К ним относятся прерывание, аварийный останов и корректировка скорости подачи. Подобные команды не требуют пояснений.

Пользовательский интерфейс AXIS скрывает некоторые различия между автоматическим и другими режимами, делая автоматические команды доступными в большинстве случаев. Это также стирает различие между ручным и MDI, потому что некоторые ручные команды, такие как Touch Off, фактически реализуются путем отправки команд MDI. Это достигается путем автоматического перехода в режим, необходимый для действия, запрошенного пользователем.

Содержание

  • 1 Введение
    • 1.1 Настройка адреса вводавывода LPT-PCI
    • 1.2 Настройка работы шаговых двигателей
    • 1.3 Настройка датчиков домашнего положения
    • 1.4 Настройка работы шпинделя
    • 1.5 Настройка сети и подключение сетевой папки
    • 1.6 Настройка удаленного доступа
    • 1.7 Настройка высоты датчика автоматического определения высоты инструмента
    • 1.8 Настройка внешней кнопки E-Stop
    • 1.9 Рекомендации по выбору беспроводного адаптера
  • 2 Справочник параметров *.ini файла
    • 2.1 Группа [DISPLAY]
      • 2.1.1 DISPLAY
      • 2.1.2 EDITOR
      • 2.1.3 POSITION_OFFSET
      • 2.1.4 POSITION_FEEDBACK
      • 2.1.5 ARCDIVISION
      • 2.1.6 GRIDS
      • 2.1.7 MAX_FEED_OVERRIDE
      • 2.1.8 MIN_SPINDLE_OVERRIDE
      • 2.1.9 MAX_SPINDLE_OVERRIDE
      • 2.1.10 DEFAULT_LINEAR_VELOCITY
      • 2.1.11 MAX_LINEAR_VELOCITY
    • 2.2 Группа [EMCMOT]
      • 2.2.1 EMCMOT
      • 2.2.2 COMM_TIMEOUT
      • 2.2.3 BASE_PERIOD
      • 2.2.4 SERVO_PERIOD
    • 2.3 Группа [TRAJ]
    • 2.4 Группа [AXIS_*]
      • 2.4.1 TYPE
      • 2.4.2 HOME
      • 2.4.3 MAX_VELOCITY
      • 2.4.4 MAX_ACCELERATION
      • 2.4.5 STEPGEN_MAXACCEL
      • 2.4.6 SCALE
      • 2.4.7 FERROR
      • 2.4.8 MIN_FERROR
      • 2.4.9 MIN_LIMIT
      • 2.4.10 MAX_LIMIT
      • 2.4.11 HOME_OFFSET
      • 2.4.12 HOME_SEARCH_VEL
      • 2.4.13 HOME_LATCH_VEL
      • 2.4.14 HOME_IGNORE_LIMITS
      • 2.4.15 HOME_SEQUENCE
  • 3 Справочник параметров *.hal файла
  • 4 Работа с утилитами HAL
    • 4.1 HALSHOW
  • 5 Приложения
    • 5.1 Ссылки на дополнительную документацию
    • 5.2 Конфигурационные файлы LinuxCNC для оборудования компании CNC-Technology
    • 5.3 Возможные ошибки и методы их устранения
    • 5.4 Показатели Latency-Test на различных ПК

Введение

В настоящий момент всё оборудование под управлением Craftex поставляется на контроллерах 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)

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

В начале определим местоположение наших файлов конфигурации. По умолчанию файлы конфигурации расположены по адресу 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
net xdir => parport.0.pin-03-out

Данные записи означают, что сигнал Step по оси X будет подаваться на пин 2 LPT-порта, а сигнал Dir по оси X будет подаваться на пин 3 LPT-порта. По аналогии проверяем другие сигналы для LPT.

Кроме этого, для правильной работы шаговых двигателей необходимо выставить параметр 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 (LinuxCNC-Craftex).
Создаём папку в Windows где-нибудь, кликаем правой кнопкой мыши, выбираем «Свойства» — «Доступ» и жмём «Расширенная настройка»:
Share files windows 1.png
Далее проставляем галочку «Открыть общий доступ к этой папке» и нажимаем «Применить»:
Share files windows 2.png
Всё, мы расшарили папку в Windows и к ней можно подключаться.
Как же все таки подключиться из Debian к нашей сетевой папке?
Откроем файловый менеджер (Thunar).
И выберем «Обзор сети».
Без имени.png
Осталось найти сетевую папку в сети и ввести пароль и логин пользователя Windows.
Как же подключиться без ввода пароля к Windows папке из Debian?
Нужно в Windows открыть «Центр управления сетями и общим доступом», выбрать «Изменить дополнительные параметры общего доступа»:
Share files windows 7.png
В пункте «Все сети» в самом низу будет пункт «Общий доступ с парольной защитой»:
Share files windows 8.png
Надо отключить общий доступ с парольной защитой и «Сохранить изменения».

Настройка удаленного доступа

Удаленный доступ к Debian можно осуществить несколькими способами. Например через терминальный или графический доступ.

Терминальный или SSH(Secure Shell) доступ полезен, когда достаточно функционала командной строки для осуществления деятельности, такой доступ очень экономичен в плане интернет трафика. SSH сервер уже встроен в минимальную сборку с Craftex. Для доступа из ОС Windows потребуется лишь установленная программа Putty.
Putty.jpg
Если вам привычнее работать с файлам в графическом обозревателе можно воспользоваться WinSCP, который работает по тому же SSH протоколу.
Winscp.jpg
Winscp2.jpg
Надо сказать, что данный способ требует белого ip адреса для компьютера с Debian. Если у вас есть роутер, тогда потребуется пробросить стандартный для ssh порт № 22.

Графический доступ можно осуществлять через тот же SSH и программы Putty+Xming или протокол VNC, но как показывает практика, даже в одной локальной сети задержки графики настолько большие, что комфортно работать невозможно. Поэтому придется пользоваться сторонним ПО. Всем известный Team Viewer уже встроен в образ с Craftex. Запустите его и получите доступ из Windows после ввода вашего ID и пароля.
TV.png

Настройка высоты датчика автоматического определения высоты инструмента

Перед тем, как настраивать работу датчика необходимо убедиться в том, что в *.hal файле указаны верные назначения для входного сигнала.
net probe-in => motion.probe-input
net probe-in <= parport.0.pin-13-in-not
А также, необходимо убедиться в правильности нормального состояния датчика. Для этого необходимо воспользоваться утилитой HAL-метр. В разомкнутом состоянии датчик должен быть в состоянии FALSE.
В текущем релизе ПО для изменение высоты датчика вам потребуется отредактировать системный файл Craftex. В дальнейшем этот параметр будет находиться в глобальном config файле Craftex.config.

1.Для начала потребуется запустить файловый менеджер с рабочего стола и перейти по пути /home/notroot/linuxcnc-dev/bin/сraftex (notroot — ваш пользователь)

2.Далее, вам нужно отыскать в текущем каталоге файлы gmoccapy3, gmoccapy4 и открыть их поочередно через программу Mousepad (текстовый редактор)

3.В текстовом редакторе нажмем сочетание клавиш Ctrl + F для вызова поиска по файлу и введем в поиск строку: #SIZE OF SENSOR

4.Как только будет найдена требуемая строка нам потребуется всего лишь поменять значение после буквы Z в мм.

Sensor.png
5.Сохраним файл сочетанием клавиш Ctrl + S.

6.Теперь можно запускать Craftex.

Настройка внешней кнопки E-Stop

Для удобства работы чаще всего организовывается внешняя кнопка E-stop (фактически сигналом E-Stop может, более того, должна являться не только кнопка E-stop, но и другие источники сигнала аварии. Такими источниками: драйвера шаговых двигателей имеющих выход Alarm или Fault; преобразователь частоты). Отдельное внимание стоит обратить на то, что в случае использования внешней кнопки E-stop первая функциональная клавиша (соответствующая F1) в Craftex становится привязана к сигналу 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. Вводим в терминале make1
5. Вводим sudo cp 8188eu.ko lib/modules/[kernel version]/drivers/net/wirieless2
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.
Изменение этих параметров позволяет нам настроить соответствие реального значения оборотов шпинделя и значения оборотов в процентах, которое задается в CRAFTEX пользователем.
В строке setp pwmgen.0.scale 24000 задается максимальное количество оборотов шпинделя за 1 минуту.
В строке setp pwmgen.0.pwm-freq 988.0 задается частота генерации импульсов, которые отправляются в частотный преобразователь.
В строке pwmgen.0.offset 0.02 задается смещение рабочего цикла. Увеличение данного значения дает увеличение оборотов шпинделя при одном и том же значении % в CRAFTEX. Уменьшение — соответственно наоборот дает уменьшение оборотов.

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

Данная утилита позволяет работать со всеми переменными, пинами, сигналами системы.

Для наших задач удобно просматривать состояния пинов.

Для запуска требуется перейти в раздел MENU в CRAFTEX и кликнуть кнопку HALSHOW на нижней панели.

Далее мы должны увидеть окно HALSHOW.

Halshow.png

В левой колонке мы можем найти интересующий нас пин. Откроем ветку дерева Pins->parport->0.
Для просмотра состояний пинов щелкнем по вкладке «Следить» и выберем из нашей ветки нужные пины для просмотра двойным кликом по ним.

Halshow2.png

Теперь, когда мы видим состояния нужных нам пинов, можно проверить работу утилиты физически замыкая датчики.

Приложения

Ссылки на дополнительную документацию

Вы можете найти полное описание системы 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

Конфигурационные файлы LinuxCNC для оборудования компании CNC-Technology

Данные конфигурационные файлы созданы для работы с оборудованием CNC-Technology под управлением платы опто-развязки LPT-DPTR 1.03.

Конфигурационные файлы

Модель станка Конфигурационные файлы
Cutter CH Download
Cutter GQ Download
Cutter GR Download
Cutter GT Download
Cutter GTL Download
Cutter H Download
Cutter HD Download
Cutter HM Download
Cutter KTM Download
Cutter ST Download
Cutter STL Download
Cutter VSK Download

Возможные ошибки и методы их устранения

Возможные ошибки

Ошибка Возможная причина Метод устранения
Joint * following error Компьютер не отвечает техническим требованиям;
Установленная скорость перемещений слишком велика для допустимого параметра BASE_PERIOD в *.hal файле;
Провести LATENCY-TEST и установить параметр BASE_PERIOD на 10% выше значение MaxJitter (обратите внимание на метод проведения LATENCY-TEST).

Показатели 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

Главная и самая интересная часть linuxcnc — Hardware Abstraction Layer. Это такая специальная прослойка которая позволяет обычному пользователю получать доступ к оборудованию(ядру) Linux. Раньше был ещё один HAL , который потом заменил проект udev , так вот это разные вещи, HAL Linuxcnc нужен только для linuxcnc.

Итак каждый компонент в HAL представлен черным ящиком с некоторым количеством ножек, каждая ножка обладает такими свойствами, как вход/выход а также тип передаваемого по ней сигнала. Ещё есть псевдо ножки, это константы, параметров компонента.

Все это похоже на блоксхемы и в итоге можно представить как вот такую вот схему(чем-то напоминает LabView, но увы удобного редактора нет).

stepper_mm.png

Пример конвертера GEDA2HAL

Ещё стоит заметить что в HAL всегда работают два типа компонентов ,работают они в разных потоках loadrt загружает компоненты работающие в real time потоке, loadusr загружает компоненты работающие не real time т.е. с периодом >=200 мс … это например интерфейс или джойстик подключенный по USB.

Также с помощью специального синтаксиса макросов и языка С, можно создавать свои компоненты, с помощью утилиты comp.

Также можно вручную вводить команды с помощью halcmd , с поддержкой автодополнения, ведь файлы с расширением .hal всего лишь сценарии написанные на этом языке.

Следуйте инструкциям, указанным на kcjengr.github.io с шага #1

[Это краткое изложение исходного кода по ссылке kcjengr выше]

1- Обновите операционную систему
После установки скопируйте следующее в основной терминал по одной строке за раз и нажмите Enter, выберите Y для подтверждения, если в любой момент во время установки будет задан вопрос:

судо подходящее обновление
судо подходящее обновление

2- Запустите Linuxcnc в первый раз
Теперь linuxcnc необходимо запустить в первый раз, чтобы он создал папки своего каталога. Это можно сделать с помощью выпадающего меню и выбора CNC, а затем LinuxCNC. После запуска программы вы можете закрыть ее и продолжить ниже.

3- Установка зонда Основные требования
В эмуляторе терминала запустите:

sudo apt install python-pyqt5 python-pyqt5.qtquick python-dbus.mainloop.pyqt5 python-pyqt5.qtopengl python-pyqt5.qsci python-pyqt5.qtmultimedia qml-module-qtquick-controls gstreamer1.0-plugins-bad libqt5multimedia5-plugins pyqt5-dev-tools python-dev python-wheel python-setuptools python-pip git python-pyqtgraph python-pyqt5.qtwebkit

4- Загрузите ProbeBasicInstaller
Ссылка на странице github не работает. К счастью, у меня остался старый экземпляр.
Вы можете скачать это здесь: ProbeBasic-Installer-py2+3.g231c7ff.run

Щелкните ссылку ниже, чтобы загрузить файл ProbeBasicInstaller. После загрузки найдите в папке назначения и щелкните правой кнопкой мыши и выберите свойства. Выберите вкладку «Разрешения» в появившемся окне и установите флажок «Разрешить запуск этого файла как программы», см. изображения ниже для справки. Теперь дважды щелкните значок установщика, чтобы начать установку. Следуйте инструкциям установщика, чтобы установить Probe Basic. Выберите все доступные элементы во время первоначальной установки. после установки базовый зонд должен появиться на экране запуска linuxcnc, и вы можете создать для него значок на рабочем столе, установив соответствующий флажок внизу страницы.

Поздравляем! Теперь вы сможете запустить Probe Basic!

Содержание

  • 1 Введение
  • 2 Анализ
    • 2.1 Комментарии
    • 2.2 Установка начальных значений
    • 2.3 Фрезеровка
    • 2.4 Окончание
  • 3 Запуск

Введение

Демонстрационная программа

Вожусь я со станком своим уже несколько недель. И, настроив почти все, что я хотел настроить, уперся в проблему установки компенсации длинны инструмента. На форум ходил, спрашивал у гугла, но все безрезультатно. Не хочет у меня устанавливаться эта самая длинна.

И пришла мне в голову мысль. Что уж стартовую программу, которая надпись LinuxCNC вырезает, уж точно писали и вылизывали много разных умных людей, которые эту самую LinuxCNC знают вдоль и поперек.

И решил я проанализировать этот код. Что в нем написано. А сюда решил записать, чтобы не забыть и, в случае амнезии, быстро восстановить знания.

Анализ

Забегая вперед скажу, что эта программа написана, естественно, «чисто» (насколько мне позволено судить).

Комментарии

В начале, разработчик рекомендует Touch Off Z axes — т.е. проверить уровень инструмента. В этом-то у меня и кроется основная проблема.

Вторая рекомендация — изменить масштаб, если для станка, на котором производится эта работа проект большой или маленький.

Установка начальных значений

#<depth>=2.0

— глубина погружения инструмента в материал.

#<scale>=1.0

— масштаб.

Меня и то и другое устраивает.
Далее вызываются коды:

G21

— это выбираются единицы измерения миллиметры;

G90

— смена режима на абсолютные координаты для линейной системы координат;

G64

— приоритет скорости, даже если станку потребуется что-либо «скруглить» для достижения результата;

G40

— отмена коррекции на режущий инструмент. Вот это новость! Сначала говорят Touch Off, а потом отменяют что попросили сделать. Я думаю, что я чего-то не понимаю, но статья, определенно идет в категорию Путаница.

Фрезеровка

G00 Z3.0

— опускаемся на высоту Z=3.0. И эти люди просили меня отюстировать инструмент по оси Z. А если материал толще? А если фреза длиннее? А если что?

G17

— выбираем плоскость обработки XY. А почему не раньше? Зачем было сначала ехать? Я бы разместил эту команду выше, в коде инициализации.

M3 S1000

— включаем шпиндель на скорости 10000 оборотов в минуту;

G0 X[1.75781*#<scale>] Y[0.5*#<scale>]

— переезжаем в точку начала вырезания буквы L

G1 F100.0 Z[-#<depth>]

— погружаем инструмент на глубину -2мм (т.е. всего на 5 от текущей позиции по Z)

(i) Мдель построена таким образом, что 0 по оси Z олицетворяет плоскость заготовки. А мои настройки указывают на 0 станка. Таким образом эта программа вырежет надпись LinuxCNC на поверхности станка, заглубившись на 2 мм. Чего допустить нельзя.
....

— пропустим вырезание всех граней;

G0 Z3.0

— вынимаем инструмент из материала;

G0 X[18.72461*#<scale>]

— едем в точку начала буквы i;

G1 F100.0 Z[-#<depth>]

— опять погружаем инструмент и начинаем вторую букву;

...

Дальше идет много строк кода, по-сути своей похожего. Все операции выполняются либо G01 либо при помощи G02.
Рассматривать повторяющиеся команды с одинаковыми по-сути, но разными по-значению параметрами, не вижу смысла.

G2 X[118.27432*#<scale>] Y[23.8889*#<scale>] I[12.16539*#<scale>] J[3.2454*#<scale>]

А вот G02 стоит рассмотреть.
В переводе на русский язык в кадре сказано: «Пропилить дугу в точку X и Y из текущей с радиусом вокруг точки I, J.

Окончание

M5

— выключаем шпиндель;

M2

— заканчиваем программу.

Запуск

В том состоянии, что на снимке экрана выше, LinuxCNC не начнет работу, а выдаст предупреждение Программа выходит за минимум оси Z.

Вариантов решения этой задачи ровно два:

  1. Установить отступ по оси Z вручную. Так я делал, кайфа никакого. Да, LinuxCNC выполнит код и «вырежет» надпись, но это не принесет удовлетворения, поскольку Вы не знаете точно, а где же находится этот самый 0 и Ваш инструмент и все Ваши указания будут, пусть и верными, но ручными и умозрительными.
  2. Скорректировать инструмент автоматически. Это куда более правильный вариант. Но над его решением я пока и работаю.

Понравилась статья? Поделить с друзьями:
  • Limbo x86 pc emulator инструкция
  • Link lte си норд инструкция
  • Lil айкос инструкция по применению solid
  • Lilytech zl 7918а инструкция скачать
  • Linh chi opc инструкция по применению