1. Обзор

Приведение к исходному положению устанавливает нулевое начало координат станка G53. Программные пределы определяются относительно исходной точки станка. Программные пределы автоматически замедляют и останавливают оси до того, как они достигнут концевых выключателей. Правильно сконфигурированный и функционирующий станок не выйдет за пределы программных пределов, и исходная точка станка будет установлена с такой же повторяемостью, как и механизм исходного концевика/метки. Linuxcnc можно установить на глаз (метки совмещения), с помощью концевиков, концевиков и метки энкодера или с помощью абсолютных энкодеров. Возврат в исходное положение кажется достаточно простым — просто переместите каждое сочленение в известное место и соответствующим образом установите внутренние переменные LinuxCNC. Однако у разных станков разные требования, и приведение в исходное положение на самом деле довольно сложное.

Note
Хотя можно использовать LinuxCNC без концевиков/процедур приведения в исходное положение или концевиков пределов, это нарушает дополнительную безопасность программных пределов.

2. Предварительные условия

Возврат в исходное положение опирается на некоторые фундаментальные предположения о станке.

  • Отрицательное и положительное направления основаны на Tool Movement, которые могут отличаться от фактического движения станка. То есть на фрезерном станке обычно движется стол, а не инструмент.

  • Все происходит от нулевой точки станка G53, начало координат может быть где угодно (даже за пределами места, куда вы можете перемещаться)

  • Начало координат станка G53 обычно находится внутри области программных пределов, но не обязательно.

  • Смещение концевика исходного положения устанавливает начало координат, но даже на него ссылаются из начала координат.

  • При использовании для возврата в исходное положение индекса энкодера, смещение концевика исходного положения рассчитывается на основе референтного положения энкодера после срабатывания концевика исходного положения.

  • Отрицательные пределы программных пределов — это максимум, который вы можете изменить в отрицательном направлении после возврата в исходное положение. (но они могут не быть отрицательными в абсолютном смысле)

  • Положительные программные пределы — это максимум, на который вы можете двигаться в положительном направлении после возврата в исходное положение. (но они могут не быть положительными в абсолютном смысле, хотя обычно их определяют как положительное число)

  • Программные пределы находятся внутри области концевого выключателя.

  • (Окончательное) Исходное положение находится внутри области программного предела

  • (При использовании приведения в исходное положение с помощью концевика) концевик(и) возврата в исходное положение либо используют концевые выключатели пределов (общий концевик предела/исходного положения), либо при использовании отдельного концевика исходного положения находятся внутри области концевика предела.

  • При использовании отдельного концевика возврата в исходное положение можно начать возвращение к исходному состоянию не с той стороны переключателя исходного положения, что в сочетании с опцией HOME_IGNORE_LIMITS приведет к серьезному сбою. Вы можете избежать этого, заставив концевик исходного положения переключать свое состояние, когда ограничитель находится на определенной стороне, пока он снова не пройдет точку срабатывания. Другими словами, состояние концевика исходного положения должно отражать положение ограничителя относительно концевика(т.е. до или после переключателя) и должно оставаться таким, даже если ограничитель проезжает мимо переключателя в том же направлении.

Note
Хотя можно использовать LinuxCNC с началом координат станка G53 за пределами программных пределов станка, если вы используете G28 или G30 без установки параметров, он по умолчанию переходит в начало координат. Это приведет к отключению концевиков пределов еще до достижения положения.

3. Пример схемы отдельного концевика исходного положения

В этом примере показаны минимальные и максимальные концевики пределов с отдельным концевиком исходного положения.

Example Homing Switch layout
Figure 1. Демонстрационная схема отдельного концевика
  • A — отрицательный программный предел

  • B — это G53 начало координат станка

  • C — точка срабатывания концевика исходного положения

  • D — положительный программный предел

  • H — конечное исходное положение (HOME) = 0 единиц

  • -L и +L — точки срабатывания концевиков

  • A<->B — отрицательные программные пределы (MIN_LIMITS) = -3 единицы

  • B<->C — смещение home_offset (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. Пример схемы общего концевика предела/исходного положения

В этом примере показан концевик максимального предела и комбинированный концевик минимального предела/исходного положения.

Пример общего концевика исходного положения/предела
Figure 2. Демонстрационная схема общего концевика
  • A — отрицательный программный предел.

  • B — это G53 начало координат станка.

  • C — точка срабатывания концевика исходного положения, общий с (-L) срабатыванием минимального предела.

  • D — положительный программный предел.

  • H — конечное исходное положение (HOME) = 3 единицы.

  • -L и +L — это точки срабатывания концевика предела.

  • A<->B — отрицательные программные пределы (MIN_LIMITS) = 0 единиц.

  • B<->C — это home_offset (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 — это один и тот же знак или противоположные знаки. Более подробное описание того, что делает каждый параметр конфигурации, см. в следующем разделе.

Последовательности приведения в исходное положение
Figure 3. Последовательности приведения в исходное положение

6. Конфигурация

Следующее точно определяет, как ведет себя последовательность приведения в исходное положение. Они определены в разделе [JOINT_n] INI-файла.

Тип последовательности HOME_SEARCH_VEL HOME_LATCH_VEL HOME_USE_INDEX

Немедленно

0

0

НЕТ

Только метка

0

nonzero

ДА

Только концевик

nonzero

nonzero

НЕТ

Концевик и Метка

nonzero

nonzero

ДА

Note
Любые другие комбинации могут привести к ошибке.

6.1. HOME_SEARCH_VEL

Эта переменная имеет единицы измерения — единицы-станка в секунду.

Значение по умолчанию равно нулю. Значение 0 заставляет 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

Указывает, есть ли индексный импульс. Если флаг равен true (HOME_USE_INDEX = YES), LinuxCNC будет фиксировать фронт индексного импульса. Если значение равно false, 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, если энкодер, используемый для этого сочленения, не сбрасывает свой счетчик при обнаружении индексного импульса после активации контакта index_enable сочленения HAL. Применимо только для 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 Абсолютный энкодер, NO (нет) окончательного перехода в [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 прекратится после завершения последнего допустимого порядкового номера.

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 запрещен. В обычных портальных приложениях такое перемещение может привести к перекосу (сдвигу). Обратите внимание, что обычное перемещение по глобальным координатам всегда доступно по приведению станка в исходное положение.

Примеры для системы с тремя сочленениями

Две последовательности (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

Если настройка в true, это сочленение становится не в исходном положении всякий раз, когда станок переходит в состояние ВЫКЛ. Это подходит для любого сочленения, которое не сохраняет положение при выключенном приводе сочленения. Это может потребоваться некоторым шаговым приводам, особенно микрошаговым.

6.13. LOCKING_INDEXER

Если это сочленение представляет собой делительную головку с блокировкой, оно разблокируется перед возвратом в исходное положение и зафиксируется после этого.

6.14. Immediate Homing

Если сочленение не имеет концевиков исходного положения или не имеет логического исходного положения, как, например, поворотное сочленение, и вы хотите, чтобы это сочленение возвращалось в исходное положение в текущем положении при нажатии кнопки "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. Inhibiting Homing

Контакт HAL (motion.homing-inhibit) предназначен для запрета инициирования возврата в исходное положение как для "Home All", так и для отдельного сочленения.

Некоторые системы используют преимущества синхронизации окончательных перемещений сочленения в исходное положение, контролируемых отрицательными [JOINT_N]HOME_SEQUENCE= элементами INI файла. По умолчанию условия синхронизации запрещают медленную подачу сочленения перед перемещением в исходное положение, чтобы предотвратить перемещение сочленения, которое может привести к смещению станка (например, портальная стойка).

Системный разработчике может разрешить медленную подачу сочленения перед возвратом в исходное положение с помощью логики 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: pin created by a virtual panel or hardware switch
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 для контактов медленной подачи типа РГИ (MPG) (joint.N.enable, joint.N.scale, joint.N.counts). .

Пример конфигурации моделирования (gantry_jjog.ini), демонстрирующий медленную подачу сочленения при использовании отрицательных последовательностей приведения в исходное положение, находится в каталоге: configs/sim/axis/gantry/.