1. Огляд
Повернення в початкове положення встановлює нульову точку координат верстата G53. М’які обмеження визначаються відносно початкової точки верстата. М’які обмеження автоматично уповільнюють і зупиняють осі, перш ніж вони досягнуть кінцевих вимикачів. Правильно налаштований і функціонуючий верстат не буде рухатися за межі м’яких (програмних) обмежень, а початкова точка верстата буде встановлена так само повторно, як і механізм повернення в початкове положення/індексації. Linuxcnc можна повернути в початкове положення на око (за допомогою вирівнювальних міток), за допомогою вимикачів, за допомогою вимикачів і індекса кодера або за допомогою абсолютних кодерів. Повернення в початкове положення здається досить простим — просто перемістіть кожну шарнірну частину в відоме місце і відповідно налаштуйте внутрішні змінні LinuxCNC. Однак різні машини мають різні вимоги, і повернення в початкове положення насправді є досить складним.
|
Note
|
Хоча LinuxCNC можна використовувати без перемикачів відправлення/процедур відправлення додому або кінцевих вимикачів, це позбавляє додаткової безпеки програмних обмежень. |
2. Передумова
Самонаведення спирається на деякі фундаментальні припущення щодо машини.
-
Негативні та позитивні напрямки базуються на Tool Movement, що може відрізнятися від фактичного руху верстата. Тобто, на фрезерному верстаті зазвичай рухається стіл, а не інструмент.
-
Все посилається на нульовий початок координат верстата G53, початок координат може бути будь-де (навіть поза межами того місця, де можна переміститися)
-
Початок нульової точки машини G53 зазвичай знаходиться в межах області програмних обмежень, але не обов’язково.
-
Зміщення перемикача самонаведення встановлює місцезнаходження початку координат, але навіть воно посилається на початок координат.
-
Під час використання хомінгу за індексом енкодера зміщення початкового перемикача обчислюється з опорного положення енкодера після спрацювання початкового перемикача.
-
Негативні програмні межі – це максимальне значення, яке можна перемістити в негативному напрямку після повернення до початкового положення (але вони можуть бути не негативними в абсолютному сенсі)
-
Позитивні межі м’якого (програмного) забезпечення — це максимальне переміщення в позитивному напрямку після повернення в початкове положення. (але вони можуть бути не позитивними в абсолютному сенсі, хоча зазвичай їх встановлюють як позитивні числа)
-
Програмні (виробничі) обмеження знаходяться всередині області кінцевих вимикачів.
-
(Кінцеве) положення виходу всередині області м’якого обмеження
-
(Якщо використовується домашнє переміщення на основі перемикачів), перемикач(і) домашнього переміщення або використовує(ють) кінцеві вимикачі (спільний домашній перемикач / кінцевий вимикач), або, якщо використовується окремий домашній перемикач, знаходиться(ють) всередині області кінцевих вимикачів.
-
Якщо ви використовуєте окремий перемикач повернення до вихідної позиції, можна почати повернення до вихідної позиції з неправильної сторони перемикача, що в поєднанні з опцією HOME_IGNORE_LIMITS призведе до серйозної аварії. Ви можете уникнути цього, змусивши перемикач повернення до вихідної позиції змінювати свій стан, коли тригер знаходиться на певній стороні, доки він знову не пройде точку спрацьовування. Іншими словами, стан перемикача повернення в початкове положення повинен відображати положення фіксатора відносно перемикача (тобто до або після перемикача) і повинен залишатися таким, навіть якщо фіксатор проходить повз перемикач у тому ж напрямку.
|
Note
|
Хоча можна використовувати LinuxCNC з початком координат G53 поза межами програмних обмежень верстата, якщо ви використовуєте G28 або G30 без налаштування параметрів, він за замовчуванням повертається до початку координат. Це призведе до спрацьовування кінцевих вимикачів до досягнення позиції. |
3. Приклад розташування окремого домашнього вимикача
У цьому прикладі показано мінімальні та максимальні кінцеві вимикачі з окремим початковим вимикачем.
-
A – негативна м’яка межа
-
B – це координата машини G53
-
C – точка спрацьовування домашнього вимикача
-
D – додатна м’яка межа
-
H – кінцеве положення «дома» (HOME) = 0 одиниць
-
-L та +L – це точки спрацьовування кінцевих вимикачів
-
A<->B – це від’ємні м’які межі (MIN_LIMITS) = -3 одиниці
-
B<->C – це домашнє_зміщення (HOME_OFFSET) = -2,3 одиниці
-
B<->D – це додатні м’які ліміти (MAX_LIMITS) = 7 одиниць
-
A<->D – загальний пробіг = 10 одиниць
-
У цьому прикладі збільшено відстань між кінцевими вимикачами та програмними обмежувачами (-L<->A та D<-+L)
-
Зверніть увагу, що між кінцевими вимикачами та фактичним фізичним жорстким контактом існує відстань для вибігу після вимкнення підсилювача.
|
Note
|
Повернення до вихідної позиції встановлює систему координат G53, тоді як початок координат (нульова точка) може бути будь-де. Встановлення нульової точки на від’ємному м’якому обмеженні робить усі координати G53 додатними, що, ймовірно, найлегше запам’ятати. Зробіть це, встановивши MIN_LIMIT = 0 і переконавшись, що MAX_LIMIT є додатним. |
4. Приклад схеми спільного граничного/домашнього перемикача
У цьому прикладі показано граничний вимикач максимального значення та комбінований граничний/початковий вимикач мінімального значення.
-
A – негативна м’яка межа.
-
B – це початок координат машини G53.
-
C – це точка спрацьовування домашнього перемикача, спільна з точкою спрацьовування мінімального граничного значення (-L).
-
D – додатна м’яка границя.
-
H – кінцеве положення «дому» (HOME) = 3 одиниці.
-
-L та +L – це точки спрацювання кінцевого вимикача.
-
A<->B – це від’ємні м’які межі (MIN_LIMITS) = 0 одиниць.
-
B<->C – це зміщення_до_дома (HOME_OFFSET) = -0,7 одиниці.
-
B<->D – це додатні м’які ліміти (MAX_LIMITS) 10 одиниць.
-
A<->D – загальний пробіг = 10 одиниць.
-
У цьому прикладі збільшено відстань між кінцевими вимикачами та програмними граничними вимикачами (-L<->A та D<->+L).
-
Зверніть увагу, що між кінцевими вимикачами та фактичним фізичним жорстким контактом існує відстань для вибігу після вимкнення підсилювача.
5. Послідовність самонаведення
Існує чотири можливі послідовності повернення до вихідної позиції, визначені знаком HOME_SEARCH_VEL і HOME_LATCH_VEL, а також відповідними параметрами конфігурації, як показано в наступній таблиці. Існують дві основні умови: HOME_SEARCH_VEL і HOME_LATCH_VEL мають однаковий знак або протилежні знаки. Більш детальний опис функцій кожного параметра конфігурації наведено в наступному розділі.
6. Конфігурація
Наведені нижче дії точно визначають, як поводиться домашня послідовність. Вони визначені в розділі [JOINT_n] INI-файлу.
| Тип самонаведення | HOME_SEARCH_VEL | HOME_LATCH_VEL | HOME_USE_INDEX |
|---|---|---|---|
Негайно |
0 |
0 |
НІ |
Тільки індекс |
0 |
ненульовий |
ТАК |
Тільки для комутатора |
ненульовий |
ненульовий |
НІ |
Перемикач та індекс |
ненульовий |
ненульовий |
ТАК |
|
Note
|
Будь-які інші комбінації можуть призвести до помилки. |
6.1. HOME_SEARCH_VEL
Ця змінна вимірюється в одиницях машинних одиниць за секунду.
Значення за замовчуванням дорівнює нулю. Значення нуль призводить до того, що LinuxCNC вважатиме, що перемикач додому відсутній; етап пошуку для переміщення додому пропускається.
Якщо HOME_SEARCH_VEL не дорівнює нулю, то LinuxCNC припускає, що є перемикач початкового положення. Спочатку перевіряється, чи перемикач початкового положення вже спрацював. Якщо спрацьовує, він відсуває перемикач на HOME_SEARCH_VEL. Напрямок відсунення протилежний знаку HOME_SEARCH_VEL. Потім він шукає перемикач початкового положення, рухаючись у напрямку, визначеному знаком HOME_SEARCH_VEL, зі швидкістю, визначеною його абсолютним значенням. Коли перемикач початкового положення виявлено, з’єднання зупиниться якомога швидше, але завжди буде деяке перевищення. Величина перевищення залежить від швидкості. Якщо вона занадто висока, шарнір може перевищити межу настільки, що вдарить по кінцевому вимикачу або зіткнеться з кінцем ходу. З іншого боку, якщо HOME_SEARCH_VEL занадто низька, повернення в початкове положення може зайняти багато часу.
6.2. HOME_LATCH_VEL
Ця змінна вимірюється в одиницях машинних одиниць за секунду.
Вказує швидкість і напрямок, які LinuxCNC використовує при остаточному точному визначенні положення перемикача початкового положення (якщо він є) і імпульсу індексу (якщо він є). Зазвичай це буде повільніше, ніж швидкість пошуку, щоб максимізувати точність. Якщо HOME_SEARCH_VEL і HOME_LATCH_VEL мають однаковий знак, то фаза фіксації виконується під час руху в тому ж напрямку, що і фаза пошуку. (У цьому випадку LinuxCNC спочатку відсуває перемикач, а потім знову рухається до нього зі швидкістю фіксації.) Якщо HOME_SEARCH_VEL і HOME_LATCH_VEL мають протилежні знаки, фаза фіксації виконується під час руху в напрямку, протилежному до фази пошуку. Це означає, що LinuxCNC зафіксує перший імпульс після відсунення перемикача. Якщо HOME_SEARCH_VEL дорівнює нулю (що означає відсутність перемикача початкового положення), а цей параметр не дорівнює нулю, LinuxCNC переходить до пошуку імпульсу індексу. Якщо HOME_SEARCH_VEL не дорівнює нулю, а цей параметр дорівнює нулю, це є помилкою, і операція повернення в початкове положення не буде виконана. Значення за замовчуванням дорівнює нулю.
6.3. HOME_FINAL_VEL
Ця змінна вимірюється в одиницях машинних одиниць за секунду.
Він визначає швидкість, яку LinuxCNC використовує при переміщенні з HOME_OFFSET в положення HOME. Якщо HOME_FINAL_VEL відсутній в файлі INI, то для цього переміщення використовується максимальна швидкість з’єднання. Значення повинно бути додатним числом.
6.4. HOME_IGNORE_LIMITS
Може містити значення YES / NO. Значенням за замовчуванням для цього параметра є NO. Цей прапорець визначає, чи буде LinuxCNC ігнорувати вхідний сигнал кінцевого вимикача для цього з’єднання під час повернення в початкове положення. Це налаштування не ігноруватиме вхідні сигнали кінцевих вимикачів для інших з’єднань. Якщо у вас немає окремого вимикача початкового положення, встановіть для цього параметра значення YES і підключіть сигнал кінцевого вимикача до входу вимикача початкового положення з’єднання в HAL. LinuxCNC ігноруватиме вхідний сигнал кінцевого вимикача для цього з’єднання під час повернення в початкове положення. Щоб використовувати тільки один вхід для всіх повернень у вихідне положення та обмежень, вам доведеться заблокувати сигнали кінцевих вимикачів з’єднань, які не повертаються у вихідне положення, в HAL і повертати у вихідне положення по одному з’єднанню за раз.
6.5. HOME_USE_INDEX
Вказує, чи є імпульс індексації. Якщо прапор є істинним (HOME_USE_INDEX = YES), LinuxCNC буде фіксуватися на передньому фронті імпульсу індексації. Якщо прапор є хибним, LinuxCNC буде фіксуватися на передньому або задньому фронті перемикача початкового положення (залежно від знаків HOME_SEARCH_VEL та HOME_LATCH_VEL). Значенням за замовчуванням є NO.
|
Note
|
HOME_USE_INDEX вимагає з’єднань у вашому HAL-файлі з joint.n.index-enable з encoder.n.index-enable. |
6.6. HOME_INDEX_NO_ENCODER_RESET
За замовчуванням встановлено значення NO. Використовуйте значення YES, якщо енкодер, що використовується для цього з’єднання, не скидає лічильник при виявленні імпульсу індексу після активації виводу HAL index_enable з’єднання. Застосовується тільки для HOME_USE_INDEX = YES.
6.7. HOME_OFFSET
Це визначає розташування нульової точки початку координат системи координат верстата G53. Це відстань (зсув) у одиницях з’єднання від початку координат верстата до точки спрацьовування вимикача або імпульсу індексу. Після виявлення точки спрацьовування вимикача/імпульсу індексу LinuxCNC встановлює положення координат з’єднання на HOME_OFFSET, тим самим визначаючи початок координат, від якого відраховуються м’які обмеження. Значення за замовчуванням дорівнює нулю.
|
Note
|
Розташування перемикача дому, як зазначено змінною HOME_OFFSET, може бути всередині або поза програмними граничними вимикачами. Вони будуть спільними з апаратними кінцевими вимикачами або всередині них. |
6.8. HOME
Позиція, в яку переміститься шарнір після завершення послідовності повернення в початкове положення. Після виявлення перемикача початкового положення або перемикача початкового положення, а потім імпульсу індексації (залежно від конфігурації) та встановлення координати цієї точки в HOME_OFFSET, LinuxCNC виконує переміщення в HOME як останній крок процесу повернення в початкове положення. Значення за замовчуванням дорівнює нулю. Зверніть увагу, що навіть якщо цей параметр збігається з HOME_OFFSET, шарнір трохи перевищить фіксовану позицію під час зупинки. Тому в цей момент завжди буде невеликий рух (якщо HOME_SEARCH_VEL не дорівнює нулю і весь етап пошуку/фіксації не був пропущений). Цей остаточний рух буде виконаний з максимальною швидкістю шарніра, якщо не встановлено HOME_FINAL_VEL.
|
Note
|
Відмінність між «HOME_OFFSET» і «HOME» полягає в тому, що «HOME_OFFSET» спочатку встановлює початкове положення і масштаб на машині, застосовуючи значення «HOME_OFFSET» до місця, де було знайдено початкове положення, а потім «HOME» вказує, куди повинен переміститися шарнір на цьому масштабі. |
6.9. HOME_IS_SHARED
Якщо для цього з’єднання немає окремого входу для перемикача повернення в початкове положення, але є кілька миттєвих перемикачів, підключених до одного і того ж контакту, встановіть це значення на 1, щоб запобігти запуску повернення в початкове положення, якщо один із спільних перемикачів вже закритий. Встановіть це значення на 0, щоб дозволити повернення в початкове положення, навіть якщо перемикач вже закритий.
6.10. HOME_ABSOLUTE_ENCODER
Використовується для абсолютних енкодерів. Коли надходить запит на переведення з’єднання в початкове положення, поточне положення з’єднання встановлюється на значення [JOINT_n]HOME_OFFSET.
Остаточний перехід до позиції [JOINT_n]HOME є необов’язковим відповідно до налаштування HOME_ABSOLUTE_ENCODER:
HOME_ABSOLUTE_ENCODER = 0 (за замовчуванням) шарнір не використовує абсолютний енкодер.
HOME_ABSOLUTE_ENCODER = 1 Абсолютний енкодер, остаточне переміщення до [JOINT_n]HOME.
HOME_ABSOLUTE_ENCODER = 2 Абсолютний енкодер, БЕЗ остаточного переміщення до [JOINT_n]HOME.
|
Note
|
Налаштування HOME_IS_SHARED ігнорується без попередження. |
|
Note
|
Прохання про пересадку суглоба мовчки ігнорується. |
6.11. HOME_SEQUENCE
Використовується для визначення послідовності повернення до вихідного положення для декількох шарнірів HOME ALL та забезпечення порядку повернення до вихідного положення (наприклад, Z не може бути повернутий до вихідного положення, якщо X ще не повернутий до вихідного положення). Суглоб може бути повернений у вихідне положення після того, як всі суглоби з нижчим (абсолютним значенням) HOME_SEQUENCE вже були повернені у вихідне положення і знаходяться в HOME_OFFSET. Якщо два суглоби мають однакове HOME_SEQUENCE, вони можуть бути повернені у вихідне положення одночасно.
|
Note
|
Якщо HOME_SEQUENCE не вказано, то з’єднання не буде перенаправлено в початкове положення послідовністю HOME ALL (але може бути перенаправлено в початкове положення окремими командами перенаправлення, специфічними для з’єднання). |
Початкове число HOME_SEQUENCE може дорівнювати 0, 1 (або -1). Абсолютне значення номерів послідовності повинно збільшуватися на одиницю — пропуск номерів послідовності не підтримується. Якщо номер послідовності пропущено, повернення до вихідної позиції HOME ALL зупиниться після завершення останнього дійсного номера послідовності.
Негативні значення HOME_SEQUENCE вказують, що суглоби в послідовності повинні синхронізувати кінцевий рух до [JOINT_n]HOME, чекаючи, поки всі суглоби в послідовності будуть готові. Якщо будь-який суглоб має негативне значення HOME_SEQUENCE, то всі суглоби з тим самим абсолютним значенням (позитивним або негативним) значення елемента HOME_SEQUENCE синхронізують кінцевий рух.
Негативне значення HOME_SEQUENCE також застосовується до команд повернення в початкове положення одного суглоба. Якщо значення HOME_SEQUENCE є негативним, всі суглоби, що мають однакове абсолютне значення HOME_SEQUENCE, будуть повернуті в початкове положення разом із синхронізованим кінцевим рухом. Якщо значення HOME_SEQUENCE дорівнює нулю або є позитивним, команда повернення суглоба в початкове положення поверне в початкове положення тільки вказаний суглоб.
Спільний режим переміщення суглобів з негативним HOME_SEQUENCE заборонений. У звичайних застосуваннях портальних систем таке переміщення може призвести до порушення вирівнювання (деформації). Зверніть увагу, що звичайне переміщення у світових координатах завжди доступне після повернення машини в початкове положення.
Приклади для системи з 3 суглобами
Дві послідовності (0,1), без синхронізації
[JOINT_0]HOME_SEQUENCE = 0 [JOINT_1]HOME_SEQUENCE = 1 [JOINT_2]HOME_SEQUENCE = 1
Дві послідовності, суглоби 1 та 2 синхронізовані
[JOINT_0]HOME_SEQUENCE = 0 [JOINT_1]HOME_SEQUENCE = -1 [JOINT_2]HOME_SEQUENCE = -1
Зі змішаними позитивними та негативними значеннями, суглоби 1 та 2 синхронізовані
[JOINT_0]HOME_SEQUENCE = 0 [JOINT_1]HOME_SEQUENCE = -1 [JOINT_2]HOME_SEQUENCE = 1
Одна послідовність, без синхронізації
[JOINT_0]HOME_SEQUENCE = 0 [JOINT_1]HOME_SEQUENCE = 0 [JOINT_2]HOME_SEQUENCE = 0
Одна послідовність, усі суглоби синхронізовані
[JOINT_0]HOME_SEQUENCE = -1 [JOINT_1]HOME_SEQUENCE = -1 [JOINT_2]HOME_SEQUENCE = -1
6.12. VOLATILE_HOME
Якщо це налаштування є істинним, цей шарнір стає нефіксованим, коли машина переходить у стан ВИМКНЕНО. Це підходить для будь-якого шарніра, який не зберігає положення, коли привід шарніра вимкнений. Деякі крокові приводи, особливо мікрокрокові приводи, можуть цього потребувати.
6.13. LOCKING_INDEXER
Якщо це з’єднання є блокувальним поворотним індексатором, воно розблокується перед поверненням до початкового положення та заблокується після цього.
6.14. Негайне самонаведення
Якщо шарнір не має перемикачів початкового положення або не має логічного початкового положення, як поворотний шарнір, і ви хочете, щоб цей шарнір повертався у початкове положення при натисканні кнопки «Home All» (Повернути все у початкове положення) в графічному інтерфейсі AXIS, то для цього шарніра необхідні наступні записи INI.
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_USE_INDEX = NO
HOME_OFFSET = 0 (Або зміщення початкової позиції (HOME))
HOME_SEQUENCE = 0 (або інший дійсний порядковий номер)
|
Note
|
Значення за замовчуванням для невизначених HOME_SEARCH_VEL, HOME_LATCH_VEL, HOME_USE_INDEX, HOME та HOME_OFFSET дорівнюють нулю, тому їх можна опустити при запиті на негайне повернення в початкове положення. Зазвичай слід вказати дійсне число HOME_SEQUENCE, оскільки опущення HOME_SEQUENCE виключає суглоб із поведінки HOME ALL, як зазначено вище. |
6.15. Запобігання самонаведенню
Вивід HAL (motion.homing-inhibit) призначений для заборони ініціювання самонаведення як для режиму "Home All", так і для режиму індивідуального спільного самонаведення.
Деякі системи використовують можливості синхронізації кінцевих рухів повернення в початкове положення суглобів, що контролюються негативними елементами файлу INI [JOINT_N]HOME_SEQUENCE=. За замовчуванням, можливості синхронізації забороняють суглобові рухи перед поверненням в початкове положення, щоб запобігти суглобовим рухам, які можуть призвести до порушення вирівнювання машини (наприклад, викривлення порталу).
Системний інтегратор може дозволити спільне переміщення перед поверненням у вихідне положення за допомогою логіки HAL, яка перемикає елементи [JOINT_N]HOME_SEQUENCE. Ця логіка також повинна активувати контакт motion.homing-inhibit, щоб гарантувати, що повернення у вихідне положення не буде випадково ініційовано, коли ввімкнено спільне переміщення.
Приклад: Синхронізовані суглоби 0,1 з використанням негативної послідовності (-1) для синхронізованого повернення в початкове положення з перемикачем (allow_jjog), який вибирає позитивну послідовність (1) для індивідуального суглобового переміщення перед поверненням в початкове положення (частковий код HAL):
loadrt mux2 names=home_sequence_mux loadrt conv_float_s32 names=home_sequence_s32 setp home_sequence_mux.in0 -1 setp home_sequence_mux.in1 1 addf home_sequence_mux servo-thread addf home_sequence_s32 servo-thread ... net home_seq_float <= home_sequence_mux.out net home_seq_float => home_sequence_s32.in net home_seq_s32 <= home_sequence_s32.out net home_seq_s32 => ini.0.home_sequence net home_seq_s32 => ini.1.home_sequence ... # allow_jjog: пін, створений віртуальною панеллю або апаратним перемикачем net hsequence_select <= allow_jjog net hsequence_select => home_sequence_mux.sel net hsequence_select => motion.homing-inhibit
|
Note
|
Піни INI HAL (наприклад, ini.N.home_sequence) недоступні до запуску milltask, тому виконання вищезазначених команд HAL слід відкласти за допомогою файлу HAL postgui або затриманого скрипта [APPLICATION]APP=. |
|
Note
|
Для синхронізації руху декількох суглобів у реальному часі потрібні додаткові з’єднання HAL для штифтів типу Manual-Pulse-Generator (MPG) (joint.N.enable, joint.N.scale, joint.N.counts). |
Приклад конфігурації симуляції (gantry_jjog.ini), який демонструє спільне штовхання під час використання негативних початкових послідовностей, знаходиться в каталозі: configs/sim/axis/gantry/.