Re: Тяжелый станок из блоков люмишки и полимергранита 600*60
Добавлено: 07 окт 2018, 11:52
Пиши на почту
Статьи, обзоры, цены на станки и комплектующие.
https://www.cnc-club.ru/forum/
Да, проверялась. Все детали проверяю линейкой шд1000 и рамным уровнем, как ни странно , но все ровные, даже шабрить ничего не нужно.Umnik писал(а):А точность станка, на котором резались детали, как то проверялась?
А как геометрия получившихся деталюх - устраивает?
Код: Выделить всё
[code] ActivateSignal(OUTPUT2)
ProbeFeed = 500 'Скорость перемещения фрезы при поиске
ProbeDist = 300 ' Расстояние с запасом до краев отверстия. Если отверстие большое - увеличить до диаметра
ProbeDistA = 100 ' rasstoianie vidvizhenie centroiskatela
HuiX = 124 'юстировочные координаты расстояния между центром фрезы и центроискателем
HuiY = 3.4 'юстировочные координаты расстояния между центром фрезы и центроискателем
Code "G4 P0.5" 'пауза 1 секунда
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
If GetOemLed (825) <> 0 Then 'Если фреза касается края отверстия выводим
DoButton(21) ' выводим в ошибку и жмем кнопку ресет
Code "(Probe plate is grounded, check connection and try again)"
Else
FeedCurrent = GetOemDRO(818) ' Запоминаем текущую скорость
XCurrent = GetDro(0)
YCurrent = GetDro(1)
Code "G17 G0 G53 Z-100" ' переежжаем по машинным координатам к высоте по Z -100
While IsMoving ()
Wend
Code "G4 P0.3" ' Пауза в 0.3 секунду на всякий случай
YCenter0 = YCurrent - HuiY ' смещаемся к центроискателю
XCenter0 = XCurrent - HuiX
Code "G0 Y" &YCenter0
While IsMoving () ' ждем пока едет
Wend
Code "G0 X" &XCenter0
While IsMoving () ' ждем пока едет
Wend
XCurrent = GetDro(0)
YCurrent = GetDro(1) ' повторно запрашиваем координаты
ACurrent = GetDro(3)
ZCurrent = GetDro(2)
Code "G4 P0.3" ' Пауза в 0.3 секунду на всякий случай
ANew = Acurrent - ProbeDistA' едем центроискателем вниз до касания
Code "G0 A" &ANew
While IsMoving() ' ждем пока коснется или остановится
Wend
Code "G4 P0.3" ' Пауза в 0.3 секунду на всякий случай
ZNew = Zcurrent - ProbeDist ' едем центроискателем вниз до касания
Code "G31 Z" &ZNew
While IsMoving() ' ждем пока коснется или остановится
Wend
ZPos1 = GetVar(2002) 'предполагаем, что коснулись и считываем Z
ZPos2 = ZPos1 + 5
Code "G0 Z" &ZPos2 'поднимаем щуп чтобы не задевало оправкой
Code "F800"'Устанавливаем скорость поиска G31
YNew = YCurrent + ProbeDist ' Точка за пределами отверстия
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos1 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
Code "G0 Y" &YCurrent
YNew = YCurrent - ProbeDist ' Точка за пределами отверстия
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos2 = GetVar(2001) ' предполагаем, что коснулись и считываем Y2
YCenter = (YPos1 + YPos2) / 2 ' так как отверстие круглое и фреза круглая, то центр по Y в середине
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
Code "G0 Y" &YCenter
While IsMoving () ' ждем пока едет
Wend
Code "G4 P0.5" ' Пауза в 1 секунду на всякий случай
XNew = Xcurrent - ProbeDist ' Точка за пределами отверстия
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos3 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
Code "G0 X" &XPos3+0.4' отьезжаем на расстояние которое может образоваться от погрешности при первом скоростном измерении
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos5 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
Code "G0 X" &XPos5+0.2' при уточняющем измерении погрешность не должна выходить за 0.1 берем растояние с апасом
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos6 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
If Abs (Abs (XPos6) - Abs (XPos5)) > 0.06 Then ' если погрешность слишком большая и больше 0.1 мм
DoButton(21) ' выводим в ошибку и жмем кнопку ресет
Else
XPos1 = (XPos6 + XPos5) / 2 ' если нет вычисляем среднее значение между последними двумя измерениями
End If
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
Code "G0 X" &XCurrent 'быстро возвращаемся в исходную позицию
XNew = XCurrent + ProbeDist ' Точка за пределами отверстия
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos3 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
Code "G0 X" &XPos3-0.4' отьезжаем на расстояние которое может образоваться от погрешности при первом скоростном измерении
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos5 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
Code "G0 X" &XPos5-0.2' при уточняющем измерении погрешность не должна выходить за 0.06 берем растояние с апасом
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 X" &XNew
While IsMoving() ' ждем пока коснется или остановится
Wend
XPos6 = GetVar(2000) 'предполагаем, что коснулись и считываем X1
If Abs (Abs (XPos5) - Abs (XPos6)) > 0.06 Then
DoButton(21)
Else
XPos2 = (XPos6 + XPos5) / 2
End If
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
XCenter = (XPos1 + XPos2) / 2 ' так как отверстие круглое и фреза круглая, то центр по Х в середине
Code "G0 X" &XCenter ' быстро устанавливаем в центр по Х
Code "G4 P0.5" ' Пауза в 1 секунду на всякий случай
YNew = Ycurrent - ProbeDist ' Точка за пределами отверстия
Code "G31 Y" &YNew
While IsMoving() ' ждем пока коснется или остановится
Wend
YPos3 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
Code "G0 Y" &YPos3+0.6' отьезжаем на расстояние которое может образоваться от погрешности при первом скоростном измерении
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 Y" &YNew
While IsMoving() ' ждем пока коснется или остановится
Wend
YPos5 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
Code "G0 Y" &YPos5+0.3' при уточняющем измерении погрешность не должна выходить за 0.1 берем растояние с апасом
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 Y" &YNew
While IsMoving() ' ждем пока коснется или остановится
Wend
YPos6 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
If Abs (Abs (YPos6) - Abs (YPos5)) > 0.06 Then ' если погрешность слишком большая и больше 0.06 мм
DoButton(21) ' выводим в ошибку и жмем кнопку ресет
Else
YPos1 = (YPos6 + YPos5) / 2 ' если нет вычисляем среднее значение между последними двумя измерениями
End If
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
Code "G0 Y" &YCurrent 'быстро возвращаемся в исходную позицию
YNew = YCurrent + ProbeDist ' Точка за пределами отверстия
Code "G31 Y" &YNew
While IsMoving() ' ждем пока коснется или остановится
Wend
YPos3 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
Code "G0 Y" &YPos3-0.6' отьезжаем на расстояние которое может образоваться от погрешности при первом скоростном измерении
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 Y" &YNew
While IsMoving() ' ждем пока коснется или остановится
Wend
YPos5 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
Code "G0 Y" &YPos5-0.3' при уточняющем измерении погрешность не должна выходить за 0.1 берем растояние с апасом
Code "F10" 'Устанавливаем скорость поиска G31
Code "G31 Y" &YNew
While IsMoving() ' ждем пока коснется или остановится
Wend
YPos6 = GetVar(2001) 'предполагаем, что коснулись и считываем Y1
If Abs (Abs (YPos5) - Abs (YPos6)) > 0.06 Then
DoButton(21)
Else
YPos2 = (YPos6 + YPos5) / 2
End If
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
YCenter = (YPos1 + YPos2) / 2 ' так как отверстие круглое и фреза круглая, то центр по Х в середине
Code "G0 Y" &YCenter ' быстро устанавливаем в центр по Y
Code "F1000"'Устанавливаем скорость поиска G31 для быстрого перемещения щупа вверх
ANew2= -ANew + 5
Code "G31 A" &ANew2
While IsMoving() ' ждем пока коснется или остановится
Wend
Code "F" &ProbeFeed 'Устанавливаем скорость поиска G31
APos3 = GetVar(2003) 'предполагаем, что коснулись и считываем X1
APos4 = APos3 - 1
Code "G0 A" &APos4 'быстро возвращаемся в исходную позицию
YCenter1 = YCenter + HuiY
XCenter1 = XCenter + HuiX
Code "G0 Y" &YCenter1
While IsMoving () ' ждем пока едет
Wend
Code "G0 X" &XCenter1
While IsMoving () ' ждем пока едет
Wend
Code "G17 G0 G53 Z-150" ' переежжаем по машинным координатам к высоте по Z -150
While IsMoving ()
Wend
While IsMoving () ' ждем пока едет
Wend
Code "F" &FeedCurrent ' восстанавливаем скорость
End If
DeActivateSignal(OUTPUT2)
Ну если говорить об времени измерений, то отступ стелан на о.2 мм, и это расстояние на 10мм/мин преодалевается относительно быстро. Мне кажется в моем случае скорость нужно подбирать исходя по польшей части из вибраций , которых вроде как оказалось и не наблюдается, а так думаю чем медленнее тем точнее. Может быть при 30 мм/мин ускорение уже мгновенное и разници в замерах не будет и смысла уже делать медленнее нет, но у меня все с запасом как всегда, да и скрипт будет работать максимально быстро все равно.nik1 писал(а):А не медленно 10мм /мин?
От центроискателя на пружине придется отказатьсяraddd писал(а):Я так понял датчик работает на контакт с металлической поверхностью?
И щуп его пружина?
Но пружина самая не термостабильная штука для данного применения.
Будет очень играть от температуры и времени.
Думаю пока это единственный выход из ситуации.nik1 писал(а):Поставь обычный на шарах, если купить дорого, то можешь сделать сам