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

Типовий INI-файл має досить просту структуру, яка включає;

  • коментарі

  • розділи

  • змінні

Кожен із цих елементів розділений на окремі рядки. Кожен символ кінця рядка або нового рядка створює новий елемент.

1.1. Коментарі

A comment line is started with a ; or a # mark. When the INI reader sees either of these marks on a line, the rest of the line is ignored by the software. Comments can be used to describe what an INI element will do.

; Це файл конфігурації мого млина.
# Я налаштував його 12 січня 2012 року.

Коментарі також можна використовувати для «вимикання» змінної. Це спрощує вибір між різними змінними.

DISPLAY = axis
# DISPLAY = touchy

У цьому списку змінна DISPLAY буде встановлена на axis, оскільки інша змінна закомментована. Якщо хтось необережно редагує такий список і залишає дві рядки незакомментованими, буде використано перший з них.

Note that inside a variable’s value, the "#" and ";" characters are still comments. You should use double or single quoted strings if you need to embed # or ; characters:

# Below results in INCORRECT=value
# because comments are stripped
INCORRECT = value # and a comment

# Correct embedding
CORRECT = "value # and an embedded # char"

1.2. Розділи

Related parts of an INI file are separated into sections. A section name is enclosed in brackets like this: [THIS_SECTION]. The order of sections is unimportant. Sections begin at the section name and end at the next section name. Section identifiers are case senstive and can only contain letters A-Z, a-z, digits 0-9 and underscore (_). Additionally, section identifiers cannot start with a digit.

LinuxCNC використовує такі розділи:

  • [EMC] загальна інформація

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

  • [FILTER] налаштування вхідного фільтра програм

  • [RS274NGC] налаштування, що використовуються інтерпретатором G-коду

  • [EMCMOT] налаштування, що використовуються контролером руху реального часу

  • [TASK] налаштування, що використовуються контролером завдань

  • [HAL] вказує файли .hal

  • [HALUI] Команди MDI, що використовуються HALUI

  • [APPLICATIONS] Інші програми, які потрібно розпочати від LinuxCNC

  • [TRAJ] додаткові налаштування, що використовуються контролером руху реального часу

  • [JOINT_n] індивідуальні суглобові змінні

  • [AXIS_l] окремі змінні осі

  • [KINS] кінематичні змінні

  • [EMCIO] налаштування, що використовуються контролером вводу/виводу

1.3. Змінні

A variable line is made up of a variable name, an equals sign (=), and a value. A variable identifier is case sensitive and may only consist of letters A-Z, a-z, digits 0-9 and underscore (_). Additionally, variable identifiers cannot start with a digit. White space at the beginning of the line and after the variable identifier, up to the equals sign, is ignored.

Приклад змінної
MACHINE = Моя машина

A variable line may be extended to multiple lines with a terminal backslash (\) character. There may be white space following the trailing backslash character, but this is strongly discouraged.

Ідентифікатори розділів не можуть бути розширені до кількох рядків.

Змінна з розширенням лінії Приклад
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

A specific variable in a specific sections is often denoted in the documentation as [SECTION]VARIABLE. This specification mirrors the same way they are specified in HAL files for expansion.

Variable values may be quoted to ensure proper space and special character embedding in literal or escaped forms. Both single and double quoted values are allowed. Mutiple quoted value segments are merged into one value. Embedding quotes in quoted values must use the backslash \\ character to escape the embedded quote if it is the same kind as the enclosing quotes. Double quotes values also support all common escape formats and full Unicode:

  • control: \\[abfnrtv]

  • octal: \\[0-2][0-7]{0,2}

The resulting value is always converted into UTF-8 and checked for validity. It is not allowed to embed NUL characters either literally or by using an escape.

Value Quote and Escape Example
STRING = "Hello World!"
STRING = 'Hello World Too!'

# The following would become: Hello World!
STRING = "Hello" \
" " \
'World' \
"!"

EMBED = "Literal single ' in double"
EMBED = 'Literal double " in single'
EMBED = "Literal double \" in double"
EMBED = 'Literal single \' in single'

SMILE = "\\370\\237\\230\\200 = 😀"
SMILE = "\\xf0\\x9f\\x98\\x80 = 😀"
SMILE = "\\ud83d\\ude00 = 😀"
SMILE = "\\U0001f600 = 😀"

Variables' value can have types associated when they are read by LinuxCNC. The types are enforced by the INI file reader when the appropriate function calls are performed. All values may always be read as string. Conversion into other types has restrictions. Possible types are:

  • string - the value is taken as-is

  • boolean - only boolean words are accepted

  • signed integer - whole numbers in decimal, hexadecimal, octal or binary bases

  • unsigned integer - whole numbers in decimal, hexadecimal, octal or binary bases

  • real - floating point values (always using decimal point)

  • enumeration - a restricted set of keys to represent a value or function

Signed and unsigned integers are read and converted as 64-bit numbers when marked as s64 and u64. Plain old 32-bit integers are marked int and are always signed. The default number base is decimal. Alternative bases may be specified using a prefix. The complete list of valid integer numbers:

  • \[0-9]+ - decimal

  • 0x\[0-9A-Fa-f]+ - hexadecimal

  • 0o\[0-7]+ - octal

  • 0b\[01]+ - binary

Signed integers may be preceded by a plus (+) or minus (-) sign, regardless number base. Unsigned integers will generate a warning if they are preceded by a minus (-) sign upon conversion.

Boolean values are case insensitive and allow the following words:

  • true/enabled - TRUE, YES ON or 1

  • false/disabled - FALSE, NO OFF or 0

Enumerations are a set of keywords defined by LinuxCNC and interpreted to mean a setting, value or functionality. The exact values are declared in the individual variable description and the variables are marked with enum. Most enumerations are interpreted without case. It is noted in the variable description if case matters.

Some LinuxCNC variables are special in that their format is interpreted as a multi-valued entry. These variables have an appropriate description below of the format expected.

Variables that are used by LinuxCNC must always use the section names and variable names as shown. Any custom or private variables and sections are up to the user.

1.4. Розділи та змінні на замовлення

Більшість зразків конфігурацій використовують користувацькі розділи та змінні, щоб розмістити всі налаштування в одному місці для зручності.

Щоб додати користувацьку змінну до існуючого розділу LinuxCNC, просто додайте змінну в цей розділ.

Приклад користувацької змінної, де змінній «TYPE» присвоюється значення «LINEAR», а змінній «SCALE» – значення «16000».
[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 для фрезерного верстата або фрези з використанням зондувальної пластини.

Please note that G-code embedded ini variables are converted to upper case before they are searched in the INI file. The #<_ini[section]variable> should be called [SECTION]VARIABLE in the INI file.

Приклад G-коду
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 filename

Ім’я файлу можна вказати так:

  • файл у тому ж каталозі, що й INI-файл

  • файл, розташований відносно робочого каталогу

  • абсолютне ім’я файлу (починається з /)

  • a user-home-relative file name (starts with a ~/)

Підтримується кілька директив #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

The #INCLUDE directives are supported up to 16 levels — an included file may include additional files up to 16 levels deep. Recursive inclusion of files is detected and flagged as an error. The recommended file extension is .inc. Do not use a file extension of .ini for included files.

2. Розділи INI-файлу

Variables in each section have an associated type as denoted in parentheses after the variable.

2.1. [EMC] Розділ

  • VERSION = 1.1 - (string) The format version of this configuration. Any value other than 1.1 will cause the configuration checker to run and try to update the configuration to the new style joint axes type of configuration.

  • MACHINE = My Controller - (string) This is the name of the controller, which is printed out at the top of most graphical interfaces. You can put whatever you want here as long as you make it a single line long.

  • DEBUG = 0 - (u64) Debug level 0 means no messages will be printed when LinuxCNC is run from a terminal. Debug flags are usually only useful to developers. See src/emc/nml_intf/debugflags.h for other settings.

  • RCS_DEBUG = 1 (u64) 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 - (enum) how to output RCS_DEBUG messages (NULL, STDOUT, STDERR, FILE, LOGGER, MSGBOX).

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

  • NML_FILE = /usr/share/linuxcnc/linuxcnc.nml - (string) Set this if you want to use a non-default NML configuration file.

2.2. [DISPLAY] Розділ

Різні програми інтерфейсу користувача використовують різні опції, і не кожна опція підтримується кожним інтерфейсом користувача. Існує кілька інтерфейсів, таких як AXIS, GMOCCAPY, Touchy, QtDragon від QtVCP та Gscreen. AXIS — це інтерфейс для використання зі звичайним комп’ютером та монітором, Touchy — для використання з сенсорними екранами. GMOCCAPY можна використовувати обома способами, він також пропонує багато підключень для апаратного керування. Опис інтерфейсів наведено в розділі «Інтерфейси» посібника користувача.

  • DISPLAY = axis - (string) The file name of the executable providing the user interface to use. Prominent valid options are (all in lower case): axis, touchy, gmoccapy, gscreen, tklinuxcnc, qtvcp, qtvcp qtdragon or qtvcp qtplasmac.

  • POSITION_OFFSET = RELATIVE - (enum) The coordinate system (RELATIVE or MACHINE) to show on the DRO when the user interface starts. The RELATIVE coordinate system reflects the G92 and G5x coordinate offsets currently in effect.

  • POSITION_FEEDBACK = COMMANDED - (enum) The coordinate value (COMMANDED or ACTUAL) to show on the DRO when the user interface starts. In AXIS this can be changed from the View menu. The COMMANDED position is the position requested by LinuxCNC. The ACTUAL position is the feedback position of the motors if they have feedback like most servo systems. Typically the COMMANDED value is used.

  • DRO_FORMAT_MM = %+08.6f - (string) Override the default DRO formatting in metric mode (normally 3 decimal places, padded with spaces to 6 digits to the left). The example above will pad with zeros, display 6 decimal digits and force display of a + sign for positive numbers. Formatting follows Python practice: https://docs.python.org/2/library/string.html#format-specification-mini-language . An error will be raised if the format can not accept a floating-point value.

  • DRO_FORMAT_IN = % 4.1f - (string) Override the default DRO formatting in imperial mode (normally 4 decimal places, padded with spaces to 6 digits to the left). The example above will display only one decimal digit. Formatting follows Python practice: https://docs.python.org/2/library/string.html#format-specification-mini-language . An error will be raised if the format can not accept a floating-point value.

  • CONE_BASESIZE = .25 - (real) Override the default cone/tool base size of .5 in the graphics display. Valid values are between 0.025 and 2.0.

  • DISABLE_CONE_SCALING = TRUE - (bool) Any non-empty value (including "0") will override the default behavior of scaling the cone/tool size using the extents of the currently loaded G-code program in the graphics display.

  • MAX_FEED_OVERRIDE = 1.2 - (real) The maximum feed override the user may select. 1.2 means 120% of the programmed feed rate.

  • MIN_SPINDLE_OVERRIDE = 0.5 - (real) The minimum spindle override the user may select. 0.5 means 50% of the programmed spindle speed. (This is used to set the minimum spindle speed.)

  • MIN_SPINDLE_0_OVERRIDE = 0.5 - (real) The minimum spindle override the user may select. 0.5 means 50% of the programmed spindle speed. (This is used to set the minimum spindle speed.) On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.

  • MAX_SPINDLE_OVERRIDE = 1.0 - (real) The maximum spindle override the user may select. 1.0 means 100% of the programmed spindle speed.

  • MAX_SPINDLE_0_OVERRIDE = 1.0 - (real) The maximum feed override the user may select. 1.2 means 120% of the programmed feed rate. On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.

  • DEFAULT_SPINDLE_SPEED = 100 – швидкість обертання шпинделя за замовчуванням, коли шпиндель запускається в ручному режимі. Якщо цей параметр відсутній, значення за замовчуванням становить 1 об/хв для AXIS та 300 об/хв для GMOCCAPY.

    • застаріло - замість цього використовуйте розділ [SPINDLE_n]

  • DEFAULT_SPINDLE_0_SPEED = 100 - Стандартна швидкість обертання шпинделя при запуску шпинделя в ручному режимі. На багатошпиндельних верстатах будуть записи для кожного номера шпинделя. Використовується тільки в інтерфейсах користувача на базі QtVCP.

    • застаріло - замість цього використовуйте розділ [SPINDLE_n].

  • SPINDLE_INCREMENT = 200 – Приріст, що використовується під час натискання кнопок збільшення/зменшення. Використовується лише інтерфейсами користувача на основі QtVCP.

    • застаріло - замість цього використовуйте розділ [SPINDLE_n].

  • MIN_SPINDLE_0_SPEED = 1000 – Мінімальна швидкість обертання шпинделя, яку можна вибрати вручну. На багатошпиндельних верстатах будуть записи для кожного номера шпинделя. Використовується лише інтерфейсами користувача на основі QtVCP.

    • застаріло - замість цього використовуйте розділ [SPINDLE_n].

  • MAX_SPINDLE_0_SPEED = 20000 – Максимальна швидкість обертання, яку можна вибрати вручну. На багатошпиндельних верстатах будуть записи для кожного номера шпинделя. Використовується лише інтерфейсами користувача на основі QtVCP.

    • застаріло - замість цього використовуйте розділ [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 - Будь-яке непорожнє значення (включно з "0") дозволить відображення повідомлення-підказки із запитом на переміщення до точки відправлення, коли в графічному інтерфейсі AXIS натиснуто кнопку ввімкнення. Натискання кнопки "Ok" у повідомленні-підказці еквівалентне натисканню кнопки "Home All" (або клавіші Ctrl-HOME).

  • FOAM_W = 1.5 встановлює висоту піни W.

  • FOAM_Z = 0 встановлює висоту піни по осі Z.

  • GRAPHICAL_MAX_FILE_SIZE = 20 — максимальний розмір (у мегабайтах), який буде відображатися графічно. Якщо програма перевищує це значення, буде відображатися обмежувальна рамка. За замовчуванням це значення дорівнює 20 МБ або 1/4 системної пам’яті, залежно від того, яке з них менше. Від’ємне значення інтерпретується як необмежене.

Note
Наступні елементи [DISPLAY] використовуються GladeVCP та PyVCP, див. розділ embedding a tab розділу GladeVCP або PyVCP Chapter для отримання додаткової інформації.
  • EMBED_TAB_NAME = Демонстрація GladeVCP

  • 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 за секунду.

  • MIN_VELOCITY = 0.01 – Приблизне найнижче значення повзунка джогу.

  • MAX_LINEAR_VELOCITY = 1.0 – Максимальна швидкість для лінійних переміщень, в одиницях виміру за секунду.

  • MIN_LINEAR_VELOCITY = 0,01 – Приблизне найнижче значення повзунка джогу.

  • DEFAULT_ANGULAR_VELOCITY = .25 – швидкість за замовчуванням для кутових переміщень, в одиницях вимірювання за секунду.

  • MIN_ANGULAR_VELOCITY = 0.01 – Приблизне найнижче значення кутового повзунка.

  • MAX_ANGULAR_VELOCITY = 1.0 – Максимальна швидкість для кутових переміщень, в машинних одиницях за секунду.

  • INCREMENTS = 1 мм, 0,5 дюйма, ... - Визначає кроки, доступні для інкрементального переміщення. INCREMENTS можна використовувати для заміни значення за замовчуванням. Значення можуть бути десятковими числами (наприклад, 0,1000) або дробовими числами (наприклад, 1/16), за якими за бажанням може слідувати одиниця виміру (см, мм, мкм, дюйм, дюйм або міл). Якщо одиниця виміру не вказана, використовується одиниця виміру машини. Метричні та імперські відстані можуть бути змішаними: INCREMENTS = 1 дюйм, 1 міл, 1 см, 1 мм, 1 мкм є дійсним введенням.

  • 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 - Редактор, який використовується для редагування таблиці інструментів (наприклад, шляхом вибору «Файл > Редагувати таблицю інструментів…» в AXIS). Інші допустимі записи: gedit, gnome-terminal -e vim та gvim. Цей запис не застосовується до GMOCCAPY, оскільки GMOCCAPY має вбудований редактор.

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

  • PYVCP_POSITION = BOTTOM - Розташування панелі PyVCP в інтерфейсі користувача AXIS. Якщо ця змінна пропущена, панель за замовчуванням буде розташована праворуч. Єдиною допустимою альтернативою є BOTTOM. Дивіться розділ PyVCP Chapter для отримання додаткової інформації.

  • LATHE = 1 - Будь-яке непорожнє значення (включаючи "0") призводить до використання осі "режиму токарного верстата" з видом зверху та з радіусом і діаметром на DRO.

  • BACK_TOOL_LATHE = 1 – Будь-яке непорожнє значення (включаючи "0") призводить до використання осі "режиму токарного верстата із заднім інструментом" з інвертованою віссю X.

  • FOAM = 1 - Будь-яке непорожнє значення (включаючи "0") призводить до зміни відображення осі для режиму різання піни.

  • GEOMETRY = XYZABCUVW – Керує попереднім переглядом та заднім відображенням руху. Цей елемент складається з послідовності літер осей та керуючих символів, яким необов’язково передувати знак "-":

    1. Літери X, Y, Z вказують на зміщення вздовж іменованої координати.

    2. Літери A, B, C вказують обертання навколо відповідних осей X, Y, Z.

    3. Літери U, V, W вказують на зміщення вздовж відповідних осей X, Y, Z.

    4. Кожна зазначена літера повинна зустрічатися в [TRAJ]COORDINATES, щоб мати ефект.

    5. Символ "-" перед будь-якою літерою інвертує напрямок операції.

    6. Операції перенесення та обертання оцінюються зправа наліво. Тому використання 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. Це положення застосовується тільки для liveplots — попередній перегляд 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 = - Порядок, в якому клавіші jog призначаються літерам осей. Стрілки вліво і вправо призначаються першій букві осі, вгору і вниз - другій, сторінка вгору/сторінка вниз - третій, а ліва і права дужки - четвертій. Якщо не вказано, значення за замовчуванням визначається з значень [TRAJ]COORDINATES, [DISPLAY]LATHE і [DISPLAY]FOAM.

  • JOG_INVERT = – Для кожної літери осі напрямок подачі інвертується. Значення за замовчуванням – "X" для токарних верстатів, інакше – порожнє.

    Note
    Налаштування для JOG_AXES та JOG_INVERT застосовуються до ручного переміщення у світовому режимі за літерою координати осі та діють у світовому режимі після успішного повернення до вихідної позиції. Під час роботи у спільному режимі до повернення до вихідної позиції клавіші ручного переміщення на клавіатурі призначаються у фіксованій послідовності: ліворуч/праворуч: joint0, вгору/вниз: joint1, сторінка вгору/сторінка вниз: joint2, ліва/права дужка: joint3
  • 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 Опис

Якщо ваш постпроцесор виводить файли великими літерами, можливо, вам варто додати наступний рядок:

PROGRAM_EXTENSION = .NGC XYZ Постпроцесор

У наступних рядках додано підтримку конвертера зображень у G-код, що входить до комплекту LinuxCNC.

PROGRAM_EXTENSION = .png,.gif,.jpg # Зображення глибини у градаціях сірого
  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 Wiki https://wiki.linuxcnc.org/.

Фільтри Python повинні використовувати функцію print для виведення результату до 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 - Рядок NC-кодів, з якими ініціалізується інтерпретатор. Це не замінює вказання модальних G-кодів у верхній частині кожного файлу NGC, оскільки модальні коди верстатів відрізняються і можуть бути змінені G-кодом, інтерпретованим раніше в сеансі.

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

  • G64_DEFAULT_TOLERANCE = n (За замовчуванням: 0) Значення P за замовчуванням для G64, якщо P не викликається.

  • G64_DEFAULT_NAIVETOLERANCE = n (За замовчуванням: 0) Значення Q за замовчуванням для G64, якщо Q не викликається.

  • 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 (За замовчуванням: 1)
    Дозволяє програмам G-коду зчитувати значення з INI-файлу, використовуючи формат #<_ini[розділ]назва>. Див. Параметри G-коду.

  • HAL_PIN_VARS = 1 (За замовчуванням: 1)
    Дозволяє програмам G-коду зчитувати значення виводів HAL у форматі #<_hal[елемент HAL]>. Доступ до змінних є тільки для читання. Дивіться G-code Parameters для більш детальної інформації та важливих застережень.

  • RETAIN_G43 = 0 (За замовчуванням: 0)
    Якщо встановлено, ви можете ввімкнути G43 після завантаження першого інструменту, а потім не турбуватися про це в програмі. Коли ви нарешті вивантажите останній інструмент, режим G43 скасовується.

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

  • NO_DOWNCASE_OWORD = 0 (За замовчуванням: 0)
    Зберігати регістр слів на букву «О» в коментарях, якщо встановлено, дозволяє читати елементи HAL зі змішаним регістром у структурованих коментарях, таких як (debug, #<_hal[MixedCaseItem]).

  • OWORD_WARNONLY = 0 (За замовчуванням: 0)
    Попереджати, а не видавати помилку, у разі помилок у підпрограмах типу O-word.

  • DISABLE_G92_PERSISTENCE = 0 (За замовчуванням: 0) Дозволити автоматичне очищення зміщення G92 під час запуску конфігурації.

  • DISABLE_FANUC_STYLE_SUB = 0 (За замовчуванням: 0) Якщо є причина вимкнути підпрограми Fanuc, встановіть значення 1.

  • G73_PECK_CLEARANCE = .020 (default: Metric machine: 1mm, imperial machine: .050 inches) Chip breaking back-off distance in machine units

  • G83_PECK_CLEARANCE = .020 (default: Metric machine: 1mm, imperial machine: .050 inches) Clearance distance from last feed depth when machine rapids back to bottom of hole, in machine units.

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 – це дійсний шлях пошуку, але майстер не повністю реалізовано, і результати його використання непередбачувані.
  • LOG_LEVEL = 0 Specify the 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 - період виконання завдання «Базовий» у наносекундах.

  • SERVO_PERIOD = 1000000 - Це період виконання завдання "Серво" в наносекундах.

  • TRAJ_PERIOD = 100000 - Це період виконання завдання «Планувальник траєкторії» в наносекундах.

  • 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 - The period, in seconds, at which TASK will run. This parameter affects the polling interval when waiting for motion to complete, when executing a pause instruction, and when accepting a command from a user interface. There is usually no need to change this number. Defaults to 0.100 if omitted.

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. Докладнішу інформацію див. у розділі 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 items specify files that loadrt HAL components and make signal connections between component pins. Common mistakes are:

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

  2. неповні специфікатори сигналу (мережі).

Пропуск необхідних операторів addf майже завжди є помилкою. Сигнали зазвичай містять одне або декілька вхідних з’єднань і одне вихідне з’єднання (але обидва вони не є обов’язковими). Для перевірки цих умов і відображення результатів у stdout та спливаючому графічному інтерфейсі користувача надається файл системної бібліотеки:

HALFILE = LIB:halcheck.tcl [nopopup]
Note
Рядок LIB:halcheck.tcl повинен бути останнім [HAL]HALFILE. Вкажіть опцію «nopopup», щоб придушити спливаюче повідомлення і дозволити негайний запуск. З’єднання, встановлені за допомогою POSTGUI_HALFILE, не перевіряються.
  • TWOPASS = ON - Використовувати двопрохідну обробку для завантаження компонентів HAL. При двопрохідній обробці рядки файлів, вказані в [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 після того, як GUI створив свої HAL-контакти. Деякі GUI створюють HAL-контакти і підтримують використання postgui halfile для їх використання. GUI, які підтримують postgui HAL-файли, включають Touchy, AXIS, Gscreen і GMOCCAPY.
    Докладнішу інформацію див. у розділі PyVCP з AXIS.

  • HALUI = halui – додає контакти інтерфейсу користувача HAL.
    Для отримання додаткової інформації див. розділ Інтерфейс користувача HAL.

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 = значення - кількість секунд, протягом яких слід почекати перед запуском інших програм. Затримка може бути необхідною, якщо програма залежить від дій [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 з попередньо збереженим списком спостереження. Оскільки LinuxCNC встановлює робочий каталог на каталог для INI-файлу, ви можете звертатися до файлів у цьому каталозі (наприклад: my.halshow):

      APP = halshow my.halshow
    • Або ж можна вказати файл списку спостереження, ідентифікований повним шляхом:

      APP = halshow ~/saved_shows/spindle.halshow
    • Відкрийте halscope, використовуючи попередньо збережену конфігурацію:

      APP = halscope -i my.halscope

2.10. [TRAJ] Розділ

Warning

Новий Планувальник траєкторій (TP) увімкнено за замовчуванням. Якщо у вашому розділі [TRAJ] немає налаштувань TP, 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] містить загальні параметри для модуля планування траєкторії в режимі «рух».

  • ARC_BLEND_ENABLE = 1 - Увімкнути новий TP. Якщо встановлено на 0, TP використовує параболічне змішування (випередження на 1 сегмент) (За замовчуванням: 1).

  • ARC_BLEND_FALLBACK_ENABLE = 0 - Опціонально повертається до параболічного змішування, якщо розрахункова швидкість є вищою. Однак ця оцінка є приблизною, і, здається, що просто вимкнення цієї функції забезпечує кращу продуктивність (за замовчуванням: 0).

  • ARC_BLEND_OPTIMIZATION_DEPTH = 50 - Глибина прогнозування в кількості сегментів.

    Щоб трохи розширити це, ви можете вибрати це значення дещо довільно. Ось формула для оцінки того, яка «глибина» вам потрібна для певної конфігурації:

    # 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 с знадобиться:

    10 / (2,0 * 100 * 0,001) = 50 сегментів, щоб завжди досягати максимальної швидкості вздовж найшвидшої осі.

    На практиці це число не так важливо налаштовувати, оскільки попередній перегляд рідко потребує повної глибини, якщо тільки у вас немає великої кількості дуже коротких сегментів. Якщо під час тестування ви помітили дивні уповільнення і не можете зрозуміти, звідки вони беруться, спочатку спробуйте збільшити цю глибину, використовуючи наведену вище формулу.

    Якщо ви все ще бачите дивні уповільнення, це може бути пов’язано з тим, що у вашій програмі є короткі сегменти. Якщо це так, спробуйте додати невеликий допуск для виявлення наївної 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 с, то будь-які сегменти, коротші за 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-коді приймаються тільки осі, названі в COORDINATES. Допускається писати назву осі більше одного разу (наприклад, X Y Y Z для портальної машини). Для загальної «кінематики Трівкіна» номери з’єднань присвоюються послідовно відповідно до параметра Трівкіна «coordinates=». Отже, для Трівкіна «coordinates=xz» joint0 відповідає X, а joint1 відповідає Z. Інформацію про Трівкіна та інші кінематичні модулі див. на сторінці довідки про кінематику («$ man kins»).

  • LINEAR_UNITS = <одиниці>_ - Визначає «машинні одиниці» для лінійних осей. Можливі варіанти: мм або дюйми. Це не впливає на лінійні одиниці в коді CNC (це роблять слова G20 та G21).

  • ANGULAR_UNITS = <одиниці виміру> - Вказує «машинні одиниці виміру» для осей обертання. Можливі варіанти: «deg», «degree» (360 на коло), «rad», «radian» (2*π на коло), «grad» або «gon» (400 на коло). Це не впливає на кутові одиниці виміру коду CNC. У RS274NGC слова A-, B- і C- завжди виражаються в градусах.

  • DEFAULT_LINEAR_VELOCITY = 0.0167 – Початкова швидкість для поштовхів лінійних осей у машинних одиницях за секунду. Значення, що відображається в AXIS, дорівнює машинним одиницям за хвилину.

  • DEFAULT_LINEAR_ACCELERATION = 2.0 – У машинах з нетривіальною кінематикою, прискорення, що використовується для телеоптичних (декартових) штовхань, у «машинних одиницях» за секунду за секунду.

  • MAX_LINEAR_VELOCITY = 5.0 – Максимальна швидкість для будь-якої осі або скоординованого руху в «машинних одиницях» за секунду. Відображене значення дорівнює 300 одиницям за хвилину.

  • MAX_LINEAR_ACCELERATION = 20.0 – Максимальне прискорення для будь-якого руху осі або координованої осі в «машинних одиницях» за секунду за секунду.

  • PLANNER_TYPE = 0 - Вибирає тип планувальника траєкторії: 0 = трапецієподібна (за замовчуванням), 1 = S-подібна крива з обмеженням ривка. Планування за S-подібною кривою активне лише тоді, коли PLANNER_TYPE = 1 ТА MAX_LINEAR_JERK > 0.

  • MAX_LINEAR_JERK = 10000.0 - The maximum jerk (rate of change of acceleration) for coordinated moves, in machine units per second cubed. Default is 1e9 (1 billion) if not specified, which effectively disables jerk limiting while avoiding numerical instability. Values are clamped to a maximum of 1e9 to prevent numerical issues in S-curve calculations. When PLANNER_TYPE = 1, this enables S-curve trajectory planning. Note: Not specifying MAX_LINEAR_JERK (defaulting to 1e9) produces motion similar to trapezoidal planning (PLANNER_TYPE = 0) but not identical, as extremely high jerk still uses S-curve calculations.

  • POSITION_FILE = position.txt - Якщо встановлено непусте значення, положення суглобів зберігаються між запусками в цьому файлі. Це дозволяє машині запускатися з тими самими координатами, що були на момент вимкнення. Це передбачає, що під час вимкнення живлення машина не рухалася. Якщо не встановлено, положення суглобів не зберігаються і будуть починатися з 0 кожного разу при запуску LinuxCNC. Це може бути корисно для невеликих машин без перемикачів початкового положення. При використанні інтерфейсу Mesa resolver цей файл може бути використаний для емуляції абсолютних енкодерів і усунення необхідності повернення в початкове положення (без втрати точності). Більш детальну інформацію дивіться на сторінці довідки hostmot2.

  • NO_FORCE_HOMING = 1 - (bool) The default behavior is for LinuxCNC to force the user to home the machine before any MDI command or a program is run. Normally, only jogging is allowed before homing. For configurations using identity kinematics, setting NO_FORCE_HOMING = 1 allows the user to make MDI moves and run programs without homing the machine first. Interfaces using identity kinematics without homing ability will need to have this option set to 1.

Warning

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

  • HOME = 0 0 0 0 0 0 0 0 0 - Початкове положення в світовій системі координат, необхідне для кінематичних модулів, які обчислюють світові координати за допомогою kinematicsForward() при переході з режиму з’єднання в режим телеоперації. Можна вказати до дев’яти значень координат (X Y Z A B C U V W), невикористані кінцеві елементи можна опустити. Це значення використовується тільки для машин з нетривіальною кінематикою. На машинах з тривіальною кінематикою (фрезерні, токарні, портальні типи) це значення ігнорується. Примітка: Конфігурація шестиногих роботів sim вимагає значення, відмінного від нуля, для координати 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), вказаної в модулі руху (motmod).)

  • KINEMATICS = trivkins - Вкажіть кінематичний модуль для модуля руху. Графічні інтерфейси можуть використовувати цю змінну для вказання рядка loadrt у файлах HAL для модуля motmod. Для отримання додаткової інформації про кінематичні модулі див. сторінку довідки: $ man kins.

2.12. [AXIS_<letter>] Розділ

<літера> визначає одне з: X Y Z A B C U V W

  • TYPE = LINEAR - (enum) 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 - (real) Maximum velocity for this axis in machine units per second.

  • MAX_ACCELERATION = 20.0 - (real) Maximum acceleration for this axis in machine units per second squared.

  • MAX_JERK = 0.0 - (real) Maximum jerk for this axis in machine units per second cubed. Used when S-curve trajectory planning is enabled. When set to 0 (default), no per-axis jerk limiting is applied.

  • MIN_LIMIT = -1000 - (real) The minimum limit (soft limit) for axis motion, in machine units. When this limit is exceeded, the controller aborts axis motion. The axis must be homed before MIN_LIMIT is in force. For a rotary axis (A,B,C typ) with unlimited rotation having no MIN_LIMIT for that axis in the [AXIS_<letter>] section a value of -1e99 is used.

  • MAX_LIMIT = 1000 - (real) The maximum limit (soft limit) for axis motion, in machine units. When this limit is exceeded, the controller aborts axis motion. The axis must be homed before MAX_LIMIT is in force. For a rotary axis (A,B,C typ) with unlimited rotation having no MAX_LIMIT for that axis in the [AXIS_<letter>] section a value of 1e99 is used.

  • WRAPPED_ROTARY = 1 - (bool) When this is set to 1 for an ANGULAR axis the axis will move 0-359.999 degrees. Positive Numbers will move the axis in a positive direction and negative numbers will move the axis in the negative direction.

  • LOCKING_INDEXER_JOINT = 4 - (int) This value selects a joint to use for a locking indexer for the specified axis <letter>. In this example, the joint is 4 which would correspond to the B axis for a XYZAB system with trivkins (identity) kinematics. When set, a G0 move for this axis will initiate an unlock with the joint.4.unlock pin then wait for the joint.4.is-unlocked pin then move the joint at the rapid rate for that joint. After the move the joint.4.unlock will be false and motion will wait for joint.4.is-unlocked to go false. Moving with other joints is not allowed when moving a locked rotary joint. To create the unlock pins, use the motmod parameter:

    unlock_joints_mask=jointmask

    Біти маски спільного доступу є: (LSB)0:joint0, 1:joint1, 2:joint2, …

    Приклад: loadrt motmod ... unlock_joints_mask=0x38 creates unlock-pins for joints 3,4,5.

  • OFFSET_AV_RATIO = 0.1 - (real) If nonzero, this item enables the use of HAL input pins for external axis offsets:

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

Див. розділ: Зовнішні зміщення осей для отримання інформації про використання.

2.13. [JOINT_<num>] Розділи

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

Розділи [JOINT_0], [JOINT_1] тощо містять загальні параметри для окремих компонентів у модулі управління з’єднаннями. Назви розділів з’єднань починаються з нумерації 0 і проходять через кількість з’єднань, зазначену в записі [KINS]JOINTS, мінус 1.

Зазвичай (для систем, що використовують «кінематику Трівкінса», існує відповідність 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

Інші кінематичні модулі з тотожною кінематикою доступні для підтримки конфігурацій з частковими наборами осей. Наприклад, використовуючи тривкіни з coordinates=XZ, зв’язки між осями та суглобами:

  • JOINT_0 = X

  • JOINT_1 = Z

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

  • TYPE = LINEAR - (enum) The type of joint, either LINEAR or ANGULAR.

  • UNITS = INCH - (enum) If specified, this setting overrides the related [TRAJ] UNITS setting, e.g., [TRAJ]LINEAR_UNITS if the TYPE of this joint is LINEAR, [TRAJ]ANGULAR_UNITS if the TYPE of this joint is ANGULAR.

  • MAX_VELOCITY = 1.2 - (real) Maximum velocity for this joint in machine units per second.

  • MAX_ACCELERATION = 20.0 - (real) Maximum acceleration for this joint in machine units per second squared.

  • MAX_JERK = 0.0 - (real) Maximum jerk for this joint in machine units per second cubed. Used when S-curve trajectory planning is enabled. When set to 0 (default), no per-joint jerk limiting is applied.

  • BACKLASH = 0.0000 - (real) Backlash in machine units. Backlash compensation value can be used to make up for small deficiencies in the hardware used to drive an joint. If backlash is added to an joint and you are using steppers the STEPGEN_MAXACCEL must be increased to 1.5 to 2 times the MAX_ACCELERATION for the joint. Excessive backlash compensation can cause an joint to jerk as it changes direction. If a COMP_FILE is specified for a joint BACKLASH is not used.

  • COMP_FILE = file.extension - (string) The compensation file consists of map of position information for the joint. Compensation file values are in machine units. Each set of values are are on one line separated by a space. The first value is the nominal value (the commanded position). The second and third values depend on the setting of COMP_FILE_TYPE. Points in between nominal values are interpolated between the two nominals. Compensation files must start with the smallest nominal and be in ascending order to the largest value of nominals. File names are case sensitive and can contain letters and/or numbers. Currently the limit inside LinuxCNC is for 256 triplets per joint.

    Якщо для з’єднання вказано COMP_FILE, BACKLASH не використовується.

  • COMP_FILE_TYPE = 0 or 1 - (int) Specifies the type of compensation file. The first value is the nominal (commanded) position for both types.
    A COMP_FILE_TYPE must be specified for each COMP_FILE.

    • «Тип 0»: Друге значення визначає фактичне положення, коли шарнір рухається в позитивному напрямку (збільшення значення). Третє значення визначає фактичне положення, коли шарнір рухається в негативному напрямку (зменшення значення).

      Приклад типу 0
      -1.000 -1.005 -0.995
      0.000 0.002 -0.003
      1.000 1.003 0.998
    • «Тип 1»: Друге значення визначає позитивне відхилення від номінального значення під час руху в позитивному напрямку. Третє значення визначає негативне відхилення від номінального значення під час руху в негативному напрямку.

      Приклад типу 1
      -1.000 0.005 -0.005
      0.000 0.002 -0.003
      1.000 0.003 -0.004
  • MIN_LIMIT = -1000 - (real) The minimum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having no MIN_LIMIT for that joint in the [JOINT_N] section a the value -1e99 is used.

  • MAX_LIMIT = 1000 - (real) The maximum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having no MAX_LIMIT for that joint in the [JOINT_N] section a the value 1e99 is used.

Note

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

Note

Налаштування [JOINT_N]MIN_LIMIT/MAX_LIMIT застосовуються під час ручного переміщення в режимі з’єднання перед поверненням у вихідне положення. Після повернення у вихідне положення координатні обмеження ` [AXIS_L]MIN_LIMIT`/MAX_LIMIT використовуються як обмеження для переміщення осі (літери координати) та для планування траєкторії, що використовується для переміщень G-коду (програм та команд MDI). Планувальник траєкторії працює в декартовому просторі (XYZABCUVW) і не має інформації про рух суглобів, реалізований будь-яким кінематичним модулем. Можливе порушення меж суглобів для G-коду, який дотримується обмежень позиції планування траєкторії, коли використовується неідентична кінематика. Модуль руху завжди виявляє порушення меж позиції суглобів і несправності, якщо вони відбуваються під час виконання команд G-коду. Див. також пов’язану проблему GitHub issue #97.

  • MIN_FERROR = 0.010 - (real) This is the value in machine units by which the joint is permitted to deviate from commanded position at very low speeds. If MIN_FERROR is smaller than FERROR, the two produce a ramp of error trip points. You could think of this as a graph where one dimension is speed and the other is permitted following error. As speed increases the amount of following error also increases toward the FERROR value.

  • FERROR = 1.0 - (real) FERROR is the maximum allowable following error, in machine units. If the difference between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY, and proportionally smaller following errors for slower speeds. The maximum allowable following error will always be greater than MIN_FERROR. This prevents small following errors for stationary axes from inadvertently aborting motion. Small following errors will always be present due to vibration, etc.

  • LOCKING_INDEXER = 1 - (bool) Indicates the joint is used as a locking indexer.

2.13.1. Самонаведення

Ці параметри пов’язані з перенаправленням, для кращого пояснення прочитайте розділ Налаштування перенаправлення.

  • HOME = 0.0 - (real) The position that the joint will go to upon completion of the homing sequence.

  • HOME_OFFSET = 0.0 - (real) The joint position of the home switch or index pulse, in machine units. When the home point is found during the homing process, this is the position that is assigned to that point. When sharing home and limit switches and using a home sequence that will leave the home/limit switch in the toggled state, the home offset can be used define the home switch position to be other than 0 if your HOME position is desired to be 0.

  • HOME_SEARCH_VEL = 0.0 - (real) Initial homing velocity in machine units per second. Sign denotes direction of travel. A value of zero means assume that the current location is the home position for the machine. If your machine has no home switches you will want to leave this value at zero.

  • HOME_LATCH_VEL = 0.0 - (real) Homing velocity in machine units per second to the home switch latch position. Sign denotes direction of travel.

  • HOME_FINAL_VEL = 0.0 - (real) Velocity in machine units per second from home latch position to home position. If left at 0 or not included in the joint rapid velocity is used. Must be a positive number.

  • HOME_USE_INDEX = NO - (bool) If the encoder used for this joint has an index pulse, and the motion card has provision for this signal you may set it to yes. When it is yes, it will affect the kind of home pattern used. Currently, you can’t home to index with steppers unless you’re using StepGen in velocity mode and PID.

  • HOME_INDEX_NO_ENCODER_RESET = NO - (bool) Use YES if the encoder used for this joint does not reset its counter when an index pulse is detected after assertion of the joint index_enable HAL pin. Applicable only for HOME_USE_INDEX = YES.

  • HOME_IGNORE_LIMITS = NO - (bool) When you use the limit switch as a home switch and the limit switch this should be set to YES. When set to YES the limit switch for this joint is ignored when homing. You must configure your homing so that at the end of your home move the home/limit switch is not in the toggled state you will get a limit switch error after the home move.

  • HOME_IS_SHARED = NO - (bool) If the home input is shared by more than one joint set to true to prevent homing from starting if the one of the shared switches is already closed. Set to false (the default) to permit homing if a switch is closed.

  • HOME_ABSOLUTE_ENCODER = 0 | 1 | 2 - (int) Used to indicate the joint uses an absolute encoder. At a request for homing, the current joint value is set to the HOME_OFFSET value. If the HOME_ABSOLUTE_ENCODER setting is 1, the machine makes the usual final move to the HOME value. If the HOME_ABSOLUTE_ENCODER setting is 2, no final move is made.

  • HOME_SEQUENCE = <n> - (int) Used to define the "Home All" sequence. <n> must start at 0 or 1 or -1. Additional sequences may be specified with numbers increasing by 1 (in absolute value). Skipping of sequence numbers is not allowed. If a HOME_SEQUENCE is omitted, the joint will not be homed by the "Home All" function. More than one joint can be homed at the same time by specifying the same sequence number for more than one joint. A negative sequence number is used to defer the final move for all joints having that (negative or positive) sequence number. For additional info, see: HOME SEQUENCE.

  • VOLATILE_HOME = 0 - (bool) When enabled (set to 1) this joint will be unhomed if the Machine Power is off or if E-Stop is on. This is useful if your machine has home switches and does not have position feedback such as a step and direction driven machine.

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

Ці параметри стосуються з’єднань, керованих сервоприводами.

Warning
Нижче наведено власні записи INI-файлу, які ви можете знайти у зразковому INI-файлі або у файлі, створеному за допомогою майстра. Вони не використовуються програмним забезпеченням LinuxCNC. Вони призначені лише для того, щоб зібрати всі налаштування в одному місці. Більш детальну інформацію про власні записи INI-файлу див. у підрозділі Власні розділи та змінні.

Наступні елементи можуть використовуватися компонентом PID, і припущення полягає в тому, що вихідний сигнал – це вольти.

  • DEADBAND = 0.000015 - (real) How close is close enough to consider the motor in position, in machine units.

    Часто це значення встановлюється на відстань, еквівалентну 1, 1,5, 2 або 3 імпульсам енкодера, але суворих правил немає. Більш вільні (більші) налаштування дозволяють зменшити «полювання» сервоприводу за рахунок зниження точності. Більш жорсткі (менші) налаштування забезпечують вищу точність за рахунок більшого «полювання» сервоприводу. Чи дійсно це більш точно, якщо це також більш невизначено? Як правило, якщо це можливо, краще уникати або принаймні обмежувати «полювання» сервоприводу.

    Будьте обережні, не опускаючись нижче 1 лічильника енкодера, оскільки ви можете створити ситуацію, в якій сервопривід не зможе нормально працювати. Це може призвести до «полювання» (повільного), «нервозності» (швидкого) і навіть до «скрипу», який легко сплутати з коливанням, спричиненим неправильним налаштуванням. Краще спочатку залишити один-два лічильники вільними, поки ви не пройдете хоча б «грубе налаштування».

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

    images/encoder-counts-math.png
  • BIAS = 0.000 - Використовується hm2-servo та деякими іншими. Bias — це постійна величина, яка додається до вихідного сигналу. У більшості випадків її слід залишати на рівні нуля. Однак іноді вона може бути корисною для компенсації зміщень у сервопідсилювачах або для врівноваження ваги об’єкта, що рухається вертикально. Bias вимикається, коли цикл PID вимкнений, так само як і всі інші компоненти вихідного сигналу.

  • 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 спочатку перетворює бажаний вихід у квазі-SI одиницях у необроблені значення приводу, наприклад, вольти для підсилювача DAC. Це масштабування виглядає так: images/output-offset.png

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

    images/scale-math.png

    Зверніть увагу, що одиниці зміщення вимірюються в одиницях машини, наприклад мм/с, і вони заздалегідь віднімаються від показань датчика. Значення цього зміщення отримується шляхом визначення значення вашого виходу, яке дає 0,0 для виходу приводу. Якщо DAC лінеаризований, це зміщення зазвичай дорівнює 0,0.

    Масштаб та зміщення також можна використовувати для лінеаризації DAC, що призводить до значень, що відображають комбінований вплив коефіцієнта посилення підсилювача, нелінійності DAC, одиниць DAC тощо.

    Для цього виконайте таку процедуру.

    1. Створіть калібрувальну таблицю для вихідного сигналу, подаючи на DAC потрібну напругу та вимірюючи результат.

    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 - Максимальне значення вихідного сигналу PID-компенсації, яке записується в підсилювач двигуна, у вольтах. Обчислене значення вихідного сигналу обмежується цим значенням. Обмеження застосовується перед масштабуванням до вихідних одиниць. Значення застосовується симетрично як до плюсової, так і до мінусової сторони.

  • 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-файлу див. у підрозділі Власні розділи та змінні.

Компонент StepGen може використовувати наступні елементи.

  • SCALE = 4000 - у Зразках конфігурацій

  • STEP_SCALE = 4000 - у вбудованих конфігураціях PnCconf

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

Наприклад, для крокового двигуна на 1,8 градуса з напівкроковим перемиканням, зубчастою передачею 10 обертів/дюйм та бажаними machine units дюймів, ми маємо:

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. Це значення покращує налаштування «позиційного циклу» 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 - (real) The maximum spindle speed (in rpm) for the specified spindle. Optional. This will also set MAX_REVERSE_VELOCITY to the negative value unless overridden.

  • MIN_FORWARD_VELOCITY = 3000 - (real) The minimum spindle speed (in rpm) for the specified spindle. Optional. Many spindles have a minimum speed below which they should not be run. Any spindle speed command below this limit will be /increased/ to this limit.

  • MAX_REVERSE_VELOCITY = 20000 - (real) This setting will default to MAX_FORWARD_VELOCITY if omitted. It can be used in cases where the spindle speed is limited in reverse. Set to zero for spindles which must not be run in reverse. In this context "max" refers to the absolute magnitude of the spindle speed.

  • MIN_REVERSE_VELOCITY = 3000 - (real) This setting is equivalent to MIN_FORWARD_VELOCITY but for reverse spindle rotation. It will default to the MIN_FORWARD_VELOCITY if omitted.

  • INCREMENT = 200 - (real) Sets the step size for spindle speed increment / decrement commands. This can have a different value for each spindle. This setting is effective with AXIS and Touchy but note that some control screens may handle things differently.

  • HOME_SEARCH_VELOCITY = 100 - (real) FIXME: Spindle homing not yet working. Sets the homing speed (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the spindle index is located, at which point the spindle position will be set to zero. Note that it makes no sense for the spindle home position to be any value other than zero, and so there is no provision to do so.

  • HOME_SEQUENCE = 0 - (int) FIXME: Spindle homing not yet working Controls where in the general homing sequence the spindle homing rotations occur. Set the HOME_SEARCH_VELOCITY to zero to avoid spindle rotation during the homing sequence.

2.15. [EMCIO] Розділ

  • TOOL_TABLE = tool.tbl - (string) The file which contains tool information, described in the User Manual.

  • DB_PROGRAM = db_program - (string) Path to an executable program that manages tool data. When a DB_PROGRAM is specified, a TOOL_TABLE entry is ignored.

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

  • TOOL_CHANGE_WITH_SPINDLE_ON = 1 - (bool) The spindle will be left on during the tool change when the value is 1. Useful for lathes or machines where the material is in the spindle, not the tool.

  • TOOL_CHANGE_QUILL_UP = 1 - (bool) The Z axis will be moved to machine zero prior to the tool change when the value is 1. This is the same as issuing a G0 G53 Z0.

  • TOOL_CHANGE_AT_G30 = 1 - (bool) The machine is moved to reference point defined by parameters 5181-5186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30-G30.1.

  • RANDOM_TOOLCHANGER = 1 - (bool) This is for machines that cannot place the tool back into the pocket it came from. For example, machines that exchange the tool in the active pocket with the tool in the spindle.