Скрипты для MACH3 , Скрипты для поиска краев, центра и длинны инструмента
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
    Я тут не на шутку схватился со скриптами в MAC3
Вот что получилось:

https://www.youtube.com/watch?v=XfMgHtBHJlA
и вот для замера длины инструмента и поверхности:
https://www.youtube.com/watch?v=y4JDoEKaGRk

  Блин, скрипт на другом компе забыл.
Завтра выложу.
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Копался в нете и ничего прям готового не нашел.

Из разных частей и немного своего сделал вот что.

Вот код  для определения длины инструмента

Code "(НАЧИНАЕМ ЗАМЕР !)" выводит сообщение внизу

MaxZPlus=250 'максимальный ход станка

Code "G4 P1"
CurrentFeed = GetOemDRO(818)
Code "F100" 'cкорость подачи до касания инструментом
Code "(ПЕРВЫЙ ЗАМЕР !)" 'сообщаем что начали замер

ZNew = GetDro(2) - MaxZPlus 'опустить инструмент до касания
Code "G31Z" &ZNew  
While IsMoving()
Wend
ZNew = GetVar(2002) 'читаем точку касания
Code "G0 Z" &ZNew + 3 'отьехать вверх на 3мм
While IsMoving ()
Wend

Code "(ВОТОРОЙ  ЗАМЕР !)" 'сообщаем о втором замере
Code "F50" 'подача 50мм\мин
ZNew = GetDro(2) - 6
Code "G31Z" &ZNew 'опусаем
While IsMoving()
Wend

Code "(ЗАКОНЧИЛИ ЗАМЕР !  &ZNew)" 'закончили замер


  Фреза останется на том месте где коснулась.
Если нужно чтоб станок эту точку за ноль принял то в графе Z ввожу длину своей мишени (контакта) и отправляю домой станок, но я за этот ноль никогда не привязываюсь.
  У меня стоит Rhino и RhinoCAM и ноль в Rhino соответствует нулю у станка, когда он в Доме.
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Тут поиск центра по оси х
Вот на эту кнопку поставил:





'Наход центр между деталями по оси Х

Code "(НАЧИНАЕМ ЗАМЕР !)"
XCen=GetABSPosition(0)
Code "G4 P1"
CurrentFeed = GetOemDRO(818)
Code "F100"

Code "(ПЕРВЫЙ ЗАМЕР !)"
Code "G31x1000"    
While IsMoving()
Wend
XNew=GetABSPosition(0)

XEge = XNew - XCen

XEge2 = XNew - 1

If XEge < 1 Then   ' ЕСЛИ МЕНЬШЕ 1 ТО XEge = XCen

      XEge2 = XCen                                
      End If

Code "G0 x" &XEge2 'отьехать ОТ КРАЯ
While IsMoving ()
Wend

Code "F20"
Code "G31x1000"      'ПОЕХАЛИ
While IsMoving()
Wend
XEND1=GetABSPosition(0)


Code "(ЗАКОНЧИЛИ ЗАМЕР ПО Х+ !)"

Code "F1200"
Code "G0 x" &XCen 'В ЦЕНТР
Code "F100"


Code "(ЗАМЕР В МИНУС)"

Code "G31x0"      'ПОЕХАЛИ
While IsMoving()
Wend
XNew2=GetABSPosition(0)
XEge3 = XCen - XNew2
XEge1 = XNew2 + 1
If XEge3 < 1 Then   ' ЕСЛИ МЕНЬШЕ 1 ТО XEge = XCen

      XEge1 = XCen                                
      End If

Code "G0 x" &XEge1 'ОТ КРАЯ
While IsMoving ()
Wend

Code "F20"
Code "G31x0"      'ПОЕХАЛИ
While IsMoving()
Wend
XEND2=GetABSPosition(0)
XCen1=XEND1-XEND2
XCen2=XCen1/2+XEND2

Code "F1200"
Code "G0 x" &XCen2 'В ЦЕНТР

Code "(Фреза в центре по оси Х)"
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Забыл сказать что вод дом и ноль станка тут:
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Теперь  Х в положительную сторону:





Код:

' Ищем край по оси Х в положительную сторону
Code "(НАЧИНАЕМ ЗАМЕР !)"
XCen=GetABSPosition(0)
Code "G4 P1" 'Пауза 1 сек.
CurrentFeed = GetOemDRO(818)
Code "F100"

Code "(ПЕРВЫЙ ЗАМЕР !)"

Code "G31x1000"      
While IsMoving()
Wend
XNew=GetABSPosition(0)

XEge = XNew - XCen

XEge2 = XNew - 1

If XEge < 1 Then  

      XEge2 = XCen                                
      End If

Code "G0 x" &XEge2 'отьехать ОТ КРАЯ
While IsMoving ()
Wend

Code "F20"
Code "G31x1000"      'ПОЕХАЛИ
While IsMoving()
Wend
XEND1=GetABSPosition(0)


Code "(ЗАКОНЧИЛИ ЗАМЕР ПО Х !)"
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Теперь Х в отрицательную сторону:







Code "(НАЧИНАЕМ ЗАМЕР !)" 'послать сообщение в статус
XCen=GetABSPosition(0)
Code "G4 P1" 'Пауза 1 сек.
CurrentFeed = GetOemDRO(818) 'Запомнить текущюю скорость,
Code "F100" 'Задать скорость подачи до касания инструментом

Code "(ПЕРВЫЙ ЗАМЕР !)" 'послать сообщение в статус

Code "G31x0"      'ПОЕХАЛИ
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
XNew=GetABSPosition(0) 'читать точку касания

XEge = XCen -XNew

XEge2 = XNew + 1

If XEge < 1 Then   ' ЕСЛИ МЕНЬШЕ 1 ТО XEge = XCen

      XEge2 = XCen                                
     End If

Code "G0 x" &XEge2 'отьехать ОТ КРАЯ
While IsMoving ()
Wend

Code "F20" 'Задать скорость подачи до касания инструментом
Code "G31x0"      'ПОЕХАЛИ
While IsMoving() 'Подождать пока произойдет касание платы.
Wend

Code "(ЗАКОНЧИЛИ ЗАМЕР ПО Х !)" 'послать сообщение в статус
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Y в положительную сторону:


Code "(НАЧИНАЕМ ЗАМЕР !)" 'послать сообщение в статус
YCen=GetABSPosition(1)
Code "G4 P1" 'Пауза 1 сек.
CurrentFeed = GetOemDRO(818) 'Запомнить текущюю скорость,
Code "F100" 'Задать скорость подачи до касания инструментом

Code "(ПЕРВЫЙ ЗАМЕР !)" 'послать сообщение в статус

Code "G31Y100"      'ПОЕХАЛИ
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
YNew=GetABSPosition(1) 'читать точку касания

YEge = YNew-YCen

YEge2 = YNew-1


If YEge < 1 Then   ' ЕСЛИ больше 1 ТО

      YEge2 = YCen                              
      End If

Code "G0 y" &YEge2  'отьехать ОТ КРАЯ
While IsMoving ()
Wend

Code "F20" 'Задать скорость подачи до касания инструментом
Code "G31y100"      'ПОЕХАЛИ
While IsMoving() 'Подождать пока произойдет касание платы.
Wend


Code "(ЗАКОНЧИЛИ ЗАМЕР ПО Y !)"    
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
Y в отрицательную сторону:


Code "(НАЧИНАЕМ ЗАМЕР !)" 'послать сообщение в статус
YCen=GetABSPosition(1)
Code "G4 P1" 'Пауза 1 сек.
CurrentFeed = GetOemDRO(818) 'Запомнить текущюю скорость,
Code "F100" 'Задать скорость подачи до касания инструментом

Code "(ПЕРВЫЙ ЗАМЕР !)" 'послать сообщение в статус

Code "G31Y-1000"      'ПОЕХАЛИ
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
YNew=GetABSPosition(1) 'читать точку касания

YEge = YCen-YNew

YEge2 = YNew+1

If YEge < 1 Then   ' ЕСЛИ МЕНЬШЕ 1 ТО XEge = XCen

      YEge2 = YCen                                
      End If

Code "G0 y" &YEge2  'отьехать ОТ КРАЯ
While IsMoving ()
Wend

Code "F20" 'Задать скорость подачи до касания инструментом
Code "G31y-1000"      'ПОЕХАЛИ
While IsMoving() 'Подождать пока произойдет касание платы.
Wend


Code "(ЗАКОНЧИЛИ ЗАМЕР ПО Y !)"


Еще нужно сделать чтоб на центр выходила фреза.Чуть позже сделаю.


Все пока ))
Изменено: baramykin - 12.05.2015 18:26:00
Пользователь
Регистрация: 19.04.2018

Сообщений: 1
В друзьях у: 0
Голосов: 0 / 0
Уважаю людей которые своей головой докапываются до истины !
Пользователь
Регистрация: 22.09.2010

Сообщений: 3037
В друзьях у: 12
Голосов: 154 / 24
Ооо супер!  thumbup2 А я до этого поста так и не дошел!
И что же " по центру"? Сделали?
Пользователь
Регистрация: 04.03.2006

Сообщений: 192
В друзьях у: 1
Голосов: 9 / 0
ООооо!
Как это давно было )))
Так что там я должен был еще сделать? ))

Не поверите, сегодня опять с такой задачей работаю.
5-ти осевой станок настраиваю )
Эту тему сейчас просматривают 2 чел. (2 гостей, 0 скрытых пользователей)