1. Компоненти INI-файлу
Типовий INI-файл має досить просту структуру, яка включає;
-
коментарі
-
розділи
-
змінні
Кожен із цих елементів розділений на окремі рядки. Кожен символ кінця рядка або нового рядка створює новий елемент.
1.1. Коментарі
Коментар починається зі знака ; або #. Коли програма для читання INI-файлів бачить один із цих знаків на початку рядка, решта рядка ігнорується програмним забезпеченням. Коментарі можна використовувати для опису функції елемента INI.
; Це файл конфігурації мого млина. # Я налаштував його 12 січня 2012 року.
Коментарі також можна використовувати для «вимикання» змінної. Це спрощує вибір між різними змінними.
DISPLAY = axis # DISPLAY = touchy
У цьому списку змінна DISPLAY буде встановлена на axis, оскільки інша змінна закомментована. Якщо хтось необережно редагує такий список і залишає дві рядки незакомментованими, буде використано перший з них.
Зверніть увагу, що всередині змінної символи "#" та ";" не позначають коментарі:
INCORRECT = value # і коментар # Правильний коментар CORRECT = value
1.2. Розділи
Пов’язані частини файлу INI розділені на секції. Назва секції вказується в дужках, наприклад: [ЦЯ_СЕКЦІЯ]. Порядок секцій не має значення. Секції починаються з назви секції і закінчуються наступною назвою секції.
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 = Моя машина
Змінна рядок може бути розширена до декількох рядків за допомогою символу зворотного слеша (\). Допускається максимум 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/увімкнено та одне з FALSE, NO або 0 для false/вимкнено. Реєстр ігнорується.
У наступних розділах детально описано кожен розділ файлу конфігурації, використовуючи зразки значень для рядків конфігурації.
Змінні, що використовуються LinuxCNC, завжди повинні використовувати назви розділів та змінних, як показано.
1.4. Розділи та змінні на замовлення
Більшість зразків конфігурацій використовують користувацькі розділи та змінні, щоб розмістити всі налаштування в одному місці для зручності.
Щоб додати користувацьку змінну до існуючого розділу LinuxCNC, просто додайте змінну в цей розділ.
[JOINT_0] TYPE = LINEAR ... SCALE = 16000
Щоб додати користувацький розділ із власними змінними, додайте розділ та змінні до INI-файлу.
[PROBE] Z_FEEDRATE = 50 Z_OFFSET = 12 Z_SAFE_DISTANCE = -10
Щоб використовувати користувацькі змінні у вашому HAL-файлі, вставте назву розділу та змінної замість значення.
setp offset.1.offset [PROBE]Z_OFFSET setp stepgen.0.position-scale [JOINT_0]SCALE
|
Note
|
Значення, що зберігається у змінній, має відповідати типу, визначеному виводом компонента. |
Щоб використовувати власні змінні в G-коді, використовуйте синтаксис глобальної змінної #<_ini[section]variable>. Наступний приклад показує просту процедуру відліку осі Z для фрезерного верстата або фрези з використанням зондувальної пластини.
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-файл
-
файл, розташований відносно робочого каталогу
-
абсолютне ім’я файлу (починається з /)
-
ім’я файлу, відносне до домашнього каталогу користувача (починається з ~)
Підтримується кілька директив #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. За замовчуванням друкувати тільки помилки (1), якщо біти EMC_DEBUG_RCS та EMC_DEBUG_RCS уDEBUGне встановлені, інакше друкувати все (-1). Використовуйте це для вибору повідомлень про налагодження RCS. Дивіться src/libnml/rcs/rcs_print.hh для всіх прапорців MODE. -
RCS_DEBUG_DEST = STDOUT- як виводити повідомлення RCS_DEBUG (NULL, STDOUT, STDERR, FILE, LOGGER, MSGBOX). -
RCS_MAX_ERR = -1– Число, після якого помилки RCS більше не повідомляються (-1 = нескінченно). -
NML_FILE = /usr/share/linuxcnc/linuxcnc.nml– Встановіть це значення, якщо ви хочете використовувати файл конфігурації NML, який не є файлом за замовчуванням.
2.2. [DISPLAY] Розділ
Різні програми інтерфейсу користувача використовують різні опції, і не кожна опція підтримується кожним інтерфейсом користувача. Існує кілька інтерфейсів, таких як AXIS, GMOCCAPY, Touchy, QtDragon від QtVCP та Gscreen. AXIS — це інтерфейс для використання зі звичайним комп’ютером та монітором, Touchy — для використання з сенсорними екранами. GMOCCAPY можна використовувати обома способами, він також пропонує багато підключень для апаратного керування. Опис інтерфейсів наведено в розділі «Інтерфейси» посібника користувача.
-
DISPLAY = axis- Ім’я файлу виконуваного файлу, що забезпечує інтерфейс користувача для використання. Основні допустимі варіанти (всі в нижньому регістрі):axis,touchy,gmoccapy,gscreen,tklinuxcnc,qtvcp,qtvcp-qtdragonабоqtvcp-qtplasmac. -
POSITION_OFFSET = RELATIVE— система координат (RELATIVEабоMACHINE), яка відображається на цифровому індикаторі положення (DRO) під час запуску інтерфейсу користувача. Система координат RELATIVE відображає поточні зміщення координат G92 та G5x. -
POSITION_FEEDBACK = COMMANDED- Значення координат (COMMANDEDабоACTUAL), яке відображається на DRO при запуску інтерфейсу користувача. У AXIS це можна змінити в меню «View» (Вигляд). Положення COMMANDED — це положення, яке запитує LinuxCNC. Положення ACTUAL — це положення зворотного зв’язку двигунів, якщо вони мають зворотний зв’язок, як більшість сервосистем. Зазвичай використовується значення COMMANDED. -
DRO_FORMAT_MM = %+08.6f- Перезаписати форматування DRO за замовчуванням у метричному режимі (зазвичай 3 десяткові знаки, доповнені пробілами до 6 цифр зліва). У наведеному вище прикладі будуть додані нулі, відображено 6 десяткових цифр і примусово відображено знак + для додатних чисел. Форматування відповідає практиці Python: https://docs.python.org/2/library/string.html#format-specification-mini-language . Якщо формат не може прийняти значення з плаваючою комою, буде згенеровано помилку. -
DRO_FORMAT_IN = % 4.1f- Перезаписати форматування DRO за замовчуванням в імперському режимі (зазвичай 4 десяткові знаки, доповнені пробілами до 6 цифр зліва). У наведеному вище прикладі буде відображатися тільки одна десяткова цифра. Форматування відповідає практиці Python: https://docs.python.org/2/library/string.html#format-specification-mini-language . Якщо формат не може прийняти значення з плаваючою комою, буде згенеровано помилку. -
CONE_BASESIZE = .25– Змінити розмір конуса/бази інструмента за замовчуванням, що дорівнює 0.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.-
застаріло - замість цього використовуйте розділ [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- Показати повідомлення з запитом на повернення в початкове положення, коли в AXIS GUI натискається кнопка Power On. Натискання кнопки «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 -
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– Керує попереднім переглядом та заднім відображенням руху. Цей елемент складається з послідовності літер осей та керуючих символів, яким необов’язково передувати знак "-":-
Літери X, Y, Z вказують на зміщення вздовж іменованої координати.
-
Літери A, B, C вказують обертання навколо відповідних осей X, Y, Z.
-
Літери U, V, W вказують на зміщення вздовж відповідних осей X, Y, Z.
-
Кожна зазначена літера повинна зустрічатися в
[TRAJ]COORDINATES, щоб мати ефект. -
Символ "-" перед будь-якою літерою інвертує напрямок операції.
-
Операції перенесення та обертання оцінюються зправа наліво. Тому використання
GEOMETRY=XYZBCвизначає обертання C, за яким слідує обертання B, а потім перенесення Z, Y, X. Порядок послідовних літер перенесення не має значення. -
Правильний рядок GEOMETRY залежить від конфігурації машини та кінематики, що використовується для її керування. Порядок літер є важливим. Наприклад, обертання навколо C, а потім B відрізняється від обертання навколо B, а потім C.
-
Повороти за замовчуванням застосовуються відносно початку координат верстата. Приклад:
GEOMETRY=CXYZспочатку переносить контрольну точку в X, Y, Z, а потім виконує поворот C навколо осі Z з центром у початку координат верстата. -
Приклад перетворення UVW:
GEOMETRY=XYZUVWпризводить до переміщення UVW у системі координат інструмента, а XYZ – у системі координат матеріалу. -
Машини для різання пінопласту (
FOAM = 1) повинні вказувати «XY;UV» або залишати значення порожнім, навіть якщо це значення наразі ігнорується в режимі різання пінопласту. У майбутній версії може бути визначено значення «;», але якщо це станеться, «XY;UV» буде означати те саме, що і поточне значення за замовчуванням для пінопласту. -
Експериментально: Якщо в рядку 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). Порядок пошуку такий:
-
[DISPLAY]PROGRAM_PREFIX(якщо вказано) -
Якщо
[DISPLAY]PROGRAM_PREFIXне вказано, пошук здійснюється за місцем розташування за замовчуванням: nc_files -
Потім пошукайте в кожному каталозі у списку
[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. -
PARAMETER_G73_PECK_CLEARANCE = .020 (за замовчуванням: метрична система: 1 мм, імперська система: .050 дюймів) Відстань відлому стружки в одиницях вимірювання
-
PARAMETER_G83_PECK_CLEARANCE = .020 (за замовчуванням: метрична машина: 1 мм, імперська машина: .050 дюйма) Відстань від останньої глибини подачі, коли машина швидко повертається до дна отвору, в одиницях виміру машини.
|
Note
|
Вищезазначені шість опцій контролювалися бітовою маскою
|
|
Note
|
[WIZARD]WIZARD_ROOT – це дійсний шлях пошуку, але майстер не повністю реалізовано, і результати його використання непередбачувані. |
-
LOG_LEVEL = 0Specify 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- Період у секундах, протягом якого буде виконуватися 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з опцією "-Hdirname", вказане ім’я каталогу додається до початку пошуку, описаного вище, так що dirname шукається першим. Опція "-Hdirname" може бути вказана більше одного разу, каталоги додаються в порядку.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 визначають файли, які завантажують компоненти HAL та встановлюють сигнальні з’єднання між контактами компонентів. Поширені помилки
-
пропуск оператора addf, необхідного для додавання функції(й) компонента до потоку,
-
неповні специфікатори сигналу (мережі).
Пропуск необхідних операторів 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 використовує такі значення за замовчуванням: |
Розділ [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– Максимальне прискорення для будь-якого руху осі або координованої осі в «машинних одиницях» за секунду за секунду. -
POSITION_FILE =position.txt - Якщо встановлено непусте значення, положення суглобів зберігаються між запусками в цьому файлі. Це дозволяє машині запускатися з тими самими координатами, що були на момент вимкнення. Це передбачає, що під час вимкнення живлення машина не рухалася. Якщо не встановлено, положення суглобів не зберігаються і будуть починатися з 0 кожного разу при запуску LinuxCNC. Це може бути корисно для невеликих машин без перемикачів початкового положення. При використанні інтерфейсу Mesa resolver цей файл може бути використаний для емуляції абсолютних енкодерів і усунення необхідності повернення в початкове положення (без втрати точності). Більш детальну інформацію дивіться на сторінці довідки hostmot2. -
NO_FORCE_HOMING = 1- За замовчуванням LinuxCNC змушує користувача повернути верстат у вихідне положення перед виконанням будь-якої команди MDI або програми. Зазвичай перед поверненням у вихідне положення дозволено тільки ручне переміщення. Для конфігурацій, що використовують ідентичну кінематику, установкаNO_FORCE_HOMING = 1дозволяє користувачеві виконувати переміщення MDI і запускати програми без попереднього повернення машини у вихідне положення. Інтерфейси, що використовують ідентичну кінематику без можливості повернення у вихідне положення, повинні мати цю опцію встановленою на 1.
|
Warning
|
LinuxCNC не знатиме меж переміщення вашого суглоба при використанні |
-
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- Тип цієї осі, абоLINEAR, абоANGULAR. Необхідно, якщо ця вісь не є типом осі за замовчуванням. Типи осей за замовчуванням: X, Y, Z, U, V, W = LINEAR та A, B, C = ANGULAR. Це налаштування діє в графічному інтерфейсі AXIS, але зверніть увагу, що інші графічні інтерфейси можуть по-різному обробляти дані. -
MAX_VELOCITY = 1.2– Максимальна швидкість для цієї осі в machine units за секунду. -
MAX_ACCELERATION = 20.0- Максимальне прискорення для цієї осі в машинних одиницях за секунду в квадраті. -
MIN_LIMIT = -1000- Мінімальне обмеження (м’яке обмеження) для руху осі, в одиницях машини. При перевищенні цього обмеження контролер припиняє рух осі. Ось повинна бути повернена в початкове положення, перш ніжMIN_LIMITнабуде чинності. Для обертової осі (типу A, B, C) з необмеженим обертанням, яка не маєMIN_LIMITдля цієї осі в розділі[AXIS_<літера>], використовується значення -1e99. -
MAX_LIMIT = 1000- Максимальний ліміт (м’який ліміт) для руху осі, в одиницях машини. Коли цей ліміт перевищується, контролер припиняє рух осі. Ось повинна бути повернена в початкове положення, перш ніж MAX_LIMIT вступить в силу. Для обертової осі (типу A, B, C) з необмеженим обертанням, яка не маєMAX_LIMITдля цієї осі в розділі[AXIS_<літера>], використовується значення 1e99. -
WRAPPED_ROTARY = 1- Якщо для осі ANGULAR встановлено значення 1, вісь буде рухатися в діапазоні 0-359,999 градусів. Додатні числа перемістять вісь у додатному напрямку, а від’ємні числа - у від’ємному напрямку. -
LOCKING_INDEXER_JOINT = 4- Це значення вибирає шарнір, який буде використовуватися для індексатора блокування для вказаної осі <літера>. У цьому прикладі шарнір має номер 4, що відповідає осі B для системи XYZAB з кінематикою Трівкінса (тотожною). Після встановлення G0-рух для цієї осі ініціює розблокування за допомогоюjoint.4.unlock pin, потім чекає наjoint.4.is-unlockedpin, а потім переміщує шарнір із швидкістю, встановленою для цього шарніра. Після переміщення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=0x38creates unlock-pins for joints 3,4,5. -
OFFSET_AV_RATIO = 0.1- Якщо значення не дорівнює нулю, цей елемент дозволяє використовувати вхідні контакти HAL для зміщення зовнішніх осей: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- Тип з’єднання, абоLINEAR, абоANGULAR. -
UNITS = INCH- Якщо вказано, цей параметр замінює пов’язаний параметр[TRAJ] UNITS, наприклад,[TRAJ]LINEAR_UNITS, якщоTYPEцього з’єднання —LINEAR,[TRAJ]ANGULAR_UNITS, якщоTYPEцього з’єднання —ANGULAR. -
MAX_VELOCITY = 1.2- Максимальна швидкість для цього з’єднання в machine units за секунду. -
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або1– Визначає тип файлу компенсації. Перше значення – це номінальна (задана) позиція для обох типів.
Для кожногоCOMP_FILEнеобхідно вказатиCOMP_FILE_TYPE.-
«Тип 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- мінімальне обмеження для руху з’єднання, в одиницях машини. Коли це обмеження досягається, контролер припиняє рух з’єднання. Для поворотного з’єднання з необмеженим обертанням, яке не маєMIN_LIMITдля цього з’єднання в розділі[JOINT_N], використовується значення -1e99. -
MAX_LIMIT = 1000- Максимальний ліміт для руху з’єднання, в одиницях машини. Коли цей ліміт досягнуто, контролер припиняє рух з’єднання. Для поворотного з’єднання з необмеженим обертанням, яке не маєMAX_LIMITдля цього з’єднання в розділі[JOINT_N], використовується значення 1e99.
|
Note
|
Для кінематики ідентичності налаштування |
|
Note
|
Налаштування |
-
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. Самонаведення
Ці параметри пов’язані з перенаправленням, для кращого пояснення прочитайте розділ Налаштування перенаправлення.
-
HOME = 0.0- Положення, в яке перейде шарнір після завершення послідовності повернення до початкової точки. -
HOME_OFFSET = 0.0- Спільне положення перемикача початкової позиції або імпульсу індексу в machine units. Коли під час процесу повернення до початкової позиції знайдено початкову точку, це положення присвоюється цій точці. При спільному використанні перемикачів початкової позиції та кінцевого положення і використанні послідовності повернення в початкову позицію, яка залишає перемикач початкової позиції/кінцевого положення в перемиканому стані, зміщення початкової позиції може бути використане для визначення положення перемикача початкової позиції, відмінного від 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), цей шарнір буде виведений з вихідного положення, якщо живлення машини вимкнено або увімкнено аварійне зупинення. Це корисно, якщо ваша машина має вимикачі вихідного положення і не має зворотного зв’язку щодо положення, наприклад, машина з кроковим приводом і приводом за напрямком.
2.13.2. Сервоприводи
Ці параметри стосуються з’єднань, керованих сервоприводами.
|
Warning
|
Нижче наведено власні записи INI-файлу, які ви можете знайти у зразковому INI-файлі або у файлі, створеному за допомогою майстра. Вони не використовуються програмним забезпеченням LinuxCNC. Вони призначені лише для того, щоб зібрати всі налаштування в одному місці. Більш детальну інформацію про власні записи INI-файлу див. у підрозділі Власні розділи та змінні. |
Наступні елементи можуть використовуватися компонентом PID, і припущення полягає в тому, що вихідний сигнал – це вольти.
-
DEADBAND = 0.000015- Наскільки близько це достатньо близько, щоб вважати двигун у положенні, у machine units.Часто це значення встановлюється на відстань, еквівалентну 1, 1,5, 2 або 3 імпульсам енкодера, але суворих правил немає. Більш вільні (більші) налаштування дозволяють зменшити «полювання» сервоприводу за рахунок зниження точності. Більш жорсткі (менші) налаштування забезпечують вищу точність за рахунок більшого «полювання» сервоприводу. Чи дійсно це більш точно, якщо це також більш невизначено? Як правило, якщо це можливо, краще уникати або принаймні обмежувати «полювання» сервоприводу.
Будьте обережні, не опускаючись нижче 1 лічильника енкодера, оскільки ви можете створити ситуацію, в якій сервопривід не зможе нормально працювати. Це може призвести до «полювання» (повільного), «нервозності» (швидкого) і навіть до «скрипу», який легко сплутати з коливанням, спричиненим неправильним налаштуванням. Краще спочатку залишити один-два лічильники вільними, поки ви не пройдете хоча б «грубе налаштування».
Приклад розрахунку машинних одиниць на імпульс енкодера для використання при визначенні значення
DEADBAND:
-
BIAS = 0.000- Використовується hm2-servo та деякими іншими. Bias — це постійна величина, яка додається до вихідного сигналу. У більшості випадків її слід залишати на рівні нуля. Однак іноді вона може бути корисною для компенсації зміщень у сервопідсилювачах або для врівноваження ваги об’єкта, що рухається вертикально. Bias вимикається, коли цикл PID вимкнений, так само як і всі інші компоненти вихідного сигналу. -
P = 50- Пропорційний коефіцієнт підсилення для спільного сервоприводу. Це значення помножує похибку між заданим і фактичним положенням в одиницях машини, що призводить до впливу на обчислюване напруження для підсилювача двигуна. Одиниці виміру коефіцієнта підсилення P - вольти на одиницю машини, наприклад,
-
I = 0- Інтегральне підсилення для спільного сервоприводу. Це значення множиться на сукупну похибку між заданим і фактичним положенням в одиницях машини, що дає вклад у обчислюване напруження для підсилювача двигуна. Одиниці виміру підсилення I - вольти на одиницю машини в секунду, наприклад,
-
D = 0- Похідна коефіцієнт підсилення для суглобового сервоприводу. Це значення множиться на різницю між поточним і попереднім помилками, що призводить до внеску в обчислюване напруження для підсилювача двигуна. Одиниці виміру коефіцієнта підсилення D - вольти на одиницю машини в секунду, наприклад,
-
FF0 = 0- Коефіцієнт підсилення прямого зв’язку 0-го порядку. Це число множиться на задане положення, що дає вклад у розраховане напруження для підсилювача двигуна. Одиниці виміру коефіцієнта підсилення FF0 - вольти на одиницю машини, наприклад,
-
FF1 = 0- Коефіцієнт підсилення прямого зв’язку 1-го порядку. Це число множиться на зміну заданого положення за секунду, що дає вклад у обчислюване напруження для підсилювача двигуна. Одиниці виміру коефіцієнта підсилення FF1 - вольти на одиницю машини за секунду, наприклад,
-
FF2 = 0- Коефіцієнт підсилення прямого зв’язку 2-го порядку. Це число множиться на зміну заданого положення в секунду на секунду, що дає вклад у розраховане напруження для підсилювача двигуна. Одиниці виміру коефіцієнта підсилення FF2 - вольти на одиницю машини в секунду на секунду, наприклад,
-
OUTPUT_SCALE = 1.000 -
OUTPUT_OFFSET = 0.000Ці два значення є коефіцієнтами масштабування та зміщення для спільного виходу на підсилювачі двигуна.
Друге значення (зсув) віднімається від обчисленого виходу (у вольтах) і ділиться на перше значення (коефіцієнт масштабування) перед записом у цифро-аналогові перетворювачі. Одиниці виміру на шкалі значень виражені у вольтах на вихідний вольт цифро-аналогового перетворювача. Одиниці виміру на шкалі значень зсуву виражені у вольтах. Вони можуть використовуватися для лінеаризації цифро-аналогового перетворювача. Зокрема, під час запису вихідних даних LinuxCNC спочатку перетворює бажаний вихід у квазі-SI одиницях у необроблені значення приводу, наприклад, вольти для підсилювача DAC. Це масштабування виглядає так:
Значення масштабу можна отримати аналітично, виконавши аналіз одиниць, тобто одиниці вимірювання [одиниці вимірювання SI на виході]/[одиниці вимірювання приводу]. Наприклад, на машині з підсилювачем режиму швидкості, де 1 В відповідає швидкості 250 мм/с.
Зверніть увагу, що одиниці зміщення вимірюються в одиницях машини, наприклад мм/с, і вони заздалегідь віднімаються від показань датчика. Значення цього зміщення отримується шляхом визначення значення вашого виходу, яке дає 0,0 для виходу приводу. Якщо DAC лінеаризований, це зміщення зазвичай дорівнює 0,0.
Масштаб та зміщення також можна використовувати для лінеаризації DAC, що призводить до значень, що відображають комбінований вплив коефіцієнта посилення підсилювача, нелінійності DAC, одиниць DAC тощо.
Для цього виконайте таку процедуру.
-
Створіть калібрувальну таблицю для вихідного сигналу, подаючи на DAC потрібну напругу та вимірюючи результат.
-
Виконайте лінійну апроксимацію методом найменших квадратів, щоб отримати коефіцієнти a, b такі, що
-
Зверніть увагу, що нам потрібен необроблений вихідний сигнал, щоб наш виміряний результат був ідентичним заданому виходу. Це означає
-
-
В результаті, коефіцієнти 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 обертів/дюйм і бажаних одиниць виміру в дюймах ми маємо:
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 дюймів, ми маємо:
|
Note
|
У старих файлах INI та HAL для цього значення використовувалося INPUT_SCALE. |
-
ENCODER_SCALE = 20000(опціонально використовується в конфігураціях, створених за допомогою PnCconf) - Вказує кількість імпульсів, що відповідає переміщенню на одну одиницю машини, як встановлено в розділі[TRAJ]. Для лінійного з’єднання одна одиниця машини буде дорівнювати налаштуваннюLINEAR_UNITS. Для кутового з’єднання одна одиниця дорівнює налаштуванню вANGULAR_UNITS. Друге число, якщо воно вказане, ігнорується. Наприклад, для енкодера з 2000 імпульсами на оберт, передачі 10 обертів/дюйм і бажаних одиниць виміру в дюймах ми маємо:
-
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Максимальна швидкість шпинделя (в об/хв) для зазначеного шпинделя. Необов’язково. Це також встановить MAX_REVERSE_VELOCITY на від’ємне значення, якщо не перевизначено. -
MIN_FORWARD_VELOCITY = 3000Мінімальна швидкість обертання шпинделя (в об/хв) для вказаного шпинделя. Необов’язково. Багато шпинделів мають мінімальну швидкість, нижче якої вони не повинні працювати. Будь-яка команда швидкості обертання шпинделя нижче цього обмеження буде /збільшена/ до цього обмеження. -
MAX_REVERSE_VELOCITY = 20000Якщо це значення не вказано, за замовчуванням буде використовуватися значенняMAX_FORWARD_VELOCITY. Воно може використовуватися у випадках, коли швидкість шпинделя в зворотному напрямку обмежена. Для шпинделів, які не повинні працювати в зворотному напрямку, встановіть значення нуль. У цьому контексті «максимальне» означає абсолютну величину швидкості шпинделя. -
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- Якщо значення дорівнює 1, верстат переміщується до опорної точки, визначеної параметрами 5181-5186 для G30. Докладнішу інформацію див. у розділах G-code Parameters та G-code G30-G30.1. -
RANDOM_TOOLCHANGER = 1- Це стосується верстатів, які не можуть повернути інструмент у гніздо, з якого він вийшов. Наприклад, верстати, які обмінюють інструмент в активному гнізді інструментом у шпинделі.