1. Вступ
Найкращий спосіб налаштування стандартного крокового двигуна – за допомогою майстра налаштування кроків. Див. розділ Майстер налаштування кроків.
У цьому розділі описано деякі з найпоширеніших налаштувань для ручного налаштування системи на основі крокових двигунів. Ці системи використовують крокові двигуни з приводами, які приймають сигнали кроку та напрямку.
Це одна з найпростіших схем, оскільки двигуни працюють у розімкнутому циклі (зворотний зв’язок від двигунів не надходить), проте систему потрібно правильно налаштувати, щоб двигуни не зупинялися та не втрачали кроки.
Більша частина цього розділу базується на зразку конфігурації, випущеному разом із LinuxCNC. Конфігурація називається stepper_inch і її можна знайти, запустивши Вибір конфігурації.
2. Максимальна швидкість кроку
При програмному формуванні кроків максимальна частота кроків становить один крок на два BASE_PERIOD для виводу кроків і напрямків. Максимальна запитувана частота кроків є добутком MAX_VELOCITY осі та її INPUT_SCALE. Якщо запитувана частота кроків є недосяжною, виникають такі помилки, особливо під час швидких переміщень і рухів G0.
Якщо ваш драйвер крокового двигуна може приймати квадратурний вхідний сигнал, використовуйте цей режим. З квадратурним сигналом можливий один крок для кожного BASE_PERIOD, що подвоює максимальну швидкість кроку.
Інші способи вирішення проблеми полягають у зменшенні одного або декількох з наступних параметрів: BASE_PERIOD (занадто низьке значення цього параметра призведе до того, що машина перестане реагувати на команди або навіть заблокується), INPUT_SCALE (якщо ви можете вибрати різні розміри кроку на вашому кроковому драйвері, змініть передавальне число шківів або крок ходового гвинта) або MAX_VELOCITY і STEPGEN_MAXVEL.
Якщо жодна з дійсних комбінацій BASE_PERIOD, INPUT_SCALE та MAX_VELOCITY не є прийнятною, розгляньте можливість використання апаратного генерування кроків (наприклад, за допомогою універсального крокового контролера, що підтримується LinuxCNC, карт Mesa та інших).
3. Розпіновка
Однією з основних вад EMC було те, що ви не могли вказати розклад виводів без перекомпіляції вихідного коду. EMC2 був набагато гнучкішим, і тому тепер в LinuxCNC (завдяки шару абстракції апаратного забезпечення) ви можете легко вказати, який сигнал куди надходить. Дивіться HAL Basics для отримання додаткової інформації про HAL.
Як описано у вступі до HAL та навчальному посібнику, у нас є сигнали, контакти та параметри всередині HAL.
|
Note
|
Ми представляємо одну вісь, щоб не ускладнювати розгляд, всі інші схожі. |
Для нашої розпіновки релевантні такі:
signals: Xstep, Xdir & Xen
pins: parport.0.pin-XX-out & parport.0.pin-XX-in
Залежно від того, що ви вибрали у файлі INI, ви використовуєте або standard_pinout.hal, або xylotex_pinout.hal. Це два файли, які вказують HAL, як пов’язувати різні сигнали та контакти. Далі ми розглянемо файл standard_pinout.hal.
3.1. Стандартна розпіновка HAL
Цей файл містить кілька команд HAL і зазвичай виглядає так:
# стандартний файл конфігурації розпіновки для 3-осьових крокових двигунів # використання парпорту для вводу/виводу # # спочатку завантажте драйвер парпорту loadrt hal_parport cfg="0x0378" # # далі підключити функції parport до потоків # спочатку зчитати входи addf parport.0.read base-thread 1 # останнє записати виходи addf parport.0.write base-thread -1 # нарешті підключити фізичні піни до th net Xstep => parport.0.pin-03-out net Xdir => parport.0.pin-02-out net Ystep => parport.0.pin-05-out net Ydir => parport.0.pin-04-out net Zstep => parport.0.pin-07-out net Zdir => parport.0.pin-06-out # створити сигнал для зворотного зв'язку estop net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in # створити сигнали для зворотного зв'язку завантаження інструменту net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed # підключіть контакт контролера руху "шпиндель увімкнено" до фізичного контакту net spindle-on spindle.0.on => parport.0.pin-09-out ### ### Ви можете використовувати щось подібне, щоб увімкнути переривчасті приводи, коли машина ввімкнена ### сигнал Xen визначено в core_stepper.hal ### # net Xen => parport.0.pin-01-out ### ### Якщо вам потрібен активний низький рівень для цього контакту, інвертуйте його ось так: ### # setp parport.0.pin-01-out-invert 1 ### ### Зразок перемикача дому на осі X (вісь 0). Подайте сигнал, ### підключіть вхідний контакт порту порту до сигналу, а потім підключіть сигнал ### до вхідного контакту перемикача дому осі 0 LinuxCNC. ### # net Xhome parport.0.pin-10-in => joint.0.home-sw-in ### ### Спільні домашні комутатори на одному паралельному порту? ### це нормально, підключіть однаковий сигнал до всіх осей, але обов'язково ### встановіть HOME_IS_SHARED та HOME_SEQUENCE у файлі INI. ### # мережеві домашні комутатори <= parport.0.pin-10-in # мережеві домашні комутатори => joint.0.home-sw-in # мережеві домашні комутатори => joint.1.home-sw-in # мережеві домашні комутатори => joint.2.home-sw-in ### ### Зразок окремих кінцевих вимикачів на осі X (вісь 0) ### # net X-neg-limit parport.0.pin-11-in => joint.0.neg-lim-sw-in # net X-pos-limit parport.0.pin-12-in => joint.0.pos-lim-sw-in ### ### Так само, як у прикладі зі спільними домашніми вимикачами, ви можете з'єднати між собою ### кінцеві вимикачі. Будьте обережні, якщо ви натрапите на один з них, LinuxCNC зупиниться, але не зможе повідомити ### вам, який вимикач/вісь вийшов з ладу. Будьте обережні, відновлюючи роботу з цього ### крайнього положення, щоб уникнути різкої зупинки. ### # net Xlimits parport.0.pin-13-in => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in
Рядки, що починаються з символу #, є коментарями, і їх єдине призначення — допомогти читачеві ознайомитися з файлом.
3.2. Огляд
Існує кілька операцій, які виконуються під час виконання/інтерпретації standard_pinout.hal:
-
Драйвер Parport завантажується (див. розділ Parport для отримання детальнішої інформації).
-
Функції читання та запису драйвера parport призначаються базовому потоку (примітка: [Найшвидший потік у системі LinuxCNC, зазвичай код виконується кожні кілька десятків мікросекунд.]).
-
Сигнали кроку та напрямку для осей X, Y, Z підключаються до контактів на парпорті.
-
Підключаються додаткові сигнали вводу/виводу (петля виходу з ладу, петля пристрою зміни інструментів).
-
Сигнал увімкнення шпинделя визначається та пов’язується з контактом парпорту.
3.3. Зміна standard_pinout.hal
Якщо ви хочете змінити файл standard_pinout.hal, вам потрібен лише текстовий редактор. Відкрийте файл і знайдіть частини, які ви хочете змінити.
Якщо ви хочете, наприклад, змінити контакт для сигналів кроків та напрямків осі X, все, що вам потрібно зробити, це змінити номер в назві parport.0.pin-XX-out:
net Xstep parport.0.pin-03-out net Xdir parport.0.pin-02-out
можна змінити на:
net Xstep parport.0.pin-02-out net Xdir parport.0.pin-03-out
або, в принципі, будь-який інший «вихідний» штифт, який вам подобається.
Підказка: переконайтеся, що до одного контакту підключено не більше одного сигналу.
3.4. Зміна полярності сигналу
Якщо зовнішнє обладнання очікує сигнал "активного низького рівня", встановіть відповідний параметр -invert. Наприклад, щоб інвертувати сигнал керування шпинделем:
setp parport.0.pin-09-out-invert TRUE
3.5. Додавання PWM-регулювання швидкості шпинделя
Якщо ваш шпиндель можна керувати за допомогою PWM-сигналу, використовуйте компонент pwmgen для створення сигналу:
loadrt pwmgen output_type=0 addf pwmgen.update servo-thread addf pwmgen.make-pulses base-thread net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value net spindle-on spindle.0.on => pwmgen.0.enable net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out setp pwmgen.0.scale 1800 # Змініть максимальну швидкість шпинделя в обертах за хвилину
Це передбачає, що реакція контролера шпинделя на PWM є простою: 0% PWM дає 0 об/хв, 10% PWM дає 180 об/хв тощо. Якщо для обертання шпинделя необхідний мінімальний PWM, дотримуйтесь прикладу в зразковій конфігурації «nist-lathe», щоб використовувати компонент «scale».
3.6. Додавання сигналу ввімкнення
Деякі підсилювачі (приводи) потребують сигналу ввімкнення, перш ніж приймати та керувати рухом двигунів. З цієї причини вже існують визначені сигнали під назвою «Xen», «Yen», «Zen».
Щоб їх з’єднати, скористайтеся наступним прикладом:
net Xen parport.0.pin-08-out
Ви можете мати один контакт, який вмикає всі приводи, або кілька, залежно від вашої конфігурації. Однак зверніть увагу, що зазвичай, коли одна вісь виходить з ладу, всі інші приводи також вимикаються, тому наявність лише одного сигналу/контакту вмикання для всіх приводів є загальноприйнятою практикою.
3.7. Зовнішня кнопка ESTOP
Файл standard_pinout.hal не передбачає зовнішньої кнопки аварійної зупинки. Для отримання додаткової інформації про зовнішню кнопку аварійної зупинки див. сторінку довідки estop_latch.