Homes, Limits, E-Stop, Zero Probe – датчики на станке с ЧПУ
Главная »Статьи »Homes, Limits, E-Stop, Zero Probe – датчики на станке с ЧПУ
Homes, Limits, E-Stop, Zero Probe – датчики на станке с ЧПУ

Здесь будет рассказано о подключении и настройке в Mach3 датчиков для станка с ЧПУ. Наличие датчиков на станке позволяет:

  1. не беспокоиться о выезде за пределы;
  2. легко и однозначно определять машинный ноль;
  3. легко восстанавливать рабочий ноль при сбоях, например при отключении электроэнергии;
  4. легко определять рабочий ноль по оси Z.

Установлены датчики:

  1. Домов (HOME) и концевиков (LIMIT);
  2. "E-Stop" — аварийной остановки;
  3. "Z Probe" — определения нуля по оси Z.

Направления осей

Расположение осей отличается от общепринятого. Ноль оси Z расположен вверху, рабочие координаты — отрицательные.

Элемены

В качестве концевиков используются микропереключатели MSW-13 или аналогичные:

В качестве кнопки аварийной остановки "E-Stop" используется ANE-22 «Грибок» с фиксацией в корпусе поста КП101 для кнопок управления, 1 место, белый, IEK:

В качестве датчика нуля по оси Z – "Z Probe" используется закаленный диск из нержавеющей стали диаматром 40 и толщиной 6,85 мм. Второй провод с крокодилом устанавливается на фрезу.

Функциональная схема подключений

Датчики HOME ("дом") устанавливаются на все оси. Датчики LIMIT ("концевик") устанавливаются на оси X и Y. При принятии баз датчики HOME работают как дома; в рабочем режиме они работают как концевики. Вверху оси Z устанавливается датчик HOME, датчик LIMIT с противоположного конца (внизу) отсутствует.

Электрическую схему можно скачать внизу страницы.

Все датчики, кроме "Z Probe" работают на размыкание. Датчики HOMES и LIMITS объединяются в один логический сигнал по схеме "ИЛИ", т.е. соединяются в последовательную нормальнозамкнутую цепь.

Все соединения датчиков HOMES и LIMITS выполняются витыми парами. Раскладка проводников датчиков HOMES и LIMITS:

Настройка Mach3

1. Настройка Debonce Interval

В Mach3 программное подавление дребезга контактов датчиков настраивается в диалоге "General Logic Configuration", вызываемом из пункта "General Config" меню "Config". Здесь необходимо настроить количество тактов ядра Mach3, в течение которых неизменное состояние датчика принимается за его срабатывание.

Для частоты ядра Mach3 = 25 кГц, период = 40 мкс.

  • Рассмотрим процесс поиска нуля по оси Z. Скорость при поиске нуля по Z примем = 100 мм/мин = 1,7 мм/сек. Чтобы не повредить инструмент (фрезу) при касании датчика, его ход после касания не должен превышать 0,01 мм. Тогда, за время хода = 0,01 мм система отработает 0,01/1,7/40,0E-6 = 147 тактов.
  • Рассмотрим случай поиска дома. Скорость при поиске дома принимаем 20% от установленной максимальной (до 2000 мм/мин). Т.о. скорость = 400 мм/мин = 6,7 мм/сек. Концевики, в отличие от датчика "Z Probe" имеют пружинящий элемент, поэтому их ход может быть больше; примем его 0,05 мм. Тогда, за время хода = 0,05 мм система отработает 0,05/6,7/40,0E-6 = 186 тактов.
  • Рассмотрим случай аварийного наезда на концевик с максимальной скоростью 2000 мм/мин = 33 мм/сек. Ход примем 0,2 мм. Тогда, за время хода = 0,2 мм система отработает 0,2/33/40,0E-6 = 151 такт.

Таким образом, устанавливаем значение "Debonce Interval" не более минимального из вычисленных:

2. Автонастройка входных пинов

Настроить пины входов датчиков можно вручную; автонастройка упрощает это процесс. Рассмотрим на примере пина для датчика "Z Probe". Выбираем пункт "Ports and Pins" меню "Config". В появившемся диалоге "Engine Configuration... Ports & Pins" выбираем вкладку "Input Signals".

Нажимаем кнопку "Auto Setup of Inputs":

Из выпадающего списка выбираем нужный сигнал, в данном случае "Probe Switch", нажимаем кнопку "AutoSet", и после этого замыкаем датчик "Z Probe" – в сером поле видим сообщение об успешном определении пина датчика и приглашение к определению следующих пинов. Таким образом определяем остальные пины. Для завершения нажимаем кнопку "OK" и возвращаемся в диалог "Engine Configuration... Ports & Pins", где можно наблюдать за произошедшими изменениями в колонках "Enabled", "Port #", "Pin Number" и "Active Low" (вверху показано для "E-Stop" и "Z Probe", ниже для HOMES и LIMITS).

3. Скрипт для "Z Probe"

Рабочий скрипт с комментариями:


' Предназначен только в режиме метрических единиц!
' Масштабирование осей не обрабатывается!
' Использование: подвести оси X, Y так, чтобы инструмент располагался над датчиком и нажать кнопку "Auto Tool Zero"

' Пользовательские константы
Const PAUSE_FOR_PLACE_PROBE = "2.0" ' величина паузы (в секундах), чтобы дать время для позиционирования датчика
Const PROBE_FEEDRATE_SPEED = 100.0 ' скорость (мм/мин) опускания по Z при поиске датчика
Const DRIVING_DEPTH = 10.0 ' макс. ход станка по оси Z (мм) при поиске датчика
Const RETRACT_HEIGHT = 5.0 ' высота (мм) на которую поднимется ось Z после касания датчика
Const RETRACT_FEEDRATE = 400.0 ' скорость (мм/мин) с которой поднимется ось Z после касания датчика

' Mach3 константы
Const Z_DRO = 802 ' номер DRO для Z-оси
Const Z_PROBE_TRIPPED_VALUE = 2002 ' номер переменной в которой хранится высота срабатывания датчика
Const FEEDRATE_DRO = 818 ' номер DRO для поля "Feedrate"
Const PROBE_LED = 825 ' номер DRO для светодиода "Digitize"
Const MACHINE_COORD_LED = 16 ' номер DRO для светодиода "Machine Coordinates"
Const PLATE_THICKNESS_USER_DRO = 1151 ' номер DRO для поля с толщиной пластины

Sub Main ()
  Dim CurrentFeed As Double
  Dim MaxZCoord As Double
  Dim ZNew As Double
  Dim PlateThickness As Double ' переменная в которую считывается толщина (в мм) пластины датчика

  DoSpinStop() ' остановить шпиндель
  If GetOemLed(MACHINE_COORD_LED) <> 0 Then ' проверка: включены машинные координаты?
    Message "(Please change to working coordinates!)"
    Exit Sub
  End If

  If GetOemLed(PROBE_LED) <> 0 Then  ' проверка, если датчик уже сработал или неисправен
    Code "(Z-Plate is grounded or check connection and try again)" ' выдать сообщение о сбое в строке состояния
  Else
    PlateThickness = GetUserDRO(PLATE_THICKNESS_USER_DRO) ' прочитать из поля толщину пластины датчика
    DoOEMButton (1010) ' обнулить координаты Z-оси
    Sleep(1000) ' пазуа, чтобы обновился DRO координаты Z-оси
    MaxZCoord = GetOemDro(Z_DRO) - DRIVING_DEPTH ' макс. высота перемещения = {текущая Z} минус DRIVING_DEPTH
    Code "G4 P" & PAUSE_FOR_PLACE_PROBE ' пауза, чтобы дать время для позиционирования датчика
    CurrentFeed = GetOemDRO(FEEDRATE_DRO) ' запомнить текущую скорость подачи, чтобы восстановить ее в конце

    Code "G31 Z" & MaxZCoord & "F" & PROBE_FEEDRATE_SPEED ' перемещаться со скоростью PROBE_FEEDRATE_SPEED
    While IsMoving() ' дожидаться окончания перемещ. по Z: либо коснется датчика либо переместиться на DRIVING_DEPTH
    Wend

    ZNew = GetVar(Z_PROBE_TRIPPED_VALUE) ' переместились; считать высоту точки касания

    If GetOemLed(PROBE_LED) <> 0 Then  ' касается или нет?
      Call SetOemDro(Z_DRO, PlateThickness)  ' записать в поле Z толщину датчика, откорректировав позицию по Z
      Sleep(1000) ' пауза для успешной записи значения в поле Z
      Code "F" & RETRACT_FEEDRATE ' установить скорость подъема
      
      ZNew = PlateThickness + RETRACT_HEIGHT ' задать выстоту подъема
      Code "G1 Z" & ZNew ' подъем
      While IsMoving() ' дожидаться окончания перемещения по Z
      Wend

      Code "(Z axis is now zeroed)" ' выдать сообщение об успехе в строке состояния
    Else
      Code "(Z-Plate is not grounded. Try again.)" ' выдать сообщение о сбое в строке состояния
    End If
    Code "F" & CurrentFeed ' восстановить запомненную скорость подачи
  End If
End Sub

4. Настройка скринсета для "Z Probe"

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

Скачиваем со страницы дизайнер "Klaus’ MachScreen", устанавливаем, запускаем и открываем рабочий скринсет (например, "1024.set"). Сохраняем скринсет в папку Mach3 под новым именем. В главном окне дизайнера нажимаем кнопку "Toggle multiple / single selection", чтобы выбрать режим одиночного выделения . В выпадающем списке группы "Control" окна "MachScreen properties" выбираем "Button", нажимаем кнопку "Add" и щелаем ЛКМ примерно на том месте скринсета, где должна находится кнопка авто поиска нуля по оси Z: создается новая кнопка, которая сразу веделяется и отображаются ее свойства.

Размеры и положение созданной кнопки можно изменить в группе "Position". В строке "Text on ctrl" таблицы "Button" меняем "Text" на, например, "Auto Tool Zero". Щелкаем ЛКМ на строке "Execute Code", в появившемся диалоге выбираем "Basic Script":

В открывшемся диалоге "MachScreen Editor" вводим или открываем/вставляем ранее созданный текст скрипта:

Далее, выбираем пункт "use data and close" из меню "File" – окно закрывается и таблица "Button" в окне "MachScreen properties" принимает вид:

Теперь аналогичным образом добавляем поле для ввода толщины датчика – в выпадающем списке группы "Control" окна "MachScreen properties" выбираем "DRO", нажимаем кнопку "Add" и щелаем ЛКМ примерно на том месте скринсета, где должно находиться поле. В таблице "DRO" выбираем строку "Standart Code" и меняем значение на любое из диапазона 1000–2254, например 1151. В строке "Format" корректируем формат числа. Результат:

Сохраняем скринсет, закрываем редактор. Запускаем Mach3. Выбираем пункт "Load Screens" из меню "View" и загружаем отредактированный скринсет.

5. Настройка скриптов для кнопок в Mach3

При создании скринсета мы ввели требуемый скрипт для кнопки "Auto Tool Zero". Однако, скрипт может быть изменен без редактора скринсета следующим образом. Выбираем пункт "Edit Button Script" из меню "Operator". После этого, кнопки, скрипты которых возможно корректировать начнут мигать. Указываем кнопку "Auto Tool Zero" – появится редактор скрипта "Hidden Script.m1s". По завершению редактирования, закрываем редактор (сохранять скрипт в отдельный файл не требуется).

6. Настройка скрипта для кнопки "Ref All Home"

Проделаем вышеуказанные действия для кнопки "Ref All Home". Рабочий скрипт:

DoButton(24) ' home Z
DoButton(23) ' home Y
DoButton(22) ' home X

7. Дополнительные настройки

Выбираем пункт "Homing/Limits" из меню "Config":

Значение в колонках "Soft Max" и "Soft Min" определяют программные ограничения перемещений осей. Устанавливаем в них значения примерно на 0,5-1 мм уже, чем при срабатывании концевиков. Значения "Slow Zone" определяют расстояние от программных ограничений, не доезжая которых сбрасывается скорость. Значение, указанное в колонке "Home Off" будет присвоено координате оси при операции поиска дома, если включено значение "Auto Zero". Значение "Home Neg" определет направление поиска дома: если при поиске дома ось едет в противоположном направлении – меняем значение "Home Neg". И, наконец, поле "Speed %" определяет скорость, с которой осуществляется подъезд к домам и в "Slow Zone".

Проверка датчиков

Первичная проверка на примере "Z Probe". Переходим на вкладку "Diagnostics", замыкаем/размыкаем датчик "Z Probe" и наблюдаем за сменой сигналов:

Проверка кнопки "E-Stop":

  1. Нажимаем кнопку "Reset", чтобы ее мигание прекратилось;
  2. Нажимаем кнопку "E-Stop" — в строке состояния появляется сообщение, кнопка "Reset" мигает;
  3. Возвращаем кнопку "E-Stop" в начальное состояние, нажимаем кнопку "Reset" — ее мигание прекратилось.

Проверка датчика "Z Probe":

  1. Нажимаем кнопку "Auto Tool Zero": через заданную паузу ось Z начнет движение вниз;
  2. Замыкаем датчик "Z Probe" — движение прекращается, пауза, ось Z начнет движение вверх;
  3. Ось Z останавливается — в DRO координаты Z наблюдаем значение = {толщина пластины} + RETRACT_HEIGHT = 11,85.

Проверка датчиков домов и концевиков:

  1. С помощью ручных перемещений запускаем движение оси X;
  2. Нажимаем на датчик HOME или LIMIT — движение прекращается, в строке состояния появляется сообщение, кнопка "Reset" начинает мигать;
  3. Проверяем включение "Auto LimitOverRide" на вкладке "Settings". Нажимаем кнопку "Reset" и "съезжаем" с концевика — отпускаем нажатый датчик.
  4. Аналогично проверяем срабатывание остальных датчиков.

К статье прилагаются файлы:


Внимание! Запрещается воспроизведение данной статьи или ее части без согласования с автором. Если вы желаете разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.
Автор статьи: Вершинин И.В.

+