Скрипты для MACH3.

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Скрипты для MACH3.

Сообщение putman »

Здравствуйте ! :good:
Был на форуме скрипт центроискателя, у меня он не работал, кое как адаптировал.
Т.к. для финишной обработки я снимаю деталь, и снова ставлю другой стороной, она всегда сдвинута на небольшой угол (0.1 - 0.3 градуса).
По этому по двум отверстиям хочу находить угол смещения.
Вопрос первый,
1. Нужны функции sin, cos, tg, они поддерживаются скриптом или придется высчитывать руками ?
Вопрос второй,
2. В завершении приведенного ниже скрипта, инструмент стоит в координатах 0, 0. Но стоит начать другую УП, как координаты смещаются с учетом G92 и нули уходят. Как написать так, что бы значения не изменялись ?
Вопрос третий,
3. Искал и не смог найти справочника по языку сценариев для MACH3, это какой то секретный язык ?

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

Code "G04 p0.25" 'пауза 0.5 c
Code "G31 X-1000 F200" ' двигаться по +Х на 1м до касания щупом  
While IsMoving() 
Wend ' дождаться конца движения

Call SetDRO(0,0) ' обнулить данные в окне X
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 x0.25" '
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 X1000" ' двигаться по -X на 1м до касания щупом
While IsMoving() 
Wend ' дождаться конца движения           

Code "G04 p0.25" ' пауза 0.5 с
Xnew = GetDRO(0) - 0.25
Code "G01 x"&Xnew 
Xnew = (Xnew+0.25)/2
Code "G01 x"&Xnew 
Code "G92 X0"  
Code "G04 p0.25" ' пауза 0.5 с

'Установили предварительный нуль по Х.


Code "G31 Y-1000 F200" ' двигаться по +Х на 1м до касания щупом  
While IsMoving() 
Wend ' дождаться конца движения

Call SetDRO(1,0) ' обнулить данные в окне Y
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 Y0.25" '
Code "G04 p0.25" ' пауза 0.5 с   
Code "G31 Y1000" ' двигаться по -X на 1м до касания щупом
While IsMoving() 
Wend ' дождаться конца движения      

Code "G04 p0.25" ' пауза 0.5 с
Ynew = GetDRO(1) - 0.25
'responde = MsgBox ("сторона X =" &Xnew&) 
Code "G01 Y"&Ynew 
Ynew = (Ynew+0.25)/2
'responde = MsgBox ("сторона X =" &Xnew&) 
Code "G01 Y"&Ynew  
Code "G92 Y0"  
Code "G04 p0.25" ' пауза 0.5 с  
       
'Установили предварительный нуль по Y.


Code "G04 p0.25" 'пауза 0.5 c
Code "G31 X-1000 F100" ' двигаться по +Х на 1м до касания щупом  
While IsMoving() 
Wend ' дождаться конца движения

Call SetDRO(0,0) ' обнулить данные в окне X
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 x0.25" '
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 X1000" ' двигаться по -X на 1м до касания щупом
While IsMoving() 
Wend ' дождаться конца движения           

Code "G04 p0.25" ' пауза 0.5 с
Xnew = GetDRO(0) - 0.25
Code "G01 x"&Xnew 
Xnew = (Xnew+0.25)/2
Code "G01 x"&Xnew 
Code "G92 X0"  
Code "G04 p0.25" ' пауза 0.5 с

'Установили окончательный нуль по Х.


Code "G31 Y-1000 F100" ' двигаться по +Х на 1м до касания щупом  
While IsMoving() 
Wend ' дождаться конца движения

Call SetDRO(1,0) ' обнулить данные в окне Y
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 Y0.25" '
Code "G04 p0.25" ' пауза 0.5 с   
Code "G31 Y1000" ' двигаться по -X на 1м до касания щупом
While IsMoving() 
Wend ' дождаться конца движения      

Code "G04 p0.25" ' пауза 0.5 с
Ynew = GetDRO(1) - 0.25
'responde = MsgBox ("сторона X =" &Xnew&) 
Code "G01 Y"&Ynew 
Ynew = (Ynew+0.25)/2
'responde = MsgBox ("сторона X =" &Xnew&) 
Code "G01 Y"&Ynew  
Code "G92 Y0"  
Code "G04 p0.25" ' пауза 0.5 с   
'Call SetDRO(1,0) ' обнулить данные в окне Y 
Большущее ВСЕМ заранее СПАСИБО !!!
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Скрипты для MACH3.

Сообщение aftaev »

putman писал(а):2. В завершении приведенного ниже скрипта, инструмент стоит в координатах 0, 0. Но стоит начать другую УП, как координаты смещаются с учетом G92 и нули уходят. Как написать так, что бы значения не изменялись ?
можно кнопочку сделать запомнить координаты (текущие координаты записать в какое нибудь поле ввода)
putman писал(а):3. Искал и не смог найти справочника по языку сценариев для MACH3, это какой то секретный язык ?
Visual Basic
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Скрипты для MACH3.

Сообщение aftaev »

Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

aftaev писал(а):
putman писал(а):2. В завершении приведенного ниже скрипта, инструмент стоит в координатах 0, 0. Но стоит начать другую УП, как координаты смещаются с учетом G92 и нули уходят. Как написать так, что бы значения не изменялись ?
1. можно кнопочку сделать запомнить координаты (текущие координаты записать в какое нибудь поле ввода)
2. На тебе до кучки Список скриптов/макросов для Mach #1
1. Так текущие при поиске центра - 0,0. И в поле Х и Y они стоят уже, только после любой команды перемещения к ним прибавляется то что находится в G92.
Сформулирую вопрос иначе.
Как из скрипта выставить реальные координаты X = 0, Y = 0, что бы ничего не смещалось ?
2. По ссылке куча ссылок форумов, а не скрипты. Так и должно быть ?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Скрипты для MACH3.

Сообщение aftaev »

putman писал(а):Как из скрипта выставить реальные координаты X = 0, Y = 0, что бы ничего не смещалось ?
1. создать свое поле ввода
2. когда нужно туды переписать нужные данные
putman писал(а):2. По ссылке куча ссылок форумов, а не скрипты. Так и должно быть ?
были примеры макросов
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

aftaev писал(а):
putman писал(а):Как из скрипта выставить реальные координаты X = 0, Y = 0, что бы ничего не смещалось ?
1. создать свое поле ввода
2. когда нужно туды переписать нужные данные
Зачем создавать свое поле если есть МАЧевское родное, туда вписал и Enter.
Надо автоматизировать, минимизировать ручной ввод.
Свое поле ввода тоже скриптом будет написано, зачем 2 скрипта, если можно из первого (центроискатела) сразу вписать в X, Y нули.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

Нашел мануал по VB, про синус и косинус там ничего нет.
Неужели такие вычисления не предусмотрены ?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Скрипты для MACH3.

Сообщение Сергей Саныч »

putman писал(а):Неужели такие вычисления не предусмотрены ?
В любом поисковике набираешь "visual basic математические функции" и ...
Чудес не бывает. Бывают фокусы.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

Сергей Саныч писал(а):
putman писал(а):Неужели такие вычисления не предусмотрены ?
В любом поисковике набираешь "visual basic математические функции" и ...
Набрал в гугле - "visual basic математические функции" и ...
...
Радостно скопировав - "Xnew = Math.Cos(0.31)" из примера .... и
и - не работает )))))))))))
VB для МАЧА не принимает.
Подскажите синтаксис пожалуйста, в гугле примеров полно, но не для MACH3.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Скрипты для MACH3.

Сообщение Сергей Саныч »

А просто Xnew = сos(0.31) не сработает?
Чудес не бывает. Бывают фокусы.
konyshevk
Почётный участник
Почётный участник
Сообщения: 740
Зарегистрирован: 19 апр 2014, 22:09
Репутация: 696
Откуда: Челябинск
Контактная информация:

Re: Скрипты для MACH3.

Сообщение konyshevk »

Вот отсюда кое-что можно взять , это с оф. саита мача , Много примеров . есть с чем поэксперементировать . на английском
Сам вожусь щас со скриптом поиска центра с поворотом шпинделя на 180 гр. - это для того что-бы датчик не центрировать
привязку по краю с поворотом сделал , могу скинуть , вожусь с центром
Капризный мачь очень ,
Вложения
описание VBScript_Commands.pdf
(717.74 КБ) 2743 скачивания
Последний раз редактировалось konyshevk 12 дек 2014, 19:54, всего редактировалось 1 раз.
Даешь коллективный разум !
Аватара пользователя
shalek
Почётный участник
Почётный участник
Сообщения: 3019
Зарегистрирован: 25 авг 2014, 10:40
Репутация: 2575
Настоящее имя: Александр
Откуда: РБ Бобруйск
Контактная информация:

Re: Скрипты для MACH3.

Сообщение shalek »

Я в скриптах ничего не рублю, но гляньте может чего пригодится.
(для просмотра содержимого нажмите на ссылку)
Sub Main()

' 2010 Circular Pocket Probing Script
' 3-1-11

Dim FRate1, FRate2
Dim DMax, Clearance, EdgeLength, CornerClear
Dim XStart, YStart
Dim PlateOffset, XOffset, YOffset
Dim ZeroYN
Dim ToolNo
Dim ToolD
Dim ProbeD
Dim ProbeLengthX, ProbeLengthY
Dim XNew, XHit1, Xhit2, XEdge, X1, X2
Dim YNew, YHit1, YHit2, YEdge, Y1, Y2

Dim XPos, YPos, EdgeAngle, PocketXLen, PocketYLen, EdgeDelta, XCenter, YCenter

Dim XScale, YScale, ZScale

Dim CurrentAbsInc

Dim CurrentFeed

FRate1 = abs(GetUserDRO(1821))
FRate2 = abs(GetUserDRO(1822))
DMax = abs(GetUserDRO(1823))
PlateOffset = GetUserDRO(1824)
ToolNo = GetCurrentTool()
ToolD = GetToolParam(ToolNo,1)
If GetUserDRO(1829) = 0 then
ProbeD = ToolD
Else
ProbeD = GetUserDRO(1829)
End If
Clearance = abs(GetUserDRO(1825))
XOffset = GetUserDRO(1826)
YOffset = GetUserDRO(1827)
EdgeLength = abs(GetUserDRO(1828))
ProbeLengthY = GetOEMDRO(801) + DMax
XStart = GetOEMDRO(800)
YStart = GetOEMDRO(801)

If GetOEMLED(801) Then ' On = English Measure INCH

CornerClear = 1.5

Else ' Off = Metric Measure MM

CornerClear = 38

End If


If GetOEMLED(1871) Then
ZeroYN=1
Else
ZeroYN=0
End If

CurrentFeed = GetOemDRO(818) ' Get the current feedrate to return to later

CurrentAbsInc = GetOemLED(48) ' Get the current G90/G91 state

'Get Axis Scale factors
XScale = GetOEMDRO(59)
YScale = GetOEMDRO(60)
ZScale = GetOEMDRO(61)

'Set All Axis' Scale to 1
Call SetOEMDRO(59,1)
Call SetOEMDRO(60,1)
Call SetOEMDRO(61,1)
Sleep(250)



'Check for Errors

If GetOemLED(16)<>0 Then ' Check for Machine Coordinates
Message "Please change to working coordinates"
Call SetOEMDRO(59,XScale)
Call SetOEMDRO(60,YScale)
Call SetOEMDRO(61,ZScale)
Sleep(250)
Exit Sub ' Exit if in Machine Coordinates
End If

If GetOemLED(825)<>0 Then
Message "Probe Grounded - Check connection and try again"
Call SetOEMDRO(59,XScale)
Call SetOEMDRO(60,YScale)
Call SetOEMDRO(61,ZScale)
Sleep(250)
Exit Sub ' Exit if probe is tripped
End If


Code "G90"
Sleep(125)



Message "Probing for Y Center....."
Sleep(1000) 'Pause 1 second
Code "F" & FRate1
Sleep(125)
Code "G31 Y" & ProbeLengthY
While IsMoving()
Wend
YHit1 = GetVar(2001)
Y1 = YHit1 + ProbeD/2 + YOffset 'Tool position at probe hit.


If FRate2=0 Then
Code "G0 Y" & YStart
While IsMoving()
Wend
Else
Code "G0 Y" & YHit1 - ProbeD/4
While IsMoving()
Wend
End If


If FRate2<>0 Then
Code "F" & Frate2
Sleep(150)
Code "G31 Y" & ProbeLengthY
While IsMoving()
Wend
YHit1 = GetVar(2001)
Y1 = YHit1 + ProbeD/2 + YOffset 'Tool position at probe hit.

Code "G0 Y" & YStart
While IsMoving()
Wend

End If

ProbeLengthY = YStart-DMax

Code "F" & FRate1
Sleep(125)
Code "G31 Y" & ProbeLengthY
While IsMoving()
Wend
YHit2 = GetVar(2001)
Y2 = YHit2 - ProbeD/2 - YOffset 'Tool position at probe hit.




If FRate2<>0 Then

Code "G0 Y" & YHit2 + ProbeD/4
While IsMoving()
Wend

Code "F" & Frate2
Sleep(150)
Code "G31 Y" & ProbeLengthY
While IsMoving()
Wend
YHit2 = GetVar(2001)
Y2 = YHit2 - ProbeD/2 - YOffset 'Tool position at probe hit.

End If

YPos = (Y1+Y2)/2


If ZeroYN = 1 then
Code "G0 Y" & YPos
While IsMoving()
Wend

SetOEMDRO(801,0)
Sleep(150)
Else

Code "G0 Y" & YStart
While IsMoving()
Wend

End If



YCenter = Cstr(YPos)


PathLength = Len(YCenter)
For X = 2 To PathLength Step 1
lstring=Mid(YCenter,X,PathLength-X+1)

If Left(lstring,1) = "." Then
LabelLength = X+5
Exit For
End If

Next X

YCenter=Left(YCenter, LabelLength)

Message "Y Center Found.........."
Sleep(150)



'X Probing
'//////////////////////////////


ProbeLengthX = XStart - DMax


Message "Probing for X Center....."
Sleep(250) 'Pause 1/4 second
Code "F" & FRate1
Sleep(125)
Code "G31 X" & ProbeLengthX
While IsMoving()
Wend
XHit1 = GetVar(2000)
X1 = XHit1 - ProbeD/2 - XOffset 'Tool position at probe hit.


If FRate2=0 Then
Code "G0 X" & XStart
While IsMoving()
Wend
Else
Code "G0 X" & XHit1 + ProbeD/4
While IsMoving()
Wend
End If


If FRate2<>0 Then
Message "Slow Probing for X position....."
Sleep(100) 'Pause 1/10 second
Code "F" & Frate2
Sleep(150)
Code "G31 X" & ProbeLengthX
While IsMoving()
Wend
XHit1 = GetVar(2000)
X1 = XHit1 - ProbeD/2 - XOffset 'Tool position at probe hit.

Code "G0 X" & XStart
While IsMoving()
Wend

End If


ProbeLengthX = XStart + DMax


Message "Probing for X Center....."
Sleep(250) 'Pause 1/4 second
Code "F" & FRate1
Sleep(125)
Code "G31 X" & ProbeLengthX
While IsMoving()
Wend
XHit2 = GetVar(2000)
X2 = XHit2 + ProbeD/2 + XOffset 'Tool position at probe hit.


If FRate2=0 Then
Code "G0 X" & XStart
While IsMoving()
Wend
Else
Code "G0 X" & XHit2 - ProbeD/4
While IsMoving()
Wend
End If


If FRate2<>0 Then

Message "Slow Probing for X position....."
Sleep(100) 'Pause 1/10 second
Code "F" & Frate2
Sleep(150)
Code "G31 X" & ProbeLengthX
While IsMoving()
Wend
XHit2 = GetVar(2000)
X2 = XHit2 + ProbeD/2 + XOffset 'Tool position at probe hit.



End If

XPos = (X1+X2)/2



If ZeroYN = 1 then
Code "G0 X" & XPos
While IsMoving()
Wend
SetOEMDRO(800,0)
Sleep(150)
Else

Code "G0 X" & XStart
While IsMoving()
Wend

End If

XCenter = Cstr(XPos)


PathLength = Len(XCenter)
For X = 2 To PathLength Step 1
lstring=Mid(XCenter,X,PathLength-X+1)

If Left(lstring,1) = "." Then
LabelLength = X+5
Exit For
End If

Next X

XCenter=Left(XCenter, LabelLength)

Message "X Center Found.........."
Sleep(150)









SetUserLabel (9,XCenter)
SetUserLabel (10,YCenter)


Code "F" & CurrentFeed ' Reset to original feed rate


If CurrentAbsInc = 0 Then 'if G91 was in effect before then return to it
Code "G91"
End If

Call SetOEMDRO(59,XScale)
Call SetOEMDRO(60,YScale)
Call SetOEMDRO(61,ZScale)
Sleep(250)

Message "Center Found"

If GetOemLED(1872) Then SetUserLED(1870,0)


End Sub
Если ты не можешь решить проблему, значит это не твоя проблема!
Мой канал на YouTube: YouTube
ЧПУ "Бобр" 600x500 мм
shalek64@gmail.com
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

konyshevk писал(а):Вот отсюда кое-что можно взять , это с оф. саита мача , Много примеров . есть с чем поэксперементировать . на английском
Спасибо, по Вашей ссылке вижу про sin, cos и т.п.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

Сергей Саныч писал(а):А просто Xnew = сos(0.31) не сработает?
Да, так должно.
Что же Вы сразу не написали если знали.
Любите помучать :hehehe:
konyshevk
Почётный участник
Почётный участник
Сообщения: 740
Зарегистрирован: 19 апр 2014, 22:09
Репутация: 696
Откуда: Челябинск
Контактная информация:

Re: Скрипты для MACH3.

Сообщение konyshevk »

konyshevk писал(а):привязку по краю с поворотом сделал , могу скинуть , вожусь с центром
Вот примерно так на видео , специально биение щупа делал 1мм , разбег по привязки меньше сотки
https://www.youtube.com/watch?v=ojzfXr1ARI8
мучился два дня , мозг закипел, с в. бейсиком все ясно но вот из него в мачь и обратно это тяжело .

Code "G04 p0.2"
Code "G91"
Call SetDRO(0,0)
Code "G04 p0.2"

Code "G31 X1000 F500"
While IsMoving()
Wend
a = GetDRO(0)
Code "G1 X-1 F500"
Code "G04 p0.2"
Code "G1 c0.5 F100"
Code "G31 X1000 F500"
While IsMoving()
Wend
b = GetDRO(0)
Code "G1 X-1 F500"
Code "G1 c-0.5 F100"
d=((a+b)/2)
Code "G04 p0.2"

Call SetDRO(0,d)
Code "G04 p0.2"
Code "G90"
Code "G04 p0.2"
Code "G1 X0 f500"
Code "G04 p0.2"
Call SetDRO(0,-1.67)

У меня С - это шпиндель 1 = 1оборот
1.67 подбирал компенсация диаметра шарика (радиус примерно - мертвая зона до сработки датчика))
Даешь коллективный разум !
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

konyshevk, с математическими функциями разобрался, спасибо !!!
И тоже мозг уже кипит, не могу победить G92.
Догадываюсь, что всё делается легко и просто, но никак.
Ассемблер блин в стопицот раз проще.
У меня Call SetDRO(0,0) и Call SetDRO(1,0) устанавливают в окошке мача нули, а в - "Сдвиг по G92" диаметр отверстия минус диаметр щупа всегда получается и когда в режим абсолютного позиционирования возвращаюсь для дальнейшей работы УП, эти сдвиги прибавляются к нулевым координатам и капец ((((((((((((((
Когда скрипт центроискателя под себя делал, 2 вечера не смог добиться обнуления G92 и форумчане ничего по этому поводу не знают ((((
Помучаюсь эти выходные и заброшу, придётся видимо выписывать значения, делить калькулятором.
konyshevk
Почётный участник
Почётный участник
Сообщения: 740
Зарегистрирован: 19 апр 2014, 22:09
Репутация: 696
Откуда: Челябинск
Контактная информация:

Re: Скрипты для MACH3.

Сообщение konyshevk »

Я сам наполовину (методом тыка) домучил , знал-бы помог :wik:
Даешь коллективный разум !
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

Не понимаю, зачем у Вас в скрипте используется G91 ? Немного проще и всё, а потом гемор с G92.
У меня оно тоже присутствует, из-за этого и в G92 всякая хрень вылезает.
Сейчас попробую переписать скрипт только в абсолютных координатах.
konyshevk
Почётный участник
Почётный участник
Сообщения: 740
Зарегистрирован: 19 апр 2014, 22:09
Репутация: 696
Откуда: Челябинск
Контактная информация:

Re: Скрипты для MACH3.

Сообщение konyshevk »

G91 относительная система координат
я в нее перешел обнулил окно Х , замерил расстояние от текущего положения датчика до детали
двумя положениями шпинделя , высчитал среднее и эта точка стала нулем за минусом радиуса шарика
Call SetDRO(0,d)
Code "G04 p0.2"
Code "G90"
Code "G04 p0.2"
Code "G1 X0 f500"
Code "G04 p0.2"
Call SetDRO(0,-1.67)
А вот это место я толком не понял как работает :thinking: - но работает правильно (на десять раз проверил) :hehehe:
Даешь коллективный разум !
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Скрипты для MACH3.

Сообщение putman »

Сейчас лопнет голова.

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

Call SetDRO(0,0) 'Обнуление оси X
Верно ли я понял, эта командо обнуляет значение в окошке оси Х ?
Вот выполняю этот скрипт:

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

Code "G04 p0.25" 'пауза 0.5 c
Code "G31 X-1000 F200" ' двигаться по +Х на 1м до касания щупом  
While IsMoving() 
Wend ' дождаться конца движения

Call SetDRO(0,0) ' обнулить данные в окне X            -=( 1 )=-
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 x0.25" '
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 X1000" ' двигаться по -X на 1м до касания щупом
While IsMoving() 
Wend ' дождаться конца движения           

Code "G04 p0.25" ' пауза 0.5 с
Xnew = GetDRO(0) - 0.25
Code "G01 x"&Xnew 
Xnew = (Xnew+0.25)/2
Code "G01 x"&Xnew  
Code "G04 p0.25" ' пауза 0.5 с
Call SetDRO(0,0) ' обнулить данные в окне X                 -=( 2 )=-
На вид строчки -=( 1 )=- и -=( 2 )=- одинаковые, но в MACH они творят чудеса.
Первая строчка обнуляет значение в окошке Х.
Вторая же, почему то вычитает из нуля, то что в данный момент находится в окне Х.
Т.е. после её выполнения там не нуль, а (-1.8), до выполнения было 1.8.
Такие вот чудеса.
Подскажите, КАК ???
Ответить

Вернуться в «Windows / Mach»