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
This variable has units of machine-units per second.
Значення за замовчуванням дорівнює нулю. Значення нуль призводить до того, що LinuxCNC вважатиме, що перемикач додому відсутній; етап пошуку для переміщення додому пропускається.
Якщо HOME_SEARCH_VEL не дорівнює нулю, то LinuxCNC припускає, що є перемикач початкового положення. Спочатку перевіряється, чи перемикач початкового положення вже спрацював. Якщо спрацьовує, він відсуває перемикач на HOME_SEARCH_VEL. Напрямок відсунення протилежний знаку HOME_SEARCH_VEL. Потім він шукає перемикач початкового положення, рухаючись у напрямку, визначеному знаком HOME_SEARCH_VEL, зі швидкістю, визначеною його абсолютним значенням. Коли перемикач початкового положення виявлено, з’єднання зупиниться якомога швидше, але завжди буде деяке перевищення. Величина перевищення залежить від швидкості. Якщо вона занадто висока, шарнір може перевищити межу настільки, що вдарить по кінцевому вимикачу або зіткнеться з кінцем ходу. З іншого боку, якщо HOME_SEARCH_VEL занадто низька, повернення в початкове положення може зайняти багато часу.
6.2. HOME_LATCH_VEL
This variable has units of machine-units per second.
Вказує швидкість і напрямок, які 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
Can hold the values YES / NO. The default value for this parameter is NO. This flag determines whether LinuxCNC will ignore the limit switch input for this joint while homing. This setting will not ignore limit inputs for other joints. If you do not have a separate home switch set this to YES and connect the limit switch signal to the joint home switch input in HAL. LinuxCNC will ignore the limit switch input for this joint while homing. To use only one input for all homing and limits you will have to block the limit signals of the joints not homing in HAL and home one joint at a time.
6.5. HOME_USE_INDEX
Specifies whether or not there is an index pulse. If the flag is true (HOME_USE_INDEX = YES), LinuxCNC will latch on the rising edge of the index pulse. If false, LinuxCNC will latch on either the rising or falling edge of the home switch (depending on the signs of HOME_SEARCH_VEL and HOME_LATCH_VEL). The default value is NO.
|
Note
|
HOME_USE_INDEX вимагає з’єднань у вашому HAL-файлі з joint.n.index-enable з encoder.n.index-enable.
|
6.6. HOME_INDEX_NO_ENCODER_RESET
Default is NO. Use YES if the encoder used for this joint does not reset its counter when an index pulse is detected after assertion of the joint index_enable HAL pin. Applicable only for HOME_USE_INDEX = YES.
6.7. HOME_OFFSET
This defines the location of the origin zero point of the G53 machine coordinate system. It is the distance (offset), in joint units, from the machine origin to the home switch trip point or index pulse. After detecting the switch trip point/index pulse, LinuxCNC sets the joint coordinate position to HOME_OFFSET, thus defining the origin, which the soft limits references from. The default value is zero.
|
Note
|
Розташування перемикача дому, як зазначено змінною HOME_OFFSET, може бути всередині або поза програмними граничними вимикачами. Вони будуть спільними з апаратними кінцевими вимикачами або всередині них. |
6.8. HOME
The position that the joint will go to upon completion of the homing sequence. After detecting the home switch or home switch then index pulse (depending on configuration), and setting the coordinate of that point to HOME_OFFSET, LinuxCNC makes a move to HOME as the final step of the homing process. The default value is zero. Note that even if this parameter is the same as HOME_OFFSET, the joint will slightly overshoot the latched position as it stops. Therefore there will always be a small move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was skipped). This final move will be made at the joint’s maximum velocity unless HOME_FINAL_VEL has been set.
|
Note
|
Відмінність між «HOME_OFFSET» і «HOME» полягає в тому, що «HOME_OFFSET» спочатку встановлює початкове положення і масштаб на машині, застосовуючи значення «HOME_OFFSET» до місця, де було знайдено початкове положення, а потім «HOME» вказує, куди повинен переміститися шарнір на цьому масштабі. |
6.9. HOME_IS_SHARED
If there is not a separate home switch input for this joint, but a number of momentary switches wired to the same pin, set this value to 1 to prevent homing from starting if one of the shared switches is already closed. Set this value to 0 to permit homing even if the switch is already closed.
6.10. HOME_ABSOLUTE_ENCODER
Use for absolute encoders. When a request is made to home the joint, the current joint position is set to the [JOINT_n]HOME_OFFSET value.
Остаточний перехід до позиції [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
Used to define a multi-joint homing sequence HOME ALL and enforce homing order (e.g., Z may not be homed if X is not yet homed). A joint may be homed after all joints with a lower (absolute value) HOME_SEQUENCE have already been homed and are at the HOME_OFFSET. If two joints have the same HOME_SEQUENCE, they may be homed at the same time.
|
Note
|
Якщо HOME_SEQUENCE не вказано, то з’єднання не буде перенаправлено в початкове положення послідовністю HOME ALL (але може бути перенаправлено в початкове положення окремими командами перенаправлення, специфічними для з’єднання). |
Початкове число HOME_SEQUENCE може дорівнювати 0, 1 (або -1). Абсолютне значення номерів послідовності повинно збільшуватися на одиницю — пропуск номерів послідовності не підтримується. Якщо номер послідовності пропущено, повернення до вихідної позиції HOME ALL зупиниться після завершення останнього дійсного номера послідовності.
Negative HOME_SEQUENCE values indicate that joints in the sequence should synchronize the final move to [JOINT_n]HOME by waiting until all joints in the sequence are ready. If any joint has a negative HOME_SEQUENCE value, then all joints with the same absolute value (positive or negative) of the HOME_SEQUENCE item value will synchronize the final move.
Негативне значення 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
If this setting is true, this joint becomes unhomed whenever the machine transitions into the OFF state. This is appropriate for any joint that does not maintain position when the joint drive is off. Some stepper drives, especially microstep drives, may need this.
6.13. LOCKING_INDEXER
If this joint is a locking rotary indexer, it will unlock before homing, and lock afterward.
6.14. Негайне самонаведення
If a joint does not have home switches or does not have a logical home position like a rotary joint and you want that joint to home at the current position when the "Home All" button is pressed in the AXIS GUI, then the following INI entries for that joint are needed.
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. Запобігання самонаведенню
A HAL pin (motion.homing-inhibit) is provided to disallow homing initiation for both "Home All" and individual joint homing.
Деякі системи використовують можливості синхронізації кінцевих рухів повернення в початкове положення суглобів, що контролюються негативними елементами файлу 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/.