Mach3 Некорректно выполняется операция G31 в макросе

Фрезерные и гравировальные станки для обработки мягких материалов (дерево, пластики, мягкие металлы).
zunya
Новичок
Сообщения: 1
Зарегистрирован: 20 ноя 2021, 11:43
Репутация: 0
Настоящее имя: Игорь Зиньковский
Контактная информация:

Mach3 Некорректно выполняется операция G31 в макросе

Сообщение zunya »

Добрый день! Запускаю скрипт для поиска центра отверстия, но при выполнении строки

Код: Выделить всё

XNew = Xcurrent - ProbeDist 
Code "G31 X" &XNew
станок стоит! Но если поменять минус на плюс то все работает :rail: ! С осью Y тоже самое, т.е код исправен, но станок не хочет ехать в влево и вниз(именно с кодом G31). В чем может быть причина?

Код: Выделить всё

ProbeFeed = 100 'Скорость перемещения фрезы при поиске
ProbeDist = 30 ' Расстояние с запасом до краев отверстия. Если отверстие большое - увеличить до диаметра
Code "M3"
Code "G4 P1" 'пауза 1 секунда

Code "F" &ProbeFeed 'Устанавливаем скорость поиска

If GetOemLed (825) <> 0 Then 'Если фреза касается края отверстия выводим
Code "(Probe plate is grounded, check connection and try again)"
Else
FeedCurrent = GetOemDRO(818) ' Запоминаем текущую скорость
XCurrent = GetDro(0)
YCurrent = GetDro(1)
Code "G4 P1" ' Пауза в 1 секунду на всякий случай

Rem Ищем влево
XNew = Xcurrent - ProbeDist ' Точка за пределами отверстия
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos1 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
Code "G0 X" &XCurrent 'быстро возвращаемся в исходную позицию

Rem Ищем вправо
XNew = XCurrent + ProbeDist ' Точка за пределами отверстия
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos2 = GetVar(2000) 'предполагаем, что коснулись и считываем X2
XCenter = (XPos1 + XPos2) / 2 ' так как отверстие круглое и фреза круглая, то центр по Х в середине
Code "G0 X" &XCenter ' быстро устанавливаем в центр по Х

Rem Ищем вперед
YNew = YCurrent + ProbeDist ' Точка за пределами отверстия
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos1 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
Code "G0 Y" &YCurrent

Rem Ищем назад
YNew = YCurrent - ProbeDist ' Точка за пределами отверстия
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos2 = GetVar(2001) ' предполагаем, что коснулись и считываем Y2
YCenter = (YPos1 + YPos2) / 2 ' так как отверстие круглое и фреза круглая, то центр по Y в середине

Rem Двигаемся в найденный центр по Y
Code "G0 Y" &YCenter
While IsMoving () ' ждем пока едет
Wend
Code "M5"
Code "F" &FeedCurrent ' восстанавливаем скорость
End If

Вернуться в «Фрезерные станки по дереву и пластикам, гравировальные станки, роутеры»