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 (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 (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 |
nonzero |
ДА |
Только концевик |
nonzero |
nonzero |
НЕТ |
Концевик и Метка |
nonzero |
nonzero |
ДА |
|
Note
|
Любые другие комбинации могут привести к ошибке. |
6.1. HOME_SEARCH_VEL
This variable has units of machine-units per second.
Значение по умолчанию равно нулю. Значение 0 заставляет 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 Абсолютный энкодер, NO (нет) окончательного перехода в [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 запрещен. В обычных портальных приложениях такое перемещение может привести к перекосу (сдвигу). Обратите внимание, что обычное перемещение по глобальным координатам всегда доступно по приведению станка в исходное положение.
Примеры для системы с тремя сочленениями
Две последовательности (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. Inhibiting Homing
A HAL pin (motion.homing-inhibit) is provided to disallow homing initiation for both "Home All" and individual joint homing.
Некоторые системы используют преимущества синхронизации окончательных перемещений сочленения в исходное положение, контролируемых отрицательными [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/.