1. Компоненты INI-файла

Типичный INI-файл имеет довольно простую структуру, которая включает в себя:

  • комментарии

  • разделы

  • переменные

Каждый из этих элементов разделен на отдельные строки. Каждый конец строки или символ новой строки создает новый элемент.

1.1. Комментарии

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

; This is my mill configuration file.
# I set it up on January 12, 2012

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

DISPLAY = axis
# DISPLAY = touchy

В этом списке переменной DISPLAY будет присвоено значение axis, поскольку другая закомментирована. Если кто-то неосторожно отредактирует такой список и оставит две строки без комментариев, будет использована первая встреченная.

Обратите внимание, что внутри переменной символы «#» и «;» символы не обозначают комментарии:

INCORRECT = value     # and a comment

# Correct Comment
CORRECT = value

1.2. Разделы

Связанные части файла INI разделены на разделы. Имя раздела заключено в скобки, например: [THIS_SECTION]. Порядок разделов неважен. Разделы начинаются с имени раздела и заканчиваются именем следующего раздела.

Следующие разделы используются LinuxCNC:

  • [EMC] общие сведения

  • [DISPLAY] настройки, связанные с графическим интерфейсом пользователя

  • [FILTER] настройки программ входного фильтра

  • [RS274NGC] настройки, используемые интерпретатором G-кода

  • [EMCMOT] настройки, используемые контроллером движения в реальном времени

  • [TASK] настройки, используемые контроллером задач

  • [HAL] указывает файлы .hal

  • [HALUI] Команды MDI, используемые HALUI

  • [APPLICATIONS] Другие приложения, запускаемые LinuxCNC

  • [TRAJ] дополнительные настройки, используемые контроллером движения в реальном времени

  • [JOINT_n] переменные отдельного сочленения

  • [AXIS_l] переменные отдельной оси

  • [KINS] кинематические переменные

  • [EMCIO] настройки, используемые контроллером ввода-вывода

1.3. Переменные

Строка переменной состоит из имени переменной, знака равенства (=) и значения. Все, начиная с первого символа, отличного от пробела, после = и до конца строки, передается как значение, поэтому вы можете вставлять пробелы в строковые символы, если хотите или нуждаетесь в этом. Имя переменной часто называют ключевым словом.

Пример переменной
MACHINE = My Machine

Строка переменной может быть расширена до нескольких строк с помощью конечного символа обратной косой черты (\). Разрешается максимум MAX_EXTEND_LINES (==20). После символа обратной косой черты не должно быть пробелов.

Идентификаторы разделов не могут быть расширены на несколько строк.

Пример переменной с расширенной строкой
APP = sim_pin \
ini.0.max_acceleration \
ini.1.max_acceleration \
ini.2.max_acceleration \
ini.0.max_velocity \
ini.1.max_velocity \
ini.2.max_velocity
Логические переменные

Логические значения могут быть одним из TRUE, YES или 1 для true/enabled и одним из FALSE, NO или 0 для false/disabled. Регистр игнорируется.

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

Переменные, используемые LinuxCNC, всегда должны использовать имена разделов и имена переменных, как показано.

1.4. Пользовательские разделы и переменные

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

Чтобы добавить пользовательскую переменную в существующий раздел LinuxCNC, просто включите переменную в этот раздел.

Пример пользовательской переменной: присвоение значения LINEAR переменной TYPE и значения 16000 переменной SCALE.
[JOINT_0]
TYPE = LINEAR
...
SCALE = 16000

Чтобы ввести пользовательский раздел с собственными переменными, добавьте раздел и переменные в INI-файл.

Пример пользовательского раздела
[PROBE]
Z_FEEDRATE = 50
Z_OFFSET = 12
Z_SAFE_DISTANCE = -10

Чтобы использовать пользовательские переменные в файле HAL, поместите раздел и имя переменной вместо значения.

HAL Пример
setp offset.1.offset [PROBE]Z_OFFSET
setp stepgen.0.position-scale [JOINT_0]SCALE
Note
Значение, хранящееся в переменной, должно соответствовать типу, указанному контактом компонента.

Чтобы использовать пользовательские переменные в G-коде, используйте синтаксис глобальных переменных #<_ini[section]variable>. В следующем примере показана простая процедура касания оси Z для фрезерного станка с использованием зондовой пластины.

Пример G-code
G91
G38.2 Z#<_ini[probe]z_safe_distance> F#<_ini[probe]z_feedrate>
G90
G1 Z#5063
G10 L20 P0 Z#<_ini[probe]z_offset>

1.5. Вложение файлов

Файл INI может включать содержимое другого файла с помощью директивы #INCLUDE.

#INCLUDE Формат
#INCLUDE filename

Имя файла может быть указано как:

  • файл в том же каталоге, что и файл INI

  • файл, расположенный относительно рабочего каталога

  • файл, расположенный относительно рабочего каталога

  • имя файла относительно-домашнего-каталога -пользователя (начинается с ~)

Поддерживается несколько директив #INCLUDE.

#INCLUDE Примеры
#INCLUDE joint_0.inc
#INCLUDE ../parallel/joint_1.inc
#INCLUDE below/joint_2.inc
#INCLUDE /home/myusername/myincludes/display.inc
#INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc

Директивы #INCLUDE поддерживаются только для одного уровня расширения — включенный файл не может включать дополнительные файлы. Рекомендуемое расширение файла — .inc. Не используйте расширение .ini для включенных файлов.

2. Разделы INI файла

2.1. [EMC] Раздел

  • VERSION = 1.1 - Номер версии конфигурации. Любое значение, отличное от 1,1, приведет к запуску средства проверки конфигурации и попытке обновления конфигурации до нового стиля типов конфигурации сочленений осей .

  • MACHINE = My Controller - Это имя контроллера, которое отображается в верхней части большинства графических интерфейсов. Вы можете поместить сюда все, что захотите, главное, чтобы это было в одну строку.

  • DEBUG = 0 - Уровень отладки 0 означает, что сообщения не будут выводиться при запуске LinuxCNC из terminal. Флаги отладки обычно полезны только разработчикам. Другие настройки см. в src/emc/nml_intf/debugflags.h.

  • RCS_DEBUG = 1 RCS debug messages to show. Print only errors (1) by default if EMC_DEBUG_RCS and EMC_DEBUG_RCS bits in DEBUG are unset, otherwise print all (-1). Use this to select RCS debug messages. See src/libnml/rcs/rcs_print.hh for all MODE flags.

  • RCS_DEBUG_DEST = STDOUT - how to output RCS_DEBUG messages (NULL, STDOUT, STDERR, FILE, LOGGER, MSGBOX).

  • RCS_MAX_ERR = -1 - Number after which RCS errors are not reported anymore (-1 = infinite).

  • NML_FILE = /usr/share/linuxcnc/linuxcnc.nml - Установите это значение, если вы хотите использовать файл конфигурации NML, отличный от используемого по умолчанию.

2.2. [DISPLAY] Раздел

Различные программы пользовательского интерфейса используют разные параметры, и не каждый параметр поддерживается каждым пользовательским интерфейсом. Существует несколько интерфейсов, таких как AXIS, GMOCCAPY, Touchy, QtVCP’s QtDragon и Gscreen. AXIS — это интерфейс для использования с обычным компьютером и монитором, Touchy — для использования с сенсорными экранами. GMOCCAPY можно использовать обоими способами, а также предлагает множество соединений для управления оборудованием. Описания интерфейсов находятся в разделе Интерфейсы Руководства пользователя.

  • DISPLAY = axis - Имя файла исполняемого файла, предоставляющего используемый пользовательский интерфейс. Наиболее распространенными допустимыми параметрами являются (все в нижнем регистре): axis, touchy, gmoccapy, gscreen, tklinuxcnc, qtvcp, qtvcp-qtdragon или qtvcp-qtplasmac.

  • POSITION_OFFSET = RELATIVE - Система координат (RELATIVE or MACHINE), которая будет отображаться на УЦИ при запуске пользовательского интерфейса. RELATIVE система координат отражает действующие в настоящее время смещения координат G92 и G5x.

  • POSITION_FEEDBACK = COMMANDED - Значение координаты (COMMANDED или ACTUAL), которое будет отображаться на УЦИ при запуске пользовательского интерфейса. В AXIS это можно изменить в меню View. COMMANDED позиция — это позиция, запрошенная LinuxCNC. ACTUAL положение — это положение обратной связи двигателей, если они имеют обратную связь, как и большинство сервосистем. Обычно используется значение COMMANDED.

  • DRO_FORMAT_MM = %+08.6f - Переопределить форматирование УЦИ по умолчанию в метрическом режиме (обычно 3 десятичных знака, дополненных пробелами до 6 цифр слева). В приведенном выше примере дополняются нулями, отображаются 6 десятичных цифр и принудительно отображается знак + для положительных чисел. Форматирование соответствует практике Python: https://docs.python.org/2/library/string.html#format-specification-mini-language. Если формат не может принять значение с плавающей запятой, то возникнет ошибка.

  • DRO_FORMAT_IN = % 4.1f - Переопределить форматирование УЦИ по умолчанию в имперском режиме (обычно 4 десятичных знака, дополненных пробелами до 6 цифр слева). В приведенном выше примере будет отображаться только одна десятичная цифра. Форматирование соответствует практике Python: https://docs.python.org/2/library/string.html#format-specification-mini-language. Если формат не может принять значение с плавающей запятой, то возникнет ошибка.

  • CONE_BASESIZE = .25 - Переопределите размер по умолчанию конуса/базового размера инструмента .5 на графическом дисплее.

  • MAX_FEED_OVERRIDE = 1.2 - Максимальное переопределение подачи, которое может выбрать пользователь. 1.2 означает 120% от запрограммированной скорости подачи.

  • MIN_SPINDLE_OVERRIDE = 0.5 - Минимальное переопределение шпинделя, которое может выбрать пользователь. 0,5 означает 50% от запрограммированной скорости шпинделя. (Это используется для установки минимальной скорости шпинделя.)

  • MIN_SPINDLE_0_OVERRIDE = 0.5 - Минимальное переопределение шпинделя, которое может выбрать пользователь. 0,5 означает 50% от запрограммированной скорости шпинделя. (Это используется для установки минимальной скорости шпинделя.) На многошпиндельном станке будут записи для каждого номера шпинделя. Используется только пользовательскими интерфейсами на основе QtVCP.

  • MAX_SPINDLE_OVERRIDE = 1.0 - Максимальное переопределение шпинделя, которое может выбрать пользователь. 1,0 означает 100% запрограммированной скорости шпинделя.

  • MAX_SPINDLE_0_OVERRIDE = 1.0 - Максимальное переопределение подачи, которое может выбрать пользователь. 1.2 означает 120% от запрограммированной скорости подачи. На многошпиндельном станке будут записи для каждого номера шпинделя. Используется только пользовательскими интерфейсами на основе QtVCP.

  • DEFAULT_SPINDLE_SPEED = 100 - Число оборотов шпинделя по умолчанию, когда шпиндель запускается в ручном режиме. Если этот параметр отсутствует, по умолчанию он равен 1 об/мин для AXIS и 300 об/мин для GMOCCAPY.

    • deprecated - вместо этого используйте раздел [SPINDLE_n]

  • DEFAULT_SPINDLE_0_SPEED = 100 - Число оборотов шпинделя по умолчанию, когда шпиндель запускается в ручном режиме. На многошпиндельном станке будут записи для каждого номера шпинделя. Используется только пользовательскими интерфейсами на основе QtVCP.

    • deprecated - вместо этого используйте раздел [SPINDLE_n].

  • SPINDLE_INCREMENT = 200 - Приращение, используемое при нажатии кнопок увеличения/уменьшения. Используется только пользовательскими интерфейсами на основе QtVCP.

    • deprecated - вместо этого используйте раздел [SPINDLE_n].

  • MIN_SPINDLE_0_SPEED = 1000 - Минимальная частота вращения, которую можно выбрать вручную. На многошпиндельном станке будут записи для каждого номера шпинделя. Используется только пользовательскими интерфейсами на основе QtVCP.

    • deprecated - вместо этого используйте раздел [SPINDLE_n].

  • MAX_SPINDLE_0_SPEED = 20000 - Максимальное число оборотов в минуту, которое можно выбрать вручную. На многошпиндельном станке будут записи для каждого номера шпинделя. Используется только пользовательскими интерфейсами на основе QtVCP.

    • deprecated - вместо этого используйте раздел [SPINDLE_n].

  • PROGRAM_PREFIX = ~/linuxcnc/nc_files - Каталог по умолчанию для файлов G-кода, именованных подпрограмм и определяемых пользователем M-кодов. Каталог PROGRAM_PREFIX ищется перед каталогами, перечисленными в [RS274]SUBROUTINE_PATH и [RS274]USER_M_PATH.

  • INTRO_GRAPHIC = emc2.gif - Изображение, показанное на заставке.

  • INTRO_TIME = 5 - Максимальное время отображения заставки в секундах.

  • CYCLE_TIME = 100 - Время цикла ГИП. В зависимости от экрана это может быть в секундах или мс (предпочтительно мс). Зачастую это частота обновления, а не время ожидания между обновлениями. Если время обновления установлено неправильно, экран может перестать отвечать на запросы или сильно дергаться. Значение 100 мс (0,1 с) является общепринятой настройкой, хотя можно использовать диапазон 50–200 мс (0,05–0,2 с). Процессор с недостаточной мощностью может работать лучше при более длительной настройке. Обычно подходит значение по умолчанию.

  • PREVIEW_TIMEOUT = 5 - Таймаут (в секундах) для загрузки графического предварительного просмотра G-кода. На данный момент только в AXIS.

  • HOMING_PROMPT = TRUE - Показывать сообщение с запросом на приведение в исходное положение при нажатии кнопки включения питания в графическом интерфейсе AXIS. Нажатие кнопки "ОК" в подсказке эквивалентно нажатию кнопки "Home All" (или клавиш Ctrl-HOME).

  • FOAM_W = 1.5 sets the foam W height.

  • FOAM_Z = 0 sets the foam Z height.

  • GRAPHICAL_MAX_FILE_SIZE = 20 largest size (in mega bytes) that will be displayed graphically. If the program is bigger then this setting, a bounding box will be displayed. By default this setting is 20 MB or 1/4 of the system memory, which ever is smaller. Setting negative will set no limit.

Note
Следующие элементы [DISPLAY] используются GladeVCP и PyVCP, дополнительную информацию см. в разделе embedding a tab главы GladeVCP или в главе PyVCP.
  • EMBED_TAB_NAME = GladeVCP demo

  • EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x \{XID\} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui

    Note

    Различные программы пользовательского интерфейса используют разные параметры, и не каждый параметр поддерживается каждым пользовательским интерфейсом. Подробную информацию об AXIS см. в документе AXIS GUI. Подробности о GMOCCAPY см. в документе GMOCCAPY.

  • DEFAULT_LINEAR_VELOCITY = .25 - Скорость по умолчанию для линейной медленной подачи в machine unit в секунду.

  • MIN_VELOCITY = .01 - Примерное минимальное значение шага ползунка медленной подачи.

  • MAX_LINEAR_VELOCITY = 1.0 - Максимальная скорость для линейной медленной подачи, в единицах станка в секунду.

  • MIN_LINEAR_VELOCITY = .01 - Примерное минимальное значение шага ползунка медленной подачи.

  • DEFAULT_ANGULAR_VELOCITY = .25 - Скорость по умолчанию для угловой медленной подачи в единицах станка в секунду.

  • MIN_ANGULAR_VELOCITY = .01 - Примерное минимальное значение углового шага ползунка медленной подачи.

  • MAX_ANGULAR_VELOCITY = 1.0 - Максимальная скорость угловой медленной подачи, в единицах станка в секунду.

  • INCREMENTS = 1 mm, .5 in, ... - Определяет приращения, доступные для дискретной медленной подачи. INCREMENTS можно использовать для переопределения значения по умолчанию. Значения могут быть десятичными (например, 0,1000) или натуральными дробями (например, 1/16), за которыми необязательно следует единица измерения (cm, mm, um, inch, in или mil). Если единица измерения не указана, подразумевается единица измерения станка. Метрические и имперские расстояния могут быть смешанными: INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 µm — допустимые значения.

  • GRIDS = 10 mm, 1 in, ... - Определяет предустановленные значения для линий сетки. Значение интерпретируется так же, как INCREMENTS.

  • OPEN_FILE = /full/path/to/file.ngc - Файл, который будет отображаться на заставке при запуске AXIS. При использовании пустой строки "" при запуске файл не будет загружен. GMOCCAPY не будет использовать этот параметр, поскольку предлагает соответствующую запись на своей странице настроек.

  • EDITOR = gedit - Редактор, используемый при выборе File > Edit для редактирования G-кода из меню AXIS. Этот параметр необходимо настроить, чтобы работал этот пункт меню. Другая допустимая запись — gnome-terminal -e vim. Эта запись не относится к GMOCCAPY, поскольку GMOCCAPY имеет встроенный редактор.

  • TOOL_EDITOR = tooledit - Редактор, используемый при редактировании таблицы инструментов (например, выбрав "File > Edit tool table…" в AXIS). Другие допустимые записи: gedit, gnome-terminal -e vim, and gvim. Эта запись не относится к GMOCCAPY, поскольку GMOCCAPY имеет встроенный редактор.

  • PYVCP = /filename.xml - Файл описания панели PyVCP. Дополнительную информацию см. в разделе PyVCP.

  • PYVCP_POSITION = BOTTOM - Размещение панели PyVCP в пользовательском интерфейсе AXIS. Если эта переменная опущена, панель по умолчанию будет располагаться справа. Единственная допустимая альтернатива — BOTTOM. Дополнительную информацию см. в главе PyVCP.

  • LATHE = 1 - Любое непустое значение (включая "0") заставляет AXIS использовать "lathe mode" с видом сверху и радиусом и диаметром на УЦИ.

  • BACK_TOOL_LATHE = 1 - Любое непустое значение (включая «0») заставляет AXIS использовать "back tool lathe mode" с инвертированной осью X.

  • FOAM = 1 - Любое непустое значение (включая "0") приводит к тому, что AXIS переключает отображение на режим резака вспенненых материалов.

  • GEOMETRY = XYZABCUVW - Управляет preview и backplot движения. Этот элемент состоит из последовательности букв оси и управляющих символов, которым может предшествовать знак "-":

    1. Буквы X, Y, Z обозначают перемещение вдоль названной координаты.

    2. Буквы A, B, C обозначают вращение вокруг соответствующих осей X, Y, Z.

    3. Буквы U, V, W обозначают перемещение по соответствующим осям X, Y, Z.

    4. Каждая указанная буква должна встречаться в [TRAJ]COORDINATES, чтобы иметь эффект.

    5. Символ "-", предшествующий любой букве, инвертирует направление операции.

    6. Операции перемещения и вращения оцениваются right-to-left. Таким образом, использование GEOMETRY=XYZBC задает вращение C, за которым следует вращение B, за которым следуют перемещения Z, Y, X. Порядок последовательно следующих букв не имеет значения.

    7. Правильная строка GEOMETRY зависит от конфигурации станка и кинематики, используемой для его управления. Порядок букв важен. Например, вращение вокруг C, а затем B отличается от вращения вокруг B, а затем C.

    8. Повороты по умолчанию применяются относительно исходной точки станка. Пример: GEOMETRY=CXYZ сначала переводит контрольную точку в X, Y, Z, а затем выполняет вращение C вокруг оси Z с центром в начале координат станка.

    9. Пример перемещения UVW: GEOMETRY=XYZUVW заставляет UVW перемещаться в системе координат инструмента, а XYZ перемещаться в системе координат материала.

    10. Для станка резки вспененных материалов (FOAM = 1) необходимо указать "XY;UV" или оставить значение пустым, даже если это значение в настоящее время игнорируется в режиме резки вспененных материалов. В будущей версии может быть определено, что означает ";" но если это так, «XY;UV» будет означать то же самое, что и текущие вспененные материалы по умолчанию.

    11. Экспериментально: если в строку GEOMETRY включен символ восклицательного знака (!), точки отображения для поворотов A, B, C учитывают смещения X, Y, Z, установленные кодами G5x, G92. Пример: использование GEOMETRY = !CXZ для станка с [TRAJ]COORDINATES=XZC. Это положение применимо только к живым графикам — предварительный просмотр G-кода должен выполняться с нулевыми смещениями G5x, G92. Этому можно способствовать, устанавливая смещения в программах только тогда, когда задача выполняется, как указано #<_task> == 1. Если при запуске существуют ненулевые смещения из-за постоянства, смещения следует обнулить и перезагрузить предварительный просмотр.

    Note
    Если в INI-файле нет [DISPLAY]GEOMETRY, значение по умолчанию предоставляется [DISPLAY]DISPLAY программой ГИП (обычно "XYZABCUVW").
  • ARCDIVISION = 64 - Установите качество предварительного просмотра дуг. Дуги предварительно просматриваются путем разделения их на несколько прямых линий; полукруг разделен на части ARCDIVISION. Большие значения обеспечивают более точный предварительный просмотр, но загрузка занимает больше времени и приводит к более медленному отображению. Меньшие значения дают менее точный предварительный просмотр, но загрузка занимает меньше времени и может привести к более быстрому отображению. Значение по умолчанию 64 означает, что круг размером до 3 дюймов будет отображаться с точностью до 1 мил (0,03%).

  • MDI_HISTORY_FILE = - Имя локального файла истории MDI. Если это не указано, AXIS сохранит историю MDI в .axis_mdi_history в домашнем каталоге пользователя. Это полезно, если у вас есть несколько конфигураций на одном компьютере.

  • JOG_AXES = - Порядок, в котором клавиши медленной подачи назначаются буквам осей. Стрелки влево и вправо соответствуют первой букве оси, вверх и вниз — второй, page up/page down — третьей, а левая и правая скобки — четвертой. Если не указано, значение по умолчанию определяется значениями [TRAJ]COORDINATES, [DISPLAY]LATHE и [DISPLAY]FOAM.

  • JOG_INVERT = - Для каждой буквы оси направление перемещения инвертируется. По умолчанию для токарных станков установлено значение "X", в противном случае поле пустое.

    Note
    Настройки для JOG_AXES и JOG_INVERT применяются к медленной подаче в глобальном режиме по букве координаты оси и действуют в глобальном режиме после успешного приведения в исходное положение. При работе в режиме сочленения до приведения в исходное положение клавиши перемещения на клавиатуре назначаются в фиксированной последовательности: стрелки влево/вправо: сочленение 0, стрелки вверх/вниз: сочленение 1, page up/page down: сочленение 2, левая/правая скобка: сочленение 3
  • USER_COMMAND_FILE = mycommands.py - Имя дополнительного файла Python, зависящего от конфигурации, полученного из графического интерфейса AXIS вместо пользовательского файла ~/.axisrc.

Note
Следующий элемент [DISPLAY] используется только интерфейсом TKLinuxCNC.
  • HELP_FILE = tklinucnc.txt - Путь к файлу справки.

2.3. [FILTER] Раздел

AXIS и GMOCCAPY имеют возможность отправлять загруженные файлы через программу-фильтр. Этот фильтр может выполнять любую желаемую задачу: что-то простое, например, проверка того, что файл заканчивается на M2, или что-то более сложное, например, определение того, являются ли входные данные образом глубины, и генерируют G-код для фрезерования определяемой им формы. Раздел [FILTER] INI-файла управляет работой фильтров. Сначала для каждого типа файла напишите строку PROGRAM_EXTENSION. Затем укажите программу, которая будет выполняться для каждого типа файла. Этой программе присваивается имя входного файла в качестве первого аргумента, и она должна записать код RS274NGC в стандартный вывод. Этот вывод будет отображаться в текстовой области, просматриваться в области отображения и выполняться LinuxCNC при запуске.

  • PROGRAM_EXTENSION = .extension Description

Если ваш постпроцессор выводит файлы заглавными буквами, вы можете добавить следующую строку:

PROGRAM_EXTENSION = .NGC XYZ Post Processor

Следующие строки добавляют поддержку конвертера изображение-в-G-код, включенного в LinuxCNC.

PROGRAM_EXTENSION = .png,.gif,.jpg # Greyscale Depth Image
  png = image-to-gcode
  gif = image-to-gcode
  jpg = image-to-gcode

Пример пользовательского конвертера G-кода, расположенного в каталоге linuxcnc.

PROGRAM_EXTENSION = .gcode 3D Printer
  gcode = /home/mill/linuxcnc/convert.py
Note
Программный файл, связанный с расширением, должен иметь либо полный путь к программе, либо находиться в каталоге, расположенном на системном пути.

Также возможно указать интерпретатор:

PROGRAM_EXTENSION = .py Python Script
  py = python

Таким образом, любой скрипт Python может быть открыт, а его выходные данные обрабатываются как G-код. Один из таких примеров скрипта доступен в nc_files/holecircle.py. Этот скрипт создает G-код для сверления серии отверстий по окружности. Многие другие генераторы G-кода находятся на вики-сайте LinuxCNC https://wiki.linuxcnc.org/.

Фильтры Python должны использовать функцию печати для вывода результата в AXIS.

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

#!/usr/bin/env python3

import sys

def main(argv):

  openfile = open(argv[0], 'r')
  file_in = openfile.readlines()
  openfile.close()

  file_out = []
  for line in file_in:
    # print(line)
    if line.find('Z') != -1:
      words = line.rstrip('\n')
      words = words.split(' ')
      newword = ''
      for i in words:
        if i[0] == 'Z':
          newword = 'W'+ i[1:]
      if len(newword) > 0:
        words.append(newword)
        newline = ' '.join(words)
        file_out.append(newline)
    else:
      file_out.append(line)
  for item in file_out:
    print("%s" % item)

if __name__ == "__main__":
  main(sys.argv[1:])
  • FILTER_PROGRESS=%d
    Если установлена переменная среды AXIS_PROGRESS_BAR, то строки, записанные в stderr формы выше, устанавливают индикатор выполнения AXIS в заданный процент. Эту функцию следует использовать любому фильтру, работающему в течение длительного времени.

2.4. [RS274NGC] Раздел

  • PARAMETER_FILE = myfile.var - Файл, расположенный в том же каталоге, что и файл INI, содержащий параметры, используемые интерпретатором (сохраняемые между запусками).

  • ORIENT_OFFSET = 0 - Значение с плавающей запятой, добавленное к параметру слова R операции M19 Orient Spindle. Используется для определения произвольного нулевого положения независимо от ориентации крепления энкодера.

  • RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92.1 G94 G97 G98 - Строка кодов ЧПУ, с помощью которой инициализируется интерпретатор. Это не заменяет указание модальных G-кодов в верхней части каждого файла NGC, поскольку модальные коды станков различаются и могут быть изменены G-кодом, интерпретированным ранее в сеансе.

  • SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Указывает список до 10 каталогов, разделенных двоеточиями (:), в которых осуществляется поиск, если в G-коде указаны однофайловые подпрограммы. Поиск в этих каталогах осуществляется после поиска [DISPLAY]PROGRAM_PREFIX (если он указан) и перед поиском [WIZARD]WIZARD_ROOT (если он указан). Пути ищутся в том порядке, в котором они перечислены. Используется первый соответствующий файл подпрограммы, найденный при поиске. Каталоги указываются относительно текущего каталога для INI-файла или как абсолютные пути. Список не должен содержать промежуточных пробелов.

  • CENTER_ARC_RADIUS_TOLERANCE_INCH = n (по умолчанию: 0.00005)

  • CENTER_ARC_RADIUS_TOLERANCE_MM = n (по умолчанию: 0.00127)

  • USER_M_PATH = myfuncs:/tmp/mcodes:experimentalmcodes - Указывает список каталогов, разделенных двоеточием (:), для пользовательских функций. Каталоги указываются относительно текущего каталога для INI-файла или как абсолютные пути. Список не должен содержать промежуточных пробелов.

    Поиск производится для каждой возможной определяемой пользователем функции, обычно (M100-M199). Порядок поиска следующий:

    1. [DISPLAY]PROGRAM_PREFIX (если указан)

    2. Если [DISPLAY]PROGRAM_PREFIX не указан, выполните поиск в папке по умолчанию: nc_files

    3. Затем выполните поиск в каждом каталоге в списке [RS274NGC]USER_M_PATH.

      Первый исполняемый M1xx, найденный при поиске, используется для каждого M1xx.

    Note
    Максимальное количество каталогов USER_M_PATH определяется во время компиляции (тип: USER_DEFINED_FUNCTION_MAX_DIRS == 5).
  • INI_VARS = 1 (Default: 1)
    Позволяет программам G-кода считывать значения из файла INI в формате #<_ini[section]name>. См. Параметры G-кода.

  • HAL_PIN_VARS = 1 (по умолчанию: 1)
    Позволяет программам G-кода считывать значения контактов HAL в формате #<_hal[элемент HAL]>. Доступ к переменным возможен только для чтения. См. G-коды параметры для получения более подробной информации и важного предостережения.

  • RETAIN_G43 = 0 (Default: 0)
    Когда установлен, вы можете включить G43 после загрузки первого инструмента и потом не беспокоиться о нем в программе. Когда вы наконец выгрузите последний инструмент, режим G43 отменяется.

  • OWORD_NARGS = 0 (по умолчанию: 0)
    Если эта функция включена, то вызываемая подпрограмма может определить количество переданных фактических позиционных параметров, проверив параметр #<n_args>.

  • NO_DOWNCASE_OWORD = 0 (по умолчанию: 0)
    Сохранять регистр в именах O-слов в комментариях, если этот параметр установлен, разрешает читать элементы HAL со смешанным регистром в структурированных комментариях, например (debug, #<_hal[MixedCaseItem]).

  • OWORD_WARNONLY = 0 (по умолчанию: 0)
    Скорее предупреждение, чем ошибка, в случае ошибок в подпрограммах O-слов.

  • DISABLE_G92_PERSISTENCE = 0 (по умолчанию: 0) Разрешить автоматическую очистку смещения G92 при запуске конфигурации.

  • DISABLE_FANUC_STYLE_SUB = 0 (по умолчанию: 0) Если есть причина запретить подпрограммы Fanuc, установите значение 1.

  • PARAMETER_G73_PECK_CLEARANCE = .020 (по умолчанию: метрическая система: 1 мм, имперская система: 0,050 дюйма) Расстояние отступа при стружкодроблении в единицах станка

  • PARAMETER_G83_PECK_CLEARANCE = .020 (по умолчанию: Метрическая система: 1 мм, имперская система: 0,050 дюйма) Расстояние от последней глубины подачи, когда станок возвращается к дну отверстия, в единицах станка.

Note

Вышеупомянутые шесть опций контролировались битовой маской FEATURES в версиях LinuxCNC до 2.8. Этот тег INI больше не будет работать.
Для справки:

FEATURES & 0x1  -> RETAIN_G43
FEATURES & 0x2  -> OWORD_NARGS
FEATURES & 0x4  -> INI_VARS
FEATURES & 0x8  -> HAL_PIN_VARS
FEATURES & 0x10 -> NO_DOWNCASE_OWORD
FEATURES & 0x20 -> OWORD_WARNONLY
Note
[WIZARD]WIZARD_ROOT является допустимым путем поиска, но Wizard не реализован полностью, и результаты его использования непредсказуемы.
  • LOG_LEVEL = 0 Укажите log_level (по умолчанию: 0)

  • LOG_FILE = file-name.log
    Для указания файла, используемого для записи данных.

  • REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure Подробности см. в главе Remap Extending G-code.

  • ON_ABORT_COMMAND=O <on_abort> call Подробности см. в главе Remap Extending G-code.

2.5. [EMCMOT] Раздел

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

  • EMCMOT = motmod - здесь обычно используется имя контроллера движения.

  • BASE_PERIOD = 50000 - период выполнения задачи Base в наносекундах.

  • SERVO_PERIOD = 1000000 - Это период задачи "Servo" в наносекундах.

  • TRAJ_PERIOD = 100000 - Это период задачи Trajectory Planner в наносекундах.

  • COMM_TIMEOUT = 1.0 - Количество секунд ожидания, пока Motion (часть контроллера движения, работающая в режиме реального времени) подтвердит получение сообщений от Task (часть контроллера движения, работающая не в реальном времени).

  • HOMEMOD = alternate_homing_module [home_parms=value] Переменная HOMEMOD является необязательной. Если указана, используйте указанный (созданный пользователем) модуль вместо модуля по умолчанию (homemod). Параметры модуля (home_parms) могут быть включены, если они поддерживаются указанным модулем. Эту настройку можно переопределить из командной строки с помощью опции -m ($ linuxcnc -h).

2.6. [TASK] Раздел

  • TASK = milltask - Указывает имя исполняемой task. Исполняемый файл task выполняет различные действия, например:

    • общаться с пользовательскими интерфейсами через NML,

    • взаимодействовать с планировщиком движений в реальном времени через общую память, отличную от HAL, и

    • интерпретировать G-код. В настоящее время существует только один исполняемый файл задачи, который имеет смысл для 99,9% пользователей — milltask.

  • CYCLE_TIME = 0.010 - Период в секундах, в течение которого будет выполняться TASK. Этот параметр влияет на интервал опроса при ожидании завершения движения, при выполнении инструкции паузы и при принятии команды из пользовательского интерфейса. Обычно нет необходимости менять это число.

2.7. [HAL] Раздел

  • HALFILE = example.hal - Запустите файл example.hal при запуске.

    Если HALFILE указан несколько раз, файлы интерпретируются в том порядке, в котором они появляются в INI-файле. Файлы HAL являются описательными, выполнение того, что описано в файлах HAL, инициируется потоками, в которые встроены функции, а не чтением файла HAL. Почти все конфигурации будут иметь по крайней мере один HALFILE, а в шаговых системах обычно есть два таких файла, то есть один, который определяет общую конфигурацию шагового привода (core_stepper.hal), и другой, который определяет расположение контактов станка (xxx_pinout.hal).

    Файлы HAL, указанные в переменной HALFILES, находятся с помощью поиска. Если указанный файл найден в каталоге, содержащем файл INI, он используется. Если указанный файл не найден в этом каталоге файлов INI, поиск выполняется с использованием системной библиотеки файлов HAL.

    Если LinuxCNC запускается со сценарием linuxcnc с использованием опции "-H dirname", указанное имя каталога добавляется к описанному выше поиску, так что сначала выполняется поиск dirname. Опцию "-H dirname" можно указать несколько раз, каталоги добавляются по порядку.

    HALFILE также может быть указан как абсолютный путь (когда имя начинается с символа /). Абсолютные пути использовать не рекомендуется, поскольку их использование может ограничить перемещение конфигураций.

  • HALFILE = texample.tcl [arg1 [arg2] …] - Выполните файл tcl texample.tcl при запуске с arg1, arg2 и т. д. в качестве списка argv. Файлы с суффиксом .tcl обрабатываются, как указано выше, но для обработки используется остановка. Дополнительную информацию смотрите в HALTCL Chapter.

  • HALFILE = LIB:sys_example.hal - Запустите файл системной библиотеки sys_example.hal при запуске. Явное использование префикса LIB: приводит к использованию системной библиотеки HALFILE без поиска в каталоге файлов INI.

  • HALFILE = LIB:sys_texample.tcl [arg1 [arg2 …]] - Запустите файл системной библиотеки sys_texample.tcl при запуске. Явное использование префикса LIB: приводит к использованию системной библиотеки HALFILE без поиска в каталоге файлов INI.

Элементы HALFILE определяют файлы, которые загружают компоненты HAL и устанавливают сигнальные соединения между контактами компонентов. Распространенными ошибками являются

  1. отсутствие оператора addf, необходимого для добавления функции(й) компонента в поток,

  2. неполные спецификаторы сигнала (net).

Пропуск необходимых операторов addf почти всегда является ошибкой. Сигналы обычно включают одно или несколько входных соединений и один выход (но оба не являются строго обязательными). Для проверки этих условий предоставляется файл системной библиотеки и отчет на stdout и во всплывающий ГИП:

HALFILE = LIB:halcheck.tcl [nopopup]
Note
Строка LIB:halcheck.tcl должна быть последней [HAL]HALFILE. Укажите опцию nopopup, чтобы подавить всплывающее сообщение и разрешить немедленный запуск. Соединения, выполненные с использованием POSTGUI_HALFILE, не проверяются.
  • TWOPASS = ON - Используйте двухпроходную обработку для загрузки компонентов HAL. При обработке TWOPASS строки файлов, указанные в [HAL]HALFILE, обрабатываются за два прохода. На первом проходе (pass0) считываются все HALFILES и накапливаются множественные появления команд loadrt и loadusr. Эти накопленные команды загрузки выполняются в конце pass0. Такое накопление позволяет указывать строки нагрузки более одного раза для данного компонента (предоставляет names= имена уникальны при каждом использовании). На втором проходе (pass1) HALFILES считываются заново и выполняются все команды, кроме ранее выполненных команд загрузки.

  • TWOPASS = nodelete verbose - Функцию TWOPASS можно активировать с помощью любой ненулевой строки, включая ключевые слова verbose и nodelete. Ключевое слово verbose вызывает вывод сведений на stdout. Ключевое слово nodelete сохраняет временные файлы в /tmp.

Для получения дополнительной информации см. главу HAL TWOPASS.

  • HALCMD = command - Выполните command как одну команду HAL. Если HALCMD указан несколько раз, команды выполняются в том порядке, в котором они появляются в INI-файле. Строки HALCMD выполняются после всех строк HALFILE.

  • SHUTDOWN = shutdown.hal - Запустите файл shutdown.hal при выходе LinuxCNC. В зависимости от используемых драйверов оборудования это может позволить установить выходные значения на определенные значения при обычном выходе LinuxCNC. Однако, поскольку нет никакой гарантии, что этот файл будет выполнен (например, в случае сбоя компьютера), он не заменяет правильную физическую цепочку аварийного останова или другие средства защиты от сбоя программного обеспечения.

  • ‘POSTGUI_HALFILE = example2.hal` — выполнить `example2.hal’ после того, как ГИП создаст свои контакты HAL. Некоторые ГИП создают контакты HAL и поддерживают использование postgui halfile для их использования. К ГИП, поддерживающим файлы HAL postgui, относятся Touchy, AXIS, Gscreen и GMOCCAPY.
    Дополнительную информацию см. в разделе PyVCP with AXIS.

  • HALUI = halui — добавляет контакты пользовательского интерфейса HAL.
    Для получения дополнительной информации см. главу HAL User Interface.

2.8. [HALUI] Раздел

  • MDI_COMMAND = G53 G0 X0 Y0 Z0 - Команду MDI можно выполнить с помощью halui.mdi-command-00. Увеличьте число для каждой команды, указанной в разделе [HALUI]. Также можно запускать подпрограммы. MDI_COMMAND = o<yoursub> CALL [#<yourvariable>]

2.9. [APPLICATIONS] Раздел

LinuxCNC может запускать другие приложения до запуска указанного ГИП. Приложения можно запускать после заданной задержки, чтобы обеспечить возможность действий, зависящих от ГИП (например, создание контактов HAL для конкретного ГИП).

  • DELAY = value - секунды ожидания перед запуском других приложений. Задержка может потребоваться, если приложение зависит от действий [HAL]POSTGUI_HALFILE или контактов HAL, созданных ГИП (по умолчанию DELAY=0).

  • ‘APP =` appname [arg1 [arg2 …]]’ - Приложение, которое нужно запустить. Эту спецификацию можно включать несколько раз. Имя приложения может быть явно указано как абсолютное имя файла или имя файла, указанное с помощью тильды (первый символ / или ~), относительное имя файла (первые символы имени файла — ./) или как файл в каталоге файлов INI. Если по этим именам исполняемый файл не найден, то для поиска приложения используется пользовательский поиск PATH.
    Примеры:

    • Имитируйте входные данные для контактов HAL для тестирования (используя sim_pin — простой ГИП для установки ввода для параметров, неподключенных контактов или сигналов без записывающих устройств):

      APP = sim_pin motion.probe-input halui.abort motion.analog-in-00
    • Вызовите halshow с ранее сохраненным watchlist. Поскольку LinuxCNC устанавливает в качестве рабочего каталога каталог для файла INI, вы можете ссылаться на файлы в этом каталоге (пример: my.halshow):

      APP = halshow my.halshow
    • В качестве альтернативы можно указать файл watchlist, идентифицированный по полному пути:

      APP = halshow ~/saved_shows/spindle.halshow
    • Откройте halscope, используя ранее сохраненную конфигурацию:

      APP = halscope -i my.halscope

2.10. [TRAJ] Раздел

Warning

Новый планировщик траектории (TP) включен по умолчанию. Если у вас нет настроек TP в разделе [TRAJ] — LinuxCNC по умолчанию использует:
ARC_BLEND_ENABLE = 1
ARC_BLEND_FALLBACK_ENABLE = 0
ARC_BLEND_OPTIMIZATION_DEPTH = 50
ARC_BLEND_GAP_CYCLES = 4
ARC_BLEND_RAMP_FREQ = 100

Раздел [TRAJ] содержит общие параметры модуля планирования траектории в режиме motion.

  • ARC_BLEND_ENABLE = 1 - Включите новый TP. Если установлено значение 0, TP использует параболическое смешивание (1 сегмент вперед) (по умолчанию: 1).

  • ARC_BLEND_FALLBACK_ENABLE = 0 - При необходимости вернитесь к параболическим смесям, если расчетная скорость выше. Однако эта оценка приблизительна, и кажется, что простое ее отключение дает лучшую производительность (по умолчанию: 0).

  • ARC_BLEND_OPTIMIZATION_DEPTH = 50 - Посмотрите вперед на глубину в количестве сегментов.

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

    # n = v_max / (2.0 * a_max * t_c)
    # where:
    # n = optimization depth
    # v_max = max axis velocity (UU / sec)
    # a_max = max axis acceleration (UU / sec)
    # t_c = servo period (seconds)

    Итак, станку с максимальной скоростью оси 10 IPS, максимальным ускорением 100 IPS2 и периодом сервопривода 0,001 s потребуется:

    10 / (2,0 * 100 * 0,001) = 50 сегментов, чтобы всегда достигать максимальной скорости вдоль самой быстрой оси.

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

    Если вы по-прежнему наблюдаете странные замедления, возможно, это связано с короткими сегментами программы. В этом случае попробуйте добавить небольшой допуск для обнаружения Naive CAM. Хорошее практическое правило таково:

    # min_length ~= v_req * t_c
    # where:
    # v_req = desired velocity in UU / sec
    # t_c = servo period (seconds)

    Если вы хотите путешествовать по пути со скоростью 1 IPS = 60 IPM, а период вашего сервопривода составляет 0,001 s, то любые сегменты короче min_length будут замедлять путь. Если вы установите допуск Naive CAM примерно на эту минимальную длину, слишком короткие сегменты будут объединены вместе, чтобы устранить это узкое место. Конечно, установка слишком высокого допуска означает большие отклонения от траектории, поэтому вам придется немного поиграть с ним, чтобы найти хорошее значение. Я бы начал с 1/2 min_length, а затем увеличивал бы по мере необходимости. * ARC_BLEND_GAP_CYCLES = 4 Насколько коротким должен быть предыдущий сегмент, прежде чем планировщик траектории потребит его.

    Часто при переходе по дуге окружности между переходами остаются короткие сегменты линий. Поскольку геометрия должна быть круглой, мы не можем растушевать всю линию, если следующая немного короче. Поскольку планировщик траектории должен коснуться каждого сегмента хотя бы один раз, это означает, что очень маленькие сегменты будут значительно замедлять движение. Мое исправление этого способа - "поглотить" короткий сегмент, сделав его частью дуги сглаживания. Поскольку линия+переход представляет собой один сегмент, нам не нужно замедляться, чтобы попасть на очень короткий сегмент. Скорее всего, вам не придется трогать эту настройку. * ARC_BLEND_RAMP_FREQ = 20 - Это граничная частота для использования линейной скорости.

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

    По сути, если сегмент будет завершен за меньшее время, чем 1 / ARC_BLEND_RAMP_FREQ, мы не заморачиваемся с трапециевидным профилем скорости на этом сегменте и используем постоянное ускорение. (Установка ARC_BLEND_RAMP_FREQ = 1000 эквивалентна всегда использованию трапециевидного ускорения, если частота серво потока составляет 1 кГц).

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

    # v_ripple = a_max / (4.0 * f)
    # where:
    # v_ripple = average velocity "loss" due to ramping
    # a_max = max axis acceleration
    # f = cutoff frequency from INI

    Для вышеупомянутого станка пульсация для частоты среза 20 Гц составляет 100 / (4 * 20) = 1,25 IPS. Эта цифра кажется высокой, но имейте в виду, что это лишь оценка наихудшего случая. В действительности профиль трапециевидного движения ограничен другими факторами, такими как нормальное ускорение или требуемая скорость, поэтому фактическая потеря производительности должна быть намного меньше. Увеличение частоты среза может повысить производительность, но сделать движение более грубым из-за скачков ускорения. Для начала будет разумным значение в диапазоне от 20 до 200 Гц.

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

  • SPINDLES = 3 - Количество поддерживаемых шпинделей. Крайне важно, чтобы это число соответствовало параметру "num_spindles", передаваемому модулю движения.

  • COORDINATES = X Y Z - Имена управляемых осей. Допустимы только X, Y, Z, A, B, C, U, V, W. В G-коде принимаются только оси, указанные в КООРДИНАТАХ. Разрешено писать имя оси более одного раза (например, X Y Y Z для портального станка). Для обычной trivkins kinematics номера соединений назначаются последовательно в соответствии с параметром trivkins coordinates=. Итак, для trivkins coordinates=xz, joint0 соответствует X, а joint1 соответствует Z. См. справочную страницу по кинематике ($ man kins) для получения информации о trivkins и других модулях кинематики.

  • LINEAR_UNITS = <units>_ - Указывает единицы станка для линейных осей. Возможные варианты: мм или дюйм. Это не влияет на линейные единицы в коде УП (это делают слова G20 и G21).

  • ANGULAR_UNITS = <units> - Указывает единицы станка для осей вращения. Возможные варианты: deg, degree (360 на круг), rad, radian (2*π на круг), grad, или gon (400 на круг). Это не влияет на угловые единицы кода УП. В RS274NGC слова A, B и C всегда выражаются в градусах.

  • DEFAULT_LINEAR_VELOCITY = 0.0167 - Начальная скорость ступенчатого перемещения линейных осей, в машинных единицах в секунду. Значение, отображаемое в AXIS, равно машинным единицам в минуту.

  • DEFAULT_LINEAR_ACCELERATION = 2.0 - На станках с nontrivial kinematics ускорение, используемое для "teleop" (декартово пространство) медленных подач, выражается в единицах станка в секунду.

  • MAX_LINEAR_VELOCITY = 5.0 - Максимальная скорость для любой оси или скоординированного перемещения в 'единицах станках' в секунду. Отображаемое значение равно 300 единицам в минуту.

  • MAX_LINEAR_ACCELERATION = 20.0 - Максимальное ускорение для любой оси или перемещение согласованной оси, в единицах станка в секунду.

  • POSITION_FILE = position.txt - Если установлено непустое значение, позиции сочленений сохраняются между запусками в этом файле. Это позволяет станку стартовать с теми же координатами, которые были у него при выключении. Это предполагает, что при выключенном питании станок не двигался. Если не установлено, позиции сочленений не сохраняются и будут начинаться с 0 при каждом запуске LinuxCNC. Это может помочь на небольших станках без переключателей исходной позиции. При использовании интерфейса преобразователя Mesa этот файл можно использовать для эмуляции абсолютных энкодеров и устранения необходимости возврата в исходное положение (без потери точности). Дополнительную информацию см. на странице руководства hostmot2.

  • NO_FORCE_HOMING = 1 - По умолчанию LinuxCNC заставляет пользователя привести станок в исходное положение перед запуском какой-либо команды MDI или программы. Обычно до приведения в исходное положение разрешается только медленная подача. Для конфигураций, использующих identity kinematics, установка NO_FORCE_HOMING = 1 позволяет пользователю выполнять перемещения MDI и запускать программы без предварительного возврата станка в исходное положение. В интерфейсах, использующих identity kinematics без возможности возврата в исходное положение, для этой опции необходимо установить значение 1.

Warning

LinuxCNC не будет знать ваши ограничения перемещения сочленения при использовании NO_FORCE_HOMING = 1.

  • HOME = 0 0 0 0 0 0 0 0 0 - Глобальная исходная позиция необходима для модулей кинематики, которые вычисляют глобальные координаты с помощью kinematicsForward() при переключении из режима сочленения в teleop режим. Можно указать до девяти значений координат (X Y Z A B C U V W), неиспользуемые конечные элементы можно опустить. Это значение используется только для станков с nontrivial kinematics. На станках с trivial kinematics (фрезерные, токарные, портальные) это значение игнорируется. Примечание. Для конфигурации sim hexapod требуется ненулевое значение координаты Z.

  • TPMOD = alternate_trajectory_planning module [tp_parms=value]
    Переменная TPMOD является необязательной. Если указано, используйте указанный (созданный пользователем) модуль вместо модуля по умолчанию (tpmod). Параметры модуля (tp_parms) могут быть включены, если они поддерживаются указанным модулем. Эту настройку можно переопределить из командной строки с помощью опции -t ($ linuxcnc -h).

  • NO_PROBE_JOG_ERROR = 0 - Разрешить обход проверки срабатывания датчика когда вы используете медленную подачу в ручном режиме.

  • NO_PROBE_HOME_ERROR = 0 - Позволяет обходить проверку срабатывания датчика во время возврата в исходное положение.

2.11. [KINS] Раздел

  • JOINTS = 3 - Указывает количество сочленений (двигателей) в системе. Например, станок trivkins XYZ с одним двигателем на каждую ось имеет 3 сочленения. Портальный станок с одним двигателем на каждой из двух осей и двумя двигателями на третьей оси имеет 4 сочленения. (Эта переменная конфигурации может использоваться ГИП для установки количества сочленений (num_joints), указанных для модуля motion (motmod).)

  • KINEMATICS = trivkins - Укажите модуль kinematics для модуля motion. ГИПы могут использовать эту переменную для указания строки loadrt в файлах HAL для модуля motmod. Дополнительную информацию о модулях кинематики смотрите на странице руководства: $ man kins.

2.12. [AXIS_<letter>] Раздел

<letter> указывает одну из: X Y Z A B C U V W

  • TYPE = LINEAR - The type of this axis, either LINEAR or ANGULAR. Required if this axis is not a default axis type. The default axis types are X,Y,Z,U,V,W = LINEAR and A,B,C = ANGULAR. This setting is effective with the AXIS GUI but note that other GUI’s may handle things differently.

  • MAX_VELOCITY = 1.2 - Максимальная скорость для этой оси в machine unit в секунду.

  • MAX_ACCELERATION = 20.0 - Максимальное ускорение для этой оси в единицах станка в секунду в квадрате.

  • MIN_LIMIT = -1000 - Минимальный предел (программный предел) движения оси в единицах измерения станка. При превышении этого предела контроллер прерывает движение оси. Ось должна быть возвращена в исходное положение до того, как сработает MIN_LIMIT. Для поворотной оси (тип A,B,C) с неограниченным вращением, не имеющей MIN_LIMIT для этой оси в разделе [AXIS_<letter>], используется значение -1e99.

  • MAX_LIMIT = 1000 - Максимальный предел (программный предел) движения оси в единицах измерения станка. При превышении этого предела контроллер прерывает движение оси. Ось должна быть приведена в исходное положение до того, как сработает MAX_LIMIT. Для поворотной оси (тип A,B,C) с неограниченным вращением, не имеющей MAX_LIMIT для этой оси в разделе [AXIS_<letter>], используется значение 1e99.

  • WRAPPED_ROTARY = 1 - Если для ANGULAR оси установлено значение 1, ось будет перемещаться на 0–359,999 градусов. Положительные числа перемещают ось в положительном направлении, а отрицательные числа перемещают ось в отрицательном направлении.

  • LOCKING_INDEXER_JOINT = 4 — это значение выбирает сочленение, чтобы использовть как фиксирующий индексатор для указанной оси <letter>. В этом примере сочленение имеет номер 4, что соответствует оси B для системы XYZAB с кинематикой (identity) trivkins. Когда установлено, перемещение G0 для этой оси инициирует разблокировку с помощью joint.4.unlock pin, затем ждет контакт joint.4.is-unlocked, а затем перемещает сочленение с высокой для этого сочленения скоростью. После перемещения значение joint.4.unlock будет false и для продолжения движения будет ожидание момента, когда joint.4.is-unlocked станет false. Перемещение других сочленений не допускается при перемещении заблокированного поворотного сочленения . Чтобы создать контакты разблокировки, используйте параметр motmod:

    unlock_joints_mask=jointmask

    Биты маски соединения: (LSB)0:joint0, 1:joint1, 2:joint2, …

    Пример: loadrt motmod ... unlock_joints_mask=0x38 создает разблокирующие контакты для сочленений 3,4,5.

  • OFFSET_AV_RATIO = 0.1 — если ненулевое значение, этот элемент позволяет использовать входные контакты HAL для смещения внешних осей:

    axis.<letter>.eoffset-enable
    axis.<letter>.eoffset-count
    axis.<letter>.eoffset-scale

Информацию об использовании смотрите в главе: External Axis Offsets.

2.13. [JOINT_<num>] Разделы

<num> указывает номер сочленения 0 … (num_joints-1). Значение num_joints устанавливается с помощью [KINS]JOINTS=.

Разделы [JOINT_0], [JOINT_1] и т. д. содержат общие параметры для отдельных компонентов в модуле управления сочленением. Имена секций сочленений начинаются с 0 и заканчиваются количеством сочленений, указанным в записи [KINS]JOINTS минус 1.

Обычно (для систем, использующих trivkins kinematics, существует соответствие 1:1 между буквой координат сочленения и оси):

  • JOINT_0 = X

  • JOINT_1 = Y

  • JOINT_2 = Z

  • JOINT_3 = A

  • JOINT_4 = B

  • JOINT_5 = C

  • JOINT_6 = U

  • JOINT_7 = V

  • JOINT_8 = W

Другие кинематические модули с identity kinematics доступны для поддержки конфигураций с частичными наборами осей. Например, при использовании trivkins с coordinates=XZ соотношения сочленение-ось будут такими:

  • JOINT_0 = X

  • JOINT_1 = Z

Для получения дополнительной информации о модулях кинематики см. справочную страницу kins (в терминале UNIX введите man kins).

  • TYPE = LINEAR - Тип сочленения: LINEAR или ANGULAR.

  • UNITS = INCH - Если этот параметр указан, этот параметр переопределяет соответствующий параметр [TRAJ] UNITS, например, [TRAJ]LINEAR_UNITS, если TYPE этого сочленения равен LINEAR, [TRAJ]ANGULAR_UNITS, если TYPE этого сочленения ANGULAR.

  • MAX_VELOCITY = 1.2 - Максимальная скорость для этого сочленения в machine unit в секунду.

  • MAX_ACCELERATION = 20.0 - Максимальное ускорение для этого сочленения в единицах станка в секунду в квадрате.

  • BACKLASH = 0.0000 - Люфты в единицах станка. Значение компенсации люфта можно использовать для компенсации небольших недостатков оборудования, используемого для привода сочленения. Если к сочленению добавляется люфт и вы используете шаговые двигатели, значение STEPGEN_MAXACCEL необходимо увеличить в 1,5–2 раза по сравнению с значением MAX_ACCELERATION для сочленения. Чрезмерная компенсация люфта может привести к рывкам сочленения при изменении направления. Если для сочленения указан COMP_FILE, BACKLASH не используется.

  • COMP_FILE = file.extension - Компенсационный файл состоит из карты информации о положении сочленения. Значения файла компенсации указаны в единицах станка. Каждый набор значений находится в одной строке, разделенной пробелом. Первое значение — это номинальное значение (заданное положение). Второе и третье значения зависят от настройки COMP_FILE_TYPE. Точки между номинальными значениями интерполируются между двумя номиналами. Файлы компенсаций должны начинаться с наименьшего номинала и располагаться в порядке возрастания к наибольшему значению номиналов. Имена файлов чувствительны к регистру и могут содержать буквы и/или цифры. В настоящее время ограничение внутри LinuxCNC составляет 256 триплетов на соединение.

    Если для соединения указан COMP_FILE, BACKLASH не используется.

  • COMP_FILE_TYPE = 0 or 1 - Указывает тип файла компенсации. Первое значение — это номинальное (заданное) положение для обоих типов.
    COMP_FILE_TYPE должен быть указан для каждого COMP_FILE.

    • Type 0: Второе значение определяет фактическое положение при движении сочленения в положительном направлении (возрастающее значение). Третье значение определяет фактическое положение, когда сочленение движется в отрицательном направлении (убывающее значение).

      Type 0 Пример
      -1.000 -1.005 -0.995
      0.000 0.002 -0.003
      1.000 1.003 0.998
    • Type 1: Второе значение определяет положительное смещение от номинала при движении в положительном направлении. Третье значение определяет отрицательное смещение от номинала при движении в отрицательном направлении.

      Type 1 Пример
      -1.000 0.005 -0.005
      0.000 0.002 -0.003
      1.000 0.003 -0.004
  • MIN_LIMIT = -1000 - Минимальный предел для перемещения сочленения, в единицах станка. При достижении этого предела контроллер прекращает движение сочленения. Для вращающегося сочленения с неограниченным вращением, не имеющего MIN_LIMIT для этого соединения в разделе [JOINT_N], используется значение -1e99.

  • MAX_LIMIT = 1000 - Максимальный предел движения сочленения, в единицах станка. При достижении этого предела контроллер прекращает движение сочленения. Для вращающегося сочленения с неограниченным вращением, не имеющего MAX_LIMIT для этого сочленения в разделе [JOINT_N], используется значение 1e99.

Note

Для identity kinematics настройки [JOINT_N]MIN_LIMIT/MAX_LIMIT должны равняться или превышать соответствующие пределы [AXIS_L] (идентичность один к одному). Эти настройки проверяются при запуске, когда указаны модули trivkins kinematics.

Note

Настройки [JOINT_N]MIN_LIMIT/MAX_LIMIT применяются при медленной подачи в режиме сочленения перед возвратом в исходное положение. После возврата в исходное положение пределы координат [AXIS_L]MIN_LIMIT/MAX_LIMIT используются в качестве ограничений для перемещения оси (буквы координат) и при планировании траектории, используемой для перемещений G-кода (программы и команды MDI). Планировщик траектории работает в декартовом пространстве (XYZABCUVW) и не имеет информации о движении сочленений, реализуемом каким-либо кинематическим модулем. Возможно возникновение нарушений предела сочленения для G-кода, который подчиняется пределу позиции планирования траектории, когда используется identity kinematics. Модуль движения всегда обнаруживает нарушения и неисправности предельных положений сочленения, если они возникают во время выполнения команд G-кода. См. также соответствующую https://github.com/LinuxCNC/linuxcnc/issues/97 [GitHub issue #97].

  • MIN_FERROR = 0.010 - Это значение в машинных единицах, при котором шарниру разрешено отклоняться от заданного положения на очень низких скоростях. Если MIN_FERROR меньше, чем FERROR, они создают линейное изменение точек срабатывания по ошибке. Вы можете думать об этом как о графике, где одно измерение — это скорость, а другое — допустимая погрешность. По мере увеличения скорости величина ошибки рассогласования также увеличивается в сторону значения FERROR.

  • FERROR = 1.0 - FERROR — это максимально допустимая ошибка рассогласования в единицах станка. Если разница между заданным и измеренным положением превышает эту величину, контроллер запрещает серво вычисления, устанавливает все выходы на 0,0 и отключает усилители. Если в INI-файле присутствует MIN_FERROR, используются ошибки рассогласования, пропорциональные скорости. Здесь максимально допустимая ошибка рассогласования пропорциональна скорости, причем FERROR применяется к высокой скорости, установленной [TRAJ]MAX_VELOCITY, и пропорционально меньшие ошибки рассогласования для более медленных скоростей. Максимально допустимая ошибка рассогласования всегда будет больше, чем MIN_FERROR. Это предотвращает непреднамеренное прерывание движения при небольших ошибках рассогласования для неподвижных осей. Небольшие ошибки рассогласования всегда будут присутствовать из-за вибрации и т. д.

  • LOCKING_INDEXER = 1 - Указывает, что сочленение используется в качестве фиксирующего индексатора.

2.13.1. Homing

Эти параметры связаны с возвращением в исходное положение. Для более подробного объяснения прочтите главу Homing Configuration.

  • HOME = 0.0 - Положение, в которое перейдет сочленение после завершения последовательности возврата в исходное положение.

  • HOME_OFFSET = 0.0 - Положение концевика исходного положения сочленения или индексного импульса в единицах станка. Если во время процесса приведения в исходное положение найдено исходное положение, это положение присваивается этой точке. При совместном использовании концевика исходного положения и концевика предела и использовании последовательности приведения в исходное положение, которая оставляет концевик исходного положения/предела в переключенном состоянии, можно использовать смещение исходного положения, чтобы определить положение концевика исходного положения, отличное от 0, если ваше положение HOME должно быть 0.

  • HOME_SEARCH_VEL = 0.0 - Начальная скорость приведения в исходное положение в единицах станка в секунду. Знак указывает направление движения. Нулевое значение означает, что текущее местоположение является исходным положением станка. Если на вашем станке нет концевиков исходного положения, оставьте это значение равным нулю.

  • HOME_LATCH_VEL = 0.0 - Скорость возврата в исходное положение в единицах станка в секунду до положения фиксации концевика исходного положения. Знак указывает направление движения.

  • HOME_FINAL_VEL = 0.0 - Скорость в единицах станка в секунду от фиксации исходного положения до исходного положения. Если оставить значение 0 или не включить в объединение, используется быстрая скорость. Должно быть положительным числом.

  • HOME_USE_INDEX = NO - Если энкодер, используемый для этого сочленения, имеет индексный импульс, а карта управления движением поддерживает этот сигнал, вы можете установить для него значение YES. Если установлено YES, это повлияет на тип используемого шаблона исходного положения. В настоящее время вы не можете приводить в исходное положение до индекса с помощью шаговых двигателей, если вы не используете StepGen в режиме скорости и PID.

  • HOME_INDEX_NO_ENCODER_RESET = NO - Используйте YES, если энкодер, используемый для этого сочленения, не сбрасывает свой счетчик при обнаружении индексного импульса после активации контакта HAL index_enable сочленения. Применимо только для HOME_USE_INDEX = YES.

  • HOME_IGNORE_LIMITS = NO - Когда вы используете концевик предела в качестве концевика исходного положения и концевика предела, для него должно быть установлено значение YES. Если установлено значение YES, концевик предела для этого сочленения игнорируется при возвращении в исходное положение. Вы должны настроить приведение в исходное положение так, чтобы в конце приведения в исходное положение концевик исходного положения/предела не находился в переключенном состоянии. В противном случае после перемещения в исходное положение вы получите ошибку концевика предела.

  • HOME_IS_SHARED = <n> - Если вход исходного положения используется более чем одним сочленением, установите <n> в 1, чтобы предотвратить запуск возврата в исходное положение, если один из общих концевиков уже замкнут. Установите <n> в 0, чтобы разрешить возврат в исходное положение, если переключатель замкнут.

  • HOME_ABSOLUTE_ENCODER = 0 | 1 | 2 - Используется для обозначения того, что сочленение использует абсолютный энкодер. При запросе на приведение в исходное положение текущее значение сочленения устанавливается равным значению HOME_OFFSET. Если параметр HOME_ABSOLUTE_ENCODER равен 1, станок делает обычный окончательный переход к значению HOME. Если параметр HOME_ABSOLUTE_ENCODER равен 2, последнее перемещение не выполняется.

  • HOME_SEQUENCE = <n> - Используется для определения последовательности "Home All". <n> должно начинаться с 0, 1 или -1. Дополнительные последовательности могут быть указаны с номерами, увеличивающимися на 1 (по абсолютному значению). Пропуск порядковых номеров не допускается. Если HOME_SEQUENCE опущен, сочленение не будет привязано к функции "Home All". Одновременно можно разместить более одного сочленения, указав один и тот же порядковый номер для нескольких сочленений. Отрицательный порядковый номер используется для отсрочки финального перемещения для всех сочленений, имеющих этот (отрицательный или положительный) порядковый номер. Дополнительную информацию см. в разделе HOME SEQUENCE.

  • VOLATILE_HOME = 0 - Если этот параметр включен (установлен в 1), это сочленение будет не в исходном положении, если питание станка выключено или включен аварийный останов. Это полезно, если ваш станок имеет концевики исходного положения и не имеет обратной связи по положению, например, станок с приводом, управляемым step/dir.

2.13.2. Сервопривода

Эти параметры относятся к сочленениям, управляемыми сервоприводами.

Warning
Ниже приведены пользовательские записи INI-файла, которые вы можете найти в образце INI-файла или файле, созданном мастером. Они не используются программным обеспечением LinuxCNC. Они нужны только для того, чтобы собрать все настройки в одном месте. Дополнительную информацию о пользовательских записях INI-файла см. в подразделе Custom Sections and Variables.

Следующие элементы могут использоваться компонентом ПИД-регулятора, при этом предполагается, что выходной сигнал - уровень напряжения.

  • DEADBAND = 0.000015 - Насколько рядом является достаточно рядом, чтобы считать, что двигатель в положении, в machine unit.

    Часто оно устанавливается на расстояние, эквивалентное 1, 1,5, 2 или 3 отсчетам энкодера, но строгих правил не существует. Более свободные (бОльшие) настройки позволяют уменьшить hunting сервопривода за счет более низкой точности. Более жесткие (меньшие) настройки обеспечивают более высокую точность за счет большей hunting сервопривода. Действительно ли это более точно, если оно также и более неопределенно? Как правило, лучше избегать или, по крайней мере, ограничивать hunting сервоприводов, если это возможно.

    Будьте осторожны при уменьшении отсчетов энкодера ниже 1, так как вы можете создать условие, при котором ваш сервопривод не будет работать. Это может варьироваться от hunting (медленного) до nervous (быстрого) и даже до squealing, которое легко спутать с колебаниями, вызванными неправильной настройкой. Лучше поначалу пропустить отсчет другой, пока вы не пройдете хотя бы gross tuning.

    Пример расчета единиц станка на импульс энкодера для использования при определении значения DEADBAND:

    images/encoder-counts-math.png
  • BIAS = 0.000 - Этот параметр используется hm2-servo и некоторыми другими. Смещение — это постоянная величина, которая добавляется к выходным данным. В большинстве случаев его следует оставить равным нулю. Однако, иногда может быть полезно компенсировать смещения в сервоусилителях или сбалансировать вес объекта, который движется вертикально. Смещение выключается при отключении контура ПИД, как и все остальные компоненты выхода.

  • P = 50 - Пропорциональное усиление для сервопривода сочленения. Это значение умножает ошибку между заданным и фактическим положением в единицах станка, что приводит к увеличению расчетного напряжения для усилителя двигателя. Единицы усиления P — это вольты на единицу станка, например images/p-term.png

  • I = 0 - Интегральный коэффициент усиления сервопривода сочленения. Это значение умножает совокупную ошибку между заданным и фактическим положением в единицах станка, что приводит к увеличению расчетного напряжения для усилителя двигателя. Единицы усиления I – вольты на единицу станка в секунду, например: images/i-term.png

  • D = 0 - Производное усиление для сервопривода сочленения. Это значение умножает разницу между текущей и предыдущей ошибками, что приводит к увеличению расчетного напряжения для усилителя двигателя. Единицы усиления D — это вольты на единицу станка в секунду, например images/i-term.png

  • FF0 = 0 - Усиление прямой связи 0го порядка. Это число умножается на заданное положение, что приводит к увеличению расчетного напряжения для усилителя двигателя. Единицы усиления FF0 — это вольты на единицу станка, например images/p-term.png

  • FF1 = 0 - Усиление прямой связи 1^го порядка. Это число умножается на изменение заданного положения в секунду, что приводит к увеличению расчетного напряжения для усилителя двигателя. Единицы усиления FF1 — это вольты на единицу станка в секунду, например images/i-term.png

  • FF2 = 0 - Усиление прямой связи 2го порядка. Это число умножается на изменение заданного положения в секунду за секунду, что приводит к увеличению расчетного напряжения для усилителя двигателя. Единицы усиления FF2 — это вольты на единицу станка в секунду в секунду, например images/ff2.png

  • OUTPUT_SCALE = 1.000

  • OUTPUT_OFFSET = 0.000

    Эти два значения являются коэффициентами масштабирования и смещения для выхода сочленения на усилители двигателей.

    Второе значение (смещение) вычитается из вычисленного выходного сигнала (в вольтах) и делится на первое значение (масштабный коэффициент) перед записью в цифро-аналоговые преобразователи. Единицы на значениях шкалы выражаются в истинных вольтах на выходное напряжение ЦАП. Единицы измерения значения смещения указаны в вольтах. Их можно использовать для линеаризации ЦАП. В частности, при записи выходных данных LinuxCNC сначала преобразует желаемый выходной сигнал в единицах квази СИ-единицы в необработанные значения исполнительного механизма, например, вольты для ЦАП усилителя. Это масштабирование выглядит так: images/output-offset.png

    Значение масштаба можно получить аналитически, выполнив анализ единиц измерения, т. е. единицами измерения являются [выходные единицы СИ]/[единицы привода]. Например, на станке с усилителем в режиме скорости, где напряжение 1В приводит к скорости 250 мм/с.

    images/scale-math.png

    Обратите внимание, что единицы смещения указаны в единицах станка, например: мм/с, и они предварительно вычитаются из показаний датчика. Значение этого смещения получается путем нахождения значения вашего выхода, которое дает 0,0 для выхода привода. Если ЦАП линеаризован, это смещение обычно равно 0,0.

    Масштаб и смещение также можно использовать для линеаризации ЦАП, в результате чего получаются значения, отражающие совокупное влияние коэффициента усиления усилителя, нелинейности ЦАП, блоков ЦАП и т. д.

    Для этого выполните следующую процедуру.

    1. Постройте калибровочную таблицу для выхода, подавая на ЦАП нужное напряжение и измеряя результат.

    2. Выполните линейную аппроксимацию методом наименьших квадратов, чтобы получить коэффициенты a, b такие, что images/calibration-1.png

    3. Обратите внимание: нам нужен необработанный выходной сигнал, чтобы результат измерения был идентичен заданному выходному сигналу. Это означает

      1. images/calibration-2.png

      2. images/calibration-3.png

    4. В результате коэффициенты a и b из линейной аппроксимации можно использовать непосредственно в качестве масштаба и смещения для контроллера.

    В следующей таблице приведен пример измерения напряжения.

    Table 1. Измерения выходного напряжения
    Необработанные Измеренные

    -10

    -9.93

    -9

    -8.83

    0

    -0.03

    1

    0.96

    9

    9.87

    10

    10.87

  • MAX_OUTPUT = 10 - Максимальное значение выходного сигнала ПИД-компенсации, записываемого в усилитель двигателя, в вольтах. Вычисленное выходное значение ограничивается этим пределом. Ограничение применяется перед масштабированием до необработанных выходных единиц. Значение применяется симметрично как к плюсовой, так и к минусовой стороне.

  • INPUT_SCALE = 20000 - в примерах конфигураций

  • ENCODER_SCALE = 20000 - во встроенных конфигах PnCconf

Указывает количество импульсов, соответствующее перемещению одного узла станка, как установлено в разделе [TRAJ]. Для линейного сочленения одна единица станка будет равна настройке LINEAR_UNITS. Для углового сочленения одна единица равна настройке в ANGULAR_UNITS. Второе число, если оно указано, игнорируется. Например, для энкодера с частотой 2000 отсчетов на оборот, передачей 10 об/дюйм и желаемыми единицами измерения в дюймах мы имеем:

images/encoder-scale.png

2.13.3. Шаговый привод

Эти параметры актуальны для сочленений, управляемых шаговыми двигателями.

Warning
Ниже приведены пользовательские записи INI-файла, которые вы можете найти в образце INI-файла или файле, созданном мастером. Они не используются программным обеспечением LinuxCNC и предназначены только для размещения всех настроек в одном месте. Дополнительную информацию о пользовательских записях INI-файла см. в подразделе Custom Sections and Variables.

Следующие элементы могут использоваться компонентом StepGen.

  • SCALE = 4000 - в примерах конфигураций

  • STEP_SCALE = 4000 - во встроенных конфигах PnCconf

Указывает количество импульсов, соответствующее перемещению одного узла станка, как установлено в разделе [TRAJ]. Для шаговых систем это количество шаговых импульсов, выдаваемых на единицу станка. Для линейного сочленения одна единица станка будет равна настройке LINEAR_UNITS. Для углового соединения одна единица равна настройке в ANGULAR_UNITS. Для сервосистем это количество импульсов обратной связи на единицу станка. Второе число, если оно указано, игнорируется.

Например, для шагового двигателя 1,8 градуса с полушагом, передачей 10 об/дюйм и желаемым machine unit в дюймах мы имеем:

images/stepper-scale.png
Note
В старых файлах INI и HAL для этого значения использовалось INPUT_SCALE.
  • ENCODER_SCALE = 20000 (Дополнительно используется во встроенных конфигурациях PnCconf) — указывает количество импульсов, соответствующее перемещению одной единицы станка, как установлено в разделе [TRAJ]. Для линейного сочленения одна единица станка будет равна настройке LINEAR_UNITS. Для углового соединения одна единица равна настройке в ANGULAR_UNITS. Второе число, если оно указано, игнорируется. Например, для энкодера с частотой 2000 отсчетов на оборот, передачей 10 об/дюйм и желаемыми единицами измерения в дюймах мы имеем:

images/encoder-scale.png
  • STEPGEN_MAXACCEL = 21.0 - Предел ускорения для генератора шагов. Оно должно быть на 1–10 % больше, чем MAX_ACCELERATION сочленения. Это значение улучшает настройку "position loop" StepGen. Если вы добавили компенсацию люфта в сочленение, то оно должно быть в 1,5–2 раза больше, чем MAX_ACCELERATION.

  • STEPGEN_MAXVEL = 1.4 - Более старые файлы конфигурации также имеют ограничение скорости для генератора шагов. Если указано, оно также должно быть на 1–10% больше, чем MAX_VELOCITY сочленения. Последующее тестирование показало, что использование STEPGEN_MAXVEL не улучшает настройку цикла позиционирования StepGen.

2.14. [SPINDLE_<num>] Раздел(ы)

<num> указывает номер шпинделя 0… (num_spindles-1)

Значение num_spindles устанавливается [TRAJ]SPINDLES= .

По умолчанию максимальная скорость шпинделя в прямом и обратном направлении составляет примерно 2147483000 об/мин.

По умолчанию минимальная скорость шпинделя в прямом и обратном направлении равна 0 об/мин.

По умолчанию приращение составляет 100 об/мин.

Вы можете изменить эти значения по умолчанию, установив следующие переменные INI:

Note
Эти настройки предназначены для компонента контроллера движения. Экраны управления могут дополнительно ограничить эти настройки.
  • MAX_FORWARD_VELOCITY = 20000 Максимальная скорость шпинделя (в об/мин) для указанного шпинделя. Необязательный. Это также установит для MAX_REVERSE_VELOCITY отрицательное значение, если оно не будет переопределено.

  • MIN_FORWARD_VELOCITY = 3000 Минимальная скорость шпинделя (в об/мин) для указанного шпинделя. Необязательный. Многие шпиндели имеют минимальную скорость, ниже которой их нельзя использовать. Любая команда скорости шпинделя ниже этого предела будет /увеличена/ до этого предела.

  • MAX_REVERSE_VELOCITY = 20000 Если этот параметр опущен, по умолчанию будет установлено значение MAX_FORWARD_VELOCITY. Его можно использовать в случаях, когда скорость шпинделя ограничена в обратном направлении. Установите ноль для шпинделей, которые не должны вращаться в обратном направлении. В этом контексте "max" относится к абсолютной величине скорости шпинделя.

  • MIN_REVERSE_VELOCITY = 3000` Эта настройка эквивалентна MIN_FORWARD_VELOCITY, но для обратного вращения шпинделя. По умолчанию будет установлено значение MIN_FORWARD_VELOCITY, если оно опущено.

  • INCREMENT = 200 Устанавливает размер шага для команд увеличения/уменьшения скорости шпинделя. Это может иметь разное значение для каждого шпинделя. Эта настройка эффективна для AXIS и Touchy, но учтите, что на некоторых экранах управления ситуация может обрабатываться по-другому.

  • HOME_SEARCH_VELOCITY = 100 - FIXME: Возврат шпинделя еще не работает. Устанавливает скорость возврата в исходное положение (об/мин) шпинделя. Шпиндель будет вращаться с этой скоростью во время процесса возврата в исходное положение до тех пор, пока не будет определен индекс шпинделя, после чего положение шпинделя будет установлено на ноль. Обратите внимание, что нет смысла устанавливать исходное положение шпинделя на любое значение, отличное от нуля, и поэтому нет возможности сделать это.

  • HOME_SEQUENCE = 0 - FIXME: Исходное положение шпинделя еще не работает. Управляет тем, где в обычной последовательности возврата в исходное положение происходят вращения шпинделя. Установите HOME_SEARCH_VELOCITY на ноль, чтобы избежать вращения шпинделя во время последовательности возврата в исходное положение.

2.15. [EMCIO] Раздел

  • TOOL_TABLE = tool.tbl - Файл, содержащий информацию об инструменте, описанную в Руководстве Пользователя.

  • DB_PROGRAM = db_program - Путь к исполняемой программе, которая управляет данными инструмента. Если указан DB_PROGRAM, запись Tool_TABLE игнорируется.

  • TOOL_CHANGE_POSITION = 0 0 2 - Указывает местоположение XYZ, к которому необходимо перейти при смене инструмента, если используются три цифры. Указывает местоположение XYZABC при использовании 6 цифр. Указывает местоположение XYZABCUVW при использовании 9 цифр. Замены инструмента можно комбинировать. Например, если вы комбинируете подъем пиноли с изменением положения, вы можете сначала переместить Z, затем X и Y.

  • TOOL_CHANGE_WITH_SPINDLE_ON = 1 - Шпиндель будет оставаться включенным во время смены инструмента, если значение равно 1. Полезно для токарных станков или станков, где материал находится в шпинделе, а не в инструменте.

  • TOOL_CHANGE_QUILL_UP = 1 - Ось Z будет перемещена в ноль станка перед сменой инструмента, если значение равно 1. Это то же самое, что выдать G0 G53 Z0.

  • TOOL_CHANGE_AT_G30 = 1 - Станок перемещается в исходную точку, определенную параметрами 5181-5186 для G30, если значение равно 1. Для получения дополнительной информации см. G-code Settings и G-код G30-G30.1.

  • RANDOM_TOOLCHANGER = 1 - Этот параметр для станков, которые не могут поместить инструмент обратно в карман, из которого он был взят. Например, станки, которые заменяют инструмент в активном кармане инструментом в шпинделе.