KREMEN Реклама
KREMEN Реклама

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

Zunya
Идет загрузка
Загрузка
20.11.2021
1632
1
Вопросы и ответы

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

XNew = Xcurrent - ProbeDist 

Code "G31 X" &XNew

станок стоит!  Но если поменять минус на плюс то все работает!  С осью Y тоже самое, т.е код исправен, но станок не хочет ехать в влево и вниз. В чем может быть причина?

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

Ответы на вопросы
Lider 3D Реклама
Lider 3D Реклама