LINUX.ORG.RU
ФорумTalks

Fanuc CNC G28

 ,


0

1

Али есть специалисты по Фанукам? (Надежда маленькая, но а вдруг?)

Проблема такая: Фрезерный станок. При команде G28 X0 Y0 Z0 (или по любой из осей) доезжает до ноля, останавливается на долю секунды и выбегает за пределы. При этом в Distance to go появляется огромное число, которое тут же пропадает из-за ошибки. Происходит это не всегда и если убегает, то на разное расстояние, но при этом, по два-три раза с очень близкими значениями.

Свои догадки пока высказывать не буду, чтобы не сбивать с толку.

Ваши предположения?

Deleted

А ты в режиме абсолютных координат находишься? Это твоя единственная команда в программе? Попробуй до G28 дописать G90 или G91.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Да, это первое что проверялось. И станок, когда я приехал, был вообще «намертво» выставлен в Incremental coordinates, из-за чего они даже просто выйти в ноль не могли даже с G0. А так, и с G90 и с G91 и вручную и в программе, иногда остановится правильно, иногда одна ось выбежит, иногда другая, иногда все. Останавливаются и тут-же в бегут дальше. При этом G0, G1 и т.д. отрабатывают как часы.

И ещё, забыл написать, вообще не работают операции Home. Я впервые такое вижу.

Deleted
()
Последнее исправление: Chelobaka (всего исправлений: 2)
Ответ на: комментарий от ncrmnt

Да, тоже сделано. Но, может какую хитрость пропустил?

Deleted
()
Ответ на: комментарий от Deleted

Тогда еще G30 можно потестировать для чистоты эксперимента. По твоему поведению больше похоже (если не датчики только слетают), что он приехал в reference point, но почему-то подумал, что попал в intermediate, и далее едет к какой-то непонятной reference точке. То есть ошибка в определении своего местоположения.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)

При команде G28 X0 Y0 Z0

А ты пробовал G28 указывать не с нулевыми координатами? Пусть будет некая промежуточная точка. В этом случае, как он поведет себя? Из нуля снова попытается съехать куда-то?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Я вот вообще думаю, это станок глючит или кто шаловливыми ручками полазил по регистрам? Короче, откопаю бэкап, накачу, потом видно будет.

Но что не даёт покоя - эти убегания не постоянны. Если просто сбой в определении референсной точки в следствие неправильных параметров, то почему не всегда и по разному?

Ладно, спасибо за помощь, пойду спать, устал. Утро вечера мудреннее

Deleted
()
Ответ на: комментарий от Deleted

Кстати, тогда останавливается где надо.

Тут имеется в виду, что он останавливается в промежуточной точке или в reference (после промежуточной)?

Если просто сбой в определении референсной точки в следствие неправильных параметров, то почему не всегда и по разному?

Все зависит от того, чем он измеряет возврат в референсную точку и чем координаты. Предположу, что это разные датчики. Координаты, например, может энкодером, а референcную какими-нибудь оптическими датчиками или концевиками. Возможно, что когда intermediate установлена в X0 Y0 Z0 он приезжает в reference, датчики reference не сработали. Станок думает: «Ой, где это я? Вроде приехал, а датчики молчат». И едет не пойми куда. Это я фантазирую, конечно. :) В общем, он может посчитать, что он еще не доехал в reference и трогается в какую-то не ту сторону.

Или же он в районе reference неправильно определяет свои фактические координаты. Можно попробовать в качестве intermediate указывать точки близкие к reference и также подальше от нее. Тогда можно проверить, стабильно ли он приходит в начало.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Возможно, что когда intermediate установлена в X0 Y0 Z0 он приезжает в reference, датчики reference не сработали.

То есть координатные перемещения (даже до X0 Y0 Z0) станок измеряет другим датчиком и этот датчик работает. Поэтому с обычными координатными перемещениями и нет проблем у тебя. А G28 из двух этапов состоит: смотрит куда приехал по координатам, а далее по текущим координатам intermediate высчитывает траекторию, чтобы попасть в reference и запускает механизм перемещения, слушая уже концевики на осях, а не координатные датчики.

Когда же он по координатным датчикам приехал в X0 Y0 Z0, то далеко не факт, что концевики сработали. И вот если они не сработали, а координата у него записана как 0, 0, 0, то он не ясно как соображает, куда ему ехать. А вдруг он чуть-чуть отрицательную координату получил в реальности, когда ехал в 0, 0, 0? Например, из-за погрешности позиционирования, то есть, например, 0.1, -0.01, 0.15. И вот это отрицательное число Y он мог рассмотреть, как положительную координату, а она получается очень большой (наверняка их хранит в integer). И вот поэтому едет в непонятном направлении.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 4)
Ответ на: комментарий от Zubok

Ох, спасибо дружище. Зря я не написал, что я уже сделал, теперь ты просто идёшь по моей логической цепочке. :) Хотя, кто его знает, может я и упустил чего с концевиками, ещё раз проверю, а потом забабахаю бэкап.

Спасибо ещё раз и извини, что загрузил тебя своей работой :)

Deleted
()
Ответ на: комментарий от Zubok

Ну вот, всё и выяснилось. Проблема была в концевиках. Их просто надо было хорошенечко продрочить и всё заработало.

Просто недостаточно быстро отходил солдатик концевика, что и сбивало комп с толку. Хе-хе, я эту проблему решил за два присеста, а спишалист, который этим занимается угрохал на это месяц и сделал ласты :)

Спасибо ещё раз за размышления. Ты заставил меня вернуться назад и перепроверить. С меня пузырь :)

Deleted
()
Ответ на: комментарий от Zubok

Ну, да, но именно твои размышления меня подтолкнули к перепроверке.

Ладно, давайте втроём, встретимся на границе, да раздавим по пузырю :)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.