1. Розташування файлів
LinuxCNC шукає файли конфігурації та G-коду в певному місці. Розташування залежить від того, як ви запускаєте LinuxCNC.
1.1. Встановлено
Якщо ви запускаєте LinuxCNC з Live CD або встановили його через .deb-архів і використовуєте вибірник конфігурації «LinuxCNC» з меню, LinuxCNC шукає в таких каталогах:
-
Каталог LinuxCNC знаходиться за адресою /home/user-name/linuxcnc.
-
Каталоги конфігурації розташовані за адресою /home/user-name/linuxcnc/configs.
-
Файли конфігурації знаходяться за адресою /home/user-name/linuxcnc/configs/name-of-config.
-
-
Файли G-коду знаходяться за адресою /home/user-name/linuxcnc/nc_files'.
Наприклад, для конфігурації під назвою Mill та імені користувача Fred структура каталогів та файлів виглядатиме так.
-
/home/fred/linuxcnc
-
/home/fred/linuxcnc/nc_files
-
/home/fred/linuxcnc/configs/mill
-
/home/fred/linuxcnc/configs/mill/mill.ini
-
/home/fred/linuxcnc/configs/mill/mill.hal
-
/home/fred/linuxcnc/configs/mill/mill.var
-
/home/fred/linuxcnc/configs/mill/tool.tbl
-
1.2. Командний рядок
Якщо ви запускаєте LinuxCNC з командного рядка і вказуєте ім’я та розташування файлу INI, файли можуть знаходитися в іншому місці. Щоб переглянути параметри запуску LinuxCNC з командного рядка, виконайте команду «linuxcnc -h».
|
Note
|
Додаткові розташування для деяких файлів можна налаштувати у файлі INI. Див. розділ <<sub:ini:sec:display,[DISPLAY]>> та розділ <<sub:ini:sec:rs274ngc,[RS274NGC]>>. |
2. Файли
Кожен каталог конфігурації вимагає щонайменше таких файлів:
-
INI-файл .ini
-
Файл HAL .hal або файл HALTCL .tcl, зазначений у розділі HAL файлу INI.
|
Note
|
Для деяких графічних інтерфейсів можуть знадобитися інші файли. |
За бажанням ви також можете мати:
-
Файл змінних .var
-
Якщо ви пропустите файл .var у каталозі, але включите
<<sub:ini:sec:rs274ngc,[RS274NGC]>>PARAMETER_FILE=somefilename.var, файл буде створено під час запуску LinuxCNC. -
Якщо ви пропустите файл .var і пропустите елемент [RS274NGC] PARAMETER_FILE, при запуску LinuxCNC буде створено файл var з назвою rs274ngc.var. Якщо пропустити [RS274NGC]PARAMETER_FILE, можуть з’явитися деякі заплутані повідомлення.
-
-
Файл таблиці інструментів .tbl, якщо у файлі INI вказано
<<sub:ini:sec:emcmot,[EMCMOT]>>TOOL_TABLE. Для деяких конфігурацій таблиця інструментів не потрібна.
3. Крокові системи
3.1. Базовий період
BASE_PERIOD є «серцем» вашого комп’ютера LinuxCNC. Примітка: [Цей розділ стосується використання stepgen, вбудованого генератора імпульсів LinuxCNC. Деякі апаратні пристрої мають власний генератор імпульсів і не використовують вбудований генератор LinuxCNC. У цьому випадку зверніться до посібника з експлуатації вашого обладнання.] Кожного періоду програмний генератор кроків вирішує, чи настав час для чергового імпульсу кроку. Коротший період дозволить вам генерувати більше імпульсів за секунду, в межах обмежень. Але якщо ви зробите його занадто коротким, ваш комп’ютер буде витрачати так багато часу на генерацію імпульсів кроків, що все інше сповільниться до повзучої швидкості або навіть заблокується. Затримка та вимоги до крокового приводу впливають на найкоротший період, який ви можете використовувати.
Найгірші випадки затримки можуть траплятися лише кілька разів на хвилину, а ймовірність того, що затримка трапиться саме в той момент, коли двигун змінює напрямок руху, є низькою. Тому ви можете отримати дуже рідкісні помилки, які час від часу псують деталь і які неможливо усунути.
Найпростіший спосіб уникнути цієї проблеми — вибрати BASE_PERIOD, що дорівнює сумі найдовшого часу, необхідного для роботи вашого накопичувача, та найгіршого випадку затримки вашого комп’ютера. Це не завжди є найкращим вибором. Наприклад, якщо ви використовуєте привід з вимогою до часу утримання сигналу напрямку 20 мкс, а тест затримки показав, що максимальна затримка становить 11 мкс, то якщо ви встановите BASE_PERIOD на 20+11 = 31 мкс, ви отримаєте не дуже приємні 32 258 кроків на секунду в одному режимі і 16 129 кроків на секунду в іншому режимі.
Проблема полягає у вимозі щодо часу утримання 20 мкс. Це, а також затримка 11 мкс, змушує нас використовувати повільний період 31 мкс. Але програмний генератор кроків LinuxCNC має деякі параметри, які дозволяють збільшити різні часи від одного періоду до декількох. Наприклад, якщо steplen примітка:[steplen відноситься до параметра, який регулює продуктивність вбудованого генератора кроків LinuxCNC, stepgen, який є компонентом HAL. Цей параметр регулює довжину самого імпульсу кроку. Продовжуйте читати, все буде пояснено пізніше.] змінюється з 1 на 2, то між початком і кінцем імпульсу кроку буде два періоди. Аналогічно, якщо dirhold примітка:[dirhold відноситься до параметра, який регулює тривалість утримання напрямку.] змінюється з 1 на 3, то між імпульсом кроку і зміною напрямку контакту буде принаймні три періоди.
Якщо ми можемо використовувати «dirhold» для виконання вимоги щодо часу утримання 20 мкс, то наступним за тривалістю є час високого рівня 4,5 мкс. Додайте затримку 11 мкс до часу високого рівня 4,5 мкс, і ви отримаєте мінімальний період 15,5 мкс. Коли ви спробуєте 15,5 мкс, ви побачите, що комп’ютер працює повільно, тому ви зупинитеся на 16 мкс. Якщо ми залишимо «dirhold» на 1 (за замовчуванням), то мінімальний час між кроком і напрямком буде періодом 16 мкс мінус затримка 11 мкс = 5 мкс, що недостатньо. Нам потрібно ще 15 мкс. Оскільки період становить 16 мкс, нам потрібно ще один період. Тому ми змінюємо «dirhold» з 1 на 2. Тепер мінімальний час від кінця імпульсу кроку до зміни напрямку становить 5+16=21 мкс, і нам не потрібно турбуватися про те, що привід рухатиметься в неправильному напрямку через затримку.
Для отримання додаткової інформації про stepgen див. розділ stepgen.
3.2. Час кроку
Час кроку та інтервал між кроками на деяких накопичувачах відрізняються. У цьому випадку точка кроку стає важливою. Якщо накопичувач переходить на спадний фронт, то вихідний контакт слід інвертувати.
4. Сервосистеми
4.1. Основні операції
Сервосистеми здатні розвивати більшу швидкість і точність, ніж еквівалентні крокові системи, але вони є більш дорогими і складними. На відміну від крокових систем, сервосистеми вимагають наявності певного типу пристрою зворотного зв’язку по положенню і повинні бути відрегульовані або «налаштовані», оскільки вони не працюють відразу після вилучення з коробки, як це може бути у випадку з кроковою системою. Ці відмінності існують тому, що сервоприводи є системою «замкнутого контуру», на відміну від крокових двигунів, які зазвичай працюють в «відкритому контурі». Що означає «замкнутий контур»? Давайте розглянемо спрощену схему підключення сервомоторної системи.
Ця схема показує, що вхідний сигнал (і сигнал зворотного зв’язку) керують сумуючим підсилювачем, сумуючий підсилювач керує підсилювачем потужності, підсилювач потужності керує двигуном, двигун керує навантаженням (і пристроєм зворотного зв’язку), а пристрій зворотного зв’язку (і вхідний сигнал) керують двигуном. Це дуже схоже на коло (замкнутий контур), де A керує B, B керує C, C керує D, а D керує A.
Якщо ви раніше не працювали з сервосистемами, спочатку це, без сумніву, здасться вам дуже дивною ідеєю, особливо в порівнянні з більш звичними електронними схемами, де вхідні сигнали плавно переходять у вихідні і ніколи не повертаються назад. Примітка: [Якщо це допоможе, найближчим еквівалентом цього в цифровому світі є «державні машини», «послідовні машини» тощо, де те, що виходи роблять «зараз», залежить від того, що входи (і виходи) робили «раніше». Якщо це не допоможе, то не звертайте уваги.] Якщо «все» контролює «все інше», як це може працювати, хто відповідає за це? Відповідь полягає в тому, що LinuxCNC «може» керувати цією системою, але для цього йому доводиться вибирати один із декількох методів керування. Метод керування, який використовує LinuxCNC, один із найпростіших і найкращих, називається PID.
PID означає пропорційний, інтегральний та похідний. Пропорційне значення визначає реакцію на поточну похибку, інтегральне значення визначає реакцію на основі суми останніх похибок, а похідне значення визначає реакцію на основі швидкості, з якою змінювалася похибка. Це три поширені математичні методи, які застосовуються для того, щоб робочий процес відповідав заданому значенню. У випадку LinuxCNC процесом, який ми хочемо контролювати, є фактичне положення осі, а заданим значенням є задане положення осі.
«Налаштовуючи» три константи в алгоритмі PID-регулятора, регулятор може забезпечити дію управління, розроблену для конкретних вимог процесу. Реакцію регулятора можна описати з точки зору чутливості регулятора до помилки, ступеня перевищення регулятором заданого значення та ступеня коливання системи.
4.2. Пропорційний термін
Пропорційний член (іноді його називають коефіцієнтом підсилення) змінює вихідну величину пропорційно до поточного значення помилки. Високий коефіцієнт підсилення призводить до значної зміни вихідної величини при заданій зміні помилки. Якщо коефіцієнт підсилення занадто високий, система може стати нестабільною. Навпаки, малий коефіцієнт підсилення призводить до невеликої реакції вихідної величини на велику помилку вхідної величини. Якщо коефіцієнт підсилення занадто низький, дія системи управління може бути занадто слабкою при реагуванні на збурення в системі.
За відсутності збурень чисте пропорційне регулювання не стабілізується на цільовому значенні, а зберігає постійну похибку, яка є функцією пропорційного коефіцієнта підсилення та коефіцієнта підсилення процесу. Незважаючи на постійне зміщення, як теорія налаштування, так і промислова практика вказують на те, що саме пропорційний член повинен забезпечувати основну частину зміни вихідного сигналу.
4.3. Інтегральний член
Внесок інтегрального члена (іноді його називають скиданням) пропорційний як величині помилки, так і тривалості помилки. Сумуючи миттєву помилку за час (інтегруючи помилку), отримуємо накопичене зміщення, яке слід було виправити раніше. Потім накопичена помилка множиться на інтегральний коефіцієнт підсилення і додається до виходу контролера.
Інтегральний член (при додаванні до пропорційного члена) прискорює рух процесу до заданого значення і усуває залишкову помилку в стаціонарному режимі, яка виникає при використанні тільки пропорційного регулятора. Однак, оскільки інтегральний член реагує на накопичені помилки з минулого, він може призвести до того, що поточне значення перевищить задане значення (перетне задане значення і створить відхилення в іншому напрямку).
4.4. Похідний термін
Швидкість зміни помилки процесу обчислюється шляхом визначення нахилу помилки в часі (тобто її першої похідної за часом) і множення цієї швидкості зміни на коефіцієнт посилення похідної.
Похідна складова уповільнює швидкість зміни вихідного сигналу контролера, і цей ефект найбільш помітний поблизу заданого значення контролера. Отже, похідне регулювання використовується для зменшення величини перевищення, що створюється інтегральною складовою, та поліпшення загальної стабільності контролера-процесу.
4.5. Налаштування петлі
Якщо параметри PID-регулятора (коефіцієнти пропорційної, інтегральної та похідної складових) обрані неправильно, вхідний сигнал керованого процесу може бути нестабільним, тобто його вихідний сигнал розходиться, з коливанням або без нього, і обмежується лише насиченням або механічним пошкодженням. Налаштування контуру регулювання — це регулювання його параметрів (коефіцієнт підсилення/пропорційна смуга, інтегральний коефіцієнт підсилення/скидання, похідний коефіцієнт підсилення/швидкість) до оптимальних значень для бажаної реакції регулювання.
4.6. Ручне налаштування
Простий метод налаштування полягає в тому, щоб спочатку встановити значення I і D на нуль. Збільшуйте P, поки вихідний сигнал контуру не почне коливатися, після чого P слід встановити приблизно на половину цього значення для отримання відгуку типу «затухання чверті амплітуди». Потім збільшуйте I, поки будь-яке зміщення не буде виправлено за достатній для процесу час. Однак занадто велике значення I призведе до нестабільності. Нарешті, збільште D, якщо потрібно, до тих пір, поки контур не досягне прийнятної швидкості для досягнення свого опорного значення після порушення навантаження. Однак занадто велике значення D призведе до надмірної реакції та перевищення. Швидке налаштування контуру PID зазвичай призводить до невеликого перевищення, щоб швидше досягти заданого значення; однак деякі системи не можуть прийняти перевищення, і в цьому випадку потрібна «надмірно затухаюча» система із замкнутим контуром, яка вимагатиме значення P, значно меншого за половину значення P, що викликає коливання.
5. RTAI
Інтерфейс додатків реального часу (RTAI) використовується для забезпечення найкращої продуктивності в режимі реального часу (RT). Ядро з патчем RTAI дозволяє писати додатки з суворими обмеженнями за часом. RTAI дає можливість використовувати такі функції, як генерація програмних кроків, які вимагають точного часу.
5.1. ACPI
Розширений інтерфейс конфігурації та живлення (ACPI) має багато різних функцій, більшість з яких впливають на продуктивність RT (наприклад: управління живленням, вимкнення процесора, масштабування частоти процесора тощо). Ядро LinuxCNC (і, ймовірно, всі ядра з патчем RTAI) має вимкнену функцію ACPI. ACPI також відповідає за вимкнення системи після запуску процесу вимкнення, тому вам може знадобитися натиснути кнопку живлення, щоб повністю вимкнути комп’ютер. Група RTAI вдосконалює цю функцію в останніх версіях, тому ваша система LinuxCNC може вимкнутися самостійно.
6. Апаратні опції інтерфейсу комп’ютер/машина
6.1. litehm2/rv901t
Litehm2 — це незалежний від плати порт прошивки HostMot2 FPGA. Першою платою, яку він підтримує, є linsn rv901t, яка спочатку була створена як плата контролера світлодіодів, але завдяки наявним входам/виходам вона добре підходить для використання в якості контролера машини. Вона пропонує близько 80 портів вводу-виводу з 5-вольтовим буфером і може перемикатися між усіма входами і всіма виходами. Її також легко модифікувати, щоб розділити порти навпіл між входом і виходом. Rv901t підключається до комп’ютера через Gigabit або 100Mbit Ethernet.
Litehm2 базується на фреймворку LiteX, який підтримує широкий спектр плат FPGA. Наразі підтримується лише rv901t, але підтримка інших плат знаходиться в розробці.
Більше інформації можна знайти за адресою https://github.com/sensille/litehm2.