Компонент HAL moveoff — це метод, доступний лише в HAL, для реалізації зміщень. ВАЖЛИВІ обмеження та попередження див. на сторінці довідки ($ man moveoff).

Компонент moveoff використовується для зміщення положень суглобів за допомогою спеціальних з’єднань HAL. Реалізація функції зміщення під час паузи програми підтримується за допомогою відповідних з’єднань для вхідних контактів. Підтримується дев’ять суглобів.

Значення штифтів зміщення осі (offset-in-M) безперервно застосовуються (з дотриманням обмежень щодо значення, швидкості та прискорення) до вихідних штифтів (offset-current-M, pos-plusoffset-M, fb-minusoffset-M), коли обидва вхідні штифти активації (apply-offsets та move-enable) мають значення TRUE. Два входи активації об’єднуються внутрішньо. Якщо контакт apply-offsets деактивовано під час застосування зміщень, встановлюється «контакт попередження» і видається повідомлення. Контакт попередження залишається TRUE, доки зміщення не будуть видалені або не буде встановлено контакт apply-offsets.

Зазвичай контакт, що вмикає рух, підключається до зовнішніх елементів керування, а контакт, що застосовує зміщення, підключається до halui.program.is-paused (для зміщень тільки під час паузи) або встановлюється на TRUE (для постійно застосовуваних зміщень).

Застосовані зміщення «автоматично повертаються» до нуля (з дотриманням обмежень), коли будь-який із активаційних входів деактивовано. Допуск нульового значення визначається значенням вхідного виводу епсилон.

Точки маршруту записуються, коли компонент moveoff увімкнено. Точки маршруту керуються за допомогою контактів waypoint-sample-secs та waypoint-threshold. Коли контакт backtrack-enable має значення TRUE, шлях автоматичного повернення слідує за записаними точками маршруту. Коли пам’ять, доступна для точок маршруту, вичерпана, зміщення заморожуються і виводиться сигнал waypoint-limit. Це обмеження застосовується незалежно від стану виводу backtrack-enable. Вивід, що вмикає, повинен бути вимкнений, щоб дозволити повернення до початкового (незміщеного) положення.

Повернення назад через контрольні точки призводить до «уповільнення» швидкості руху, оскільки переміщення відбуваються від точки до точки з дотриманням налаштувань швидкості та прискорення. Штифти обмеження швидкості та прискорення можна динамічно регулювати, щоб постійно контролювати зміщення.

Коли backtrack-enable має значення FALSE, рух автоматичного повернення НЕ координується, кожна вісь повертається до нуля зі своєю швидкістю. Якщо в цьому стані потрібно контролювати траєкторію, кожну вісь слід вручну повернути до нуля перед відключенням виводу активації.

Виводи waypoint-sample-secs, waypoint-threshold та epsilon оцінюються лише тоді, коли компонент неактивний.

Вихідний контакт із застосованими зміщеннями призначений для індикації поточного стану в графічному інтерфейсі користувача, щоб можна було керувати відновленням програми. Якщо зміщення не дорівнюють нулю, коли контакт застосування зміщень не активований (наприклад, при відновленні програми під час зміщення в режимі паузи), зміщення повертаються до нуля (з урахуванням обмежень) і видається повідомлення «Помилка».

Caution
Якщо зміщення ввімкнено та застосовано, а машина з будь-якої причини вимкнена, будь-яка «зовнішня» логіка HAL, яка керує контактами ввімкнення та входами зміщення в М, відповідає за їхній стан, коли машина згодом знову вмикається.

Цей спосіб зміщення, доступний тільки в HAL, зазвичай не відомий LinuxCNC і недоступний в попередньому перегляді GUI. Не забезпечується захист для переміщень з зміщенням, які перевищують м’які обмеження, що управляються LinuxCNC. Оскільки м’які обмеження не дотримуються, переміщення з зміщенням може зіткнутися з жорсткими обмеженнями (або ЗАВАНТАЖЕННЯМ, якщо немає кінцевих вимикачів). Рекомендується використовувати входи offset-min-M та offset-max-M для обмеження переміщення. Спрацьовування жорсткого обмеження вимкне машину — див. Застереження вище.

Значення зміщення в M можна встановити за допомогою налаштувань файлу INI, керувати ними за допомогою графічного інтерфейсу користувача або управляти ними за допомогою інших компонентів HAL та з’єднань. Фіксовані значення можуть бути доречними в простих випадках, коли напрямок і величина зміщення чітко визначені, але для повернення зміщення до нуля необхідний метод управління для деактивації виводу активації. Графічні інтерфейси можуть надавати користувачам засоби для встановлення, збільшення, зменшення та накопичення значень зміщення для кожної осі, а також можуть встановлювати значення зміщення в M до нуля перед деактивацією виводу активації.

Значення за замовчуванням для accel, vel, min, max, epsilon, waypoint-sample-secs та waypoint-threshold можуть бути непридатними для певних застосувань. Цей компонент HAL не враховує обмеження, встановлені в інших місцях LinuxCNC. Користувачі повинні перевірити його використання в симуляторі та ознайомитися з усіма ризиками перед використанням на апаратному забезпеченні.

Конфігурації симулятора, що демонструють компонент та графічний інтерфейс (moveoff_gui), розташовані тут:

  • configs/sim/axis/moveoff (axis-ui)

  • configs/sim/touchy/ngcgui (touchy-ui)

1. Зміна існуючої конфігурації

Для адаптації існуючої конфігурації до використання компонента moveoff можна використовувати файл HAL, що надається системою (LIB:hookup_moveoff.tcl). Додаткові налаштування файлу INI підтримують використання простого графічного інтерфейсу (moveoff_gui) для керування зміщеннями.

Коли системний HAL-файл (LIB:hookup_moveoff.tcl) правильно вказано у файлі конфігурації INI, він:

  1. Від’єднайте оригінальні з’єднання контактів joint.N.motor-pos-cmd та joint.N.motor-pos-fb

  2. Завантажити (loadrt) компонент moveoff (використовуючи ім’я mv) з налаштуванням особистості, щоб врахувати всі осі, визначені у файлі INI

  3. Додати (addf) функції компонента moveoff у потрібній послідовності

  4. Знову підключіть контакти joint.N.motor-pos-cmd та joint.N.motor-pos-fb, щоб використовувати компонент moveoff

  5. Встановіть робочі параметри та обмеження компонента Moveoff для кожної осі відповідно до додаткових налаштувань INI-файлу

Примітка: Програма moveoff_gui підтримує конфігурації, які використовують відомі кінематичні модулі з KINEMATICS_TYPE=KINEMATICS_IDENTITY. Підтримувані модулі включають: trivkins. З ідентифікаційними кінематичними модулями moveoff_gui присвоює кожній осі, вказаній за допомогою параметра командного рядка «-axes axisnames», відповідне з’єднання.

Змініть існуючу конфігурацію наступним чином:

Переконайтеся, що в файлі INI є запис для [HAL]HALUI, і створіть новий запис [HAL] HALFILE для LIB:hookup_moveoff.tcl. Запис для LIB:hookup_moveoff.tcl повинен слідувати за всіма записами HALFILE= для файлів HAL, які з’єднують контакти для joint.N.motor-pos-cmd, joint.N.motor-pos-fb та будь-яких компонентів, підключених до цих контактів (наприклад, компонентів PID та енкодера в сервосистемі).

[HAL]
HALUI   = halui
HALFILE = existing_configuration_halfile_1
...
HALFILE = existing_configuration_halfile_n
HALFILE = LIB:hookup_moveoff.tcl

Додайте записи INI-файлу для налаштувань кожної осі, що використовується (якщо запис не визначений, буде використано відповідний запис із розділу [AXIS_n], а якщо запис не знайдено, буде використано значення за замовчуванням компонента moveoff).

Note
Використання значень компонентів за замовчуванням або значень розділу [AXIS_n] для налаштувань зміщення для кожної осі НЕ рекомендується.
[MOVEOFF_n]
MAX_LIMIT =
MIN_LIMIT =
MAX_VELOCITY =
MAX_ACCELERATION =

Додати записи INI-файлу для налаштувань компонента Moveoff (не використовувати значення Moveoff за замовчуванням):

[MOVEOFF]
EPSILON =
WAYPOINT_SAMPLE_SECS =
WAYPOINT_THRESHOLD =

Moveoff_gui використовується для встановлення додаткових необхідних підключень та надання спливаючого графічного інтерфейсу для:

  1. Надайте кнопку-перемикач для ввімкнення/вимкнення зміщень

  2. Надайте кнопку-перемикач для ввімкнення/вимкнення зворотного відстеження

  3. Забезпечити кнопки керування для збільшення/зменшення/обнулення кожного зміщення осі

  4. Відображення поточного значення зміщення кожної осі

  5. Відображення поточного стану зміщення (вимкнено, активне, видалено тощо)

Надані кнопки управління є опціональними залежно від стану виводу move-enable компонента moveoff. Дисплей та елементи управління для ввімкнення зміщення надаються, якщо вивід mv.move-enable НЕ підключений під час запуску moveoff_gui. У цьому випадку moveoff_gui керує контактом move-enable компонента moveoff (названого mv.move-enable), а також зміщеннями (mv.move-offset-in-M) і увімкненням зворотного відстеження (mv.backtrack-enable)

Якщо контакт mv.move-enable підключений під час запуску moveoff_gui, moveoff_gui буде відображати інформацію, але НЕ буде виконувати функції керування. Цей режим підтримує конфігурації, що використовують колесо прокрутки або інші методи керування вхідними даними зміщення та контактами увімкнення (mv.offset-in-M, mv.move-enable, mv.backtrack-enable).

moveoff_gui встановлює необхідні з’єднання для виводів компонента moveoff: mv.power_on та mv.apply-offsets. Вивід mv.power_on підключається до виводу motion.motion-enabled (за необхідності автоматично створюється новий сигнал). Контакт mv.apply-offsets підключається до halui.program.is-paused або встановлюється на 1 залежно від параметра командного рядка -mode [ onpause | always ]. За необхідності автоматично створюється новий сигнал.

Щоб використовувати moveoff_gui, додайте запис у розділі [APPLICATIONS] INI-файлу наступним чином:

[APPLICATIONS]
# Примітка: може знадобитися затримка (вказана в секундах), якщо з’єднання
# створюються за допомогою HAL-файлів PostGui ([HAL]POSTGUI_HALFILE=)
DELAY = 0
APP = moveoff_gui option1 option2 ...

Коли файл HAL LIB:hookup_moveoff.tcl використовується для завантаження та підключення компонента moveoff, контакт mv.move-enable не буде підключений, і будуть використовуватися локальні елементи керування, що надаються moveoff_gui. Це найпростіший метод тестування або демонстрації компонента moveoff під час модифікації існуючої конфігурації INI.

Щоб увімкнути зовнішні елементи керування під час використання дисплея moveoff_gui для значень зміщення та стану, файли HAL, що відповідають LIB:hookup_moveoff.tcl, повинні мати додаткові з’єднання. Наприклад, надані демонстраційні конфігурації (configs/sim/axis/moveoff/*.ini) використовують простий системний файл HAL (з назвою LIB:moveoff_external.hal) для підключення контактів mv.move-enable, mv.offset-in-M та mv.bactrack-enable до сигналів:

[HAL]
HALUI = halui
...
HALFILE = LIB:hookup_moveoff.tcl
HALFILE = LIB:moveoff_external.hal

З’єднання, що здійснюються LIB:moveoff_external.hal (для тривісної конфігурації), такі:

net external_enable mv.move-enable

net external_offset_0 mv.offset-in-0
net external_offset_1 mv.offset-in-1
net external_offset_2 mv.offset-in-2

net external_backtrack_en mv.backtrack-enable

Ці сигнали (external_enable, external_offset_M, external_backtrack_en) можуть управлятися наступними HALFILES (включаючи POSTGUI_HALFILEs) для забезпечення індивідуального контролю компонента під час використання дисплея moveoff_gui для поточних значень зміщення та стану зміщення.

Moveoff_gui налаштовується за допомогою параметрів командного рядка. Докладніше про роботу moveoff_gui див. на сторінці довідки:

$ man moveoff_gui

Щоб отримати короткий перелік параметрів командного рядка для moveoff_gui, скористайтеся параметром довідки командного рядка:

$ moveoff_gui --help

Використання:
moveoff_gui [Options]

Опції:
    [--help | -? | -- -h ]  (Цей текст)

    [-mode [onpause | always]]  (за замовчуванням: на паузі)
                                  (onpause: показувати графічний інтерфейс, коли програма призупинена)
                                  (завжди: показувати графічний інтерфейс завжди)

    [-axes axisnames]       (default: xyz (no spaces))
                              (letters from set of: x y z a b c u v w)
                              (example: -axes z)
                              (example: -axes xz)
                              (example: -axes xyz)
    [-inc incrementvalue]   (default: 0.001 0.01 0.10 1.0 )
                              (specify one per -inc (up to 4) )
                              (example: -inc 0.001 -inc 0.01 -inc 0.1 )
    [-size integer]         (default: 14)
                              (Overall gui popup size is based on font size)
    [-loc center|+x+y]      (default: center)
                              (example: -loc +10+200)
    [-autoresume]           (default: notused)
                              (resume program when move-enable deasserted)
    [-delay delay_secs]     (default: 5 (resume delay))

Варіанти для особливих випадків:
    [-noentry]              (default: notused)
                             (don't create entry widgets)
    [-no_resume_inhibit]    (default: notused)
                             (do not use a resume-inhibit-pin)
    [-no_pause_requirement] (default: notused)
                             (no check for halui.program.is-paused)
    [-no_cancel_autoresume] (default: notused)
                             (useful for retraact offsets with simple)
                             (external control)
    [-no_display]           (default: notused)
                             (Use when both external controls and displays)
                             (are in use (see Note))

Примітка: Якщо контакт увімкнення переміщення (mv.move-enable) підключено, коли
      moveoff_gui запущено, потрібні зовнішні елементи керування, і лише
      передбачені дисплеї.