Программная корректировка пропуска шагов

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Программная корректировка пропуска шагов

Сообщение Urx »

Здравствуйте! Я недавно собрал свой первый бюджетный станок ЧПУ. Возможности у него скромные, но и вложения невелики. Управляется под LinuxCNC 2.5 Ubuntu 10.02.В режиме конфигуратора StepConf гонял оси взад-вперед, сильного пропуска шагов не заметил. Но когда делал черновую обработку стружколомом в несколько слоев простого деревянного стакана эти слои сильно смещались от слоя к слою вдоль самой "бегающей" оси при растровой обработке - Х, и немного сместились по Y.
Исходя из самых простейших решений, пришла следующая идея. Время от времени, через определенное количество "телодвижений" шаговиков, запоминать положение, делать паузу, останавливать шпиндель, поднимать фрезу над заготовкой и выполнять хоминг (я обнуляю посредством контакта заземленной фрезы с пластинкой из фольгированного текстолита, наклеенной на угол заготовки и соединенной с контактом all home). Далее, после корректировки, продолжать прерванную программу. Пусть при этом выполнение работы будет дольше, зато гарантированно смещение из-за пропуска в допустимых пределах, регулируемых только числом шагов между корректировками.
Как это сделать программно и автоматизировать процесс - в этом я полный чайник, прошу знающих людей подсказать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение aftaev »

Urx писал(а):Время от времени, через определенное количество "телодвижений" шаговиков, запоминать положение, делать паузу, останавливать шпиндель, поднимать фрезу над заготовкой и выполнять хоминг
во придумал :)
Urx писал(а):Как это сделать программно и автоматизировать процесс
энкоедры на шаговики для ослеживания пропуска шагов, а вообще станок не должен шаги пропускать.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

aftaev писал(а):
Urx писал(а):Время от времени, через определенное количество "телодвижений" шаговиков, запоминать положение, делать паузу, останавливать шпиндель, поднимать фрезу над заготовкой и выполнять хоминг
во придумал :)
Хотите сказать это нельзя сделать программно, внедрив свой код в УП?
aftaev писал(а):энкоедры на шаговики для ослеживания пропуска шагов, а вообще станок не должен шаги пропускать.
Это я понимаю, и всячески борюсь. Энкодеры на шаговики - как сделать это с минимальными финансовыми вложениями? Я думал над этим - магнит+геркон, 400 полушагов за оборот, и если больше 400, эту разницу подавать на комп, но вот потом как "подружить" это с LinuxCNC...на этом мысль останавливается. Думаю первый вариант был бы проще и финансово, и программно.
Могут ли быть пропуски из-за того что станок не заземлен, при прикасании к соединенной с нулем питания фрезе чуть чуть так "побивает" током?
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

Есть еще вариант - на уровне Арткам разбить траекторию на несколько. Буду думать в этом направлении, если в LinuxCNC ничего не получится.
Может есть возможность написать внешнюю параллельно работающую программу которая отслеживает внутренние переменные Linuxcnc и делает над этой прогой какие-то действия?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Nick »

Urx писал(а):Хотите сказать это нельзя сделать программно, внедрив свой код в УП?
Хоуминг делать прямо в процессе выполнения наверное не выйдет.
Но можно делать доп смещение по осям.
Делаем так: раз в какое-то время делаем probe на пластинку, и потом G92 X0Y0Z0 или ныжное значение.

Т.е. будет что-то вроде:
G53 G0 Z10
G53 G0 Xпробы Yпробы
G38.2 Z-100
G92 X0
ну и потом возвращаемся в рез.
В принципе, можно и запомнить текущие координаты, в последних версиях есть переменные #<_x>, #<_y>, #<_z>. (в более ранних версиях они численные, а еще раньше из вообще нет...)
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

Спасибо, Nick.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

Я так понял, probe физически - это тот же хоуминг, только без повторной перепроверки на пониженной скорости. А программно - он не меняет абсолютные координаты, а только устанавливает значения переменных (параметры 5061-5069). И на этих переменных мы делаем смещения.
А этот код должен стоять в теле основной работающей УП, или его можно "привязать" к кнопке и запускать в паузе? Если можно привязать к кнопке, скажите пожалуйста как это сделать?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Nick »

Urx писал(а):Я так понял, probe физически - это тот же хоуминг, только без повторной перепроверки на пониженной скорости.
Не совсем - probe можно сделать двойным

F1000
g38.2 Z-100
F10
g38.4 Z100

Основное отличие, что не меняются привязки станка - в основном поиск home нужен, чтобы linuxCNC знал, где находятся пределы осей.
Urx писал(а): И на этих переменных мы делаем смещения.
Не, все гораздо проще, ты заранее знаешь где у тебя датчик, и какое значение должно быть при касании датчика. поэтому сразу после последнего G38 пишем G92 X-- Y-- Z-- и ставим известные координаты.
Urx писал(а):А этот код должен стоять в теле основной работающей УП, или его можно "привязать" к кнопке и запускать в паузе? Если можно привязать к кнопке, скажите пожалуйста как это сделать?
К кноппе очень не просто и пока несколько коряво - основная проблема - на паузе нельзя ничего выполнять, надо останавливать программу и потом запускать с предыдущей строчки... и практически все в ручную... в общем не удобно...

А вот если вставить в Gкод - то никаких проблем.

В принципе, можно добавить в Gкод процедуру, котораяраз в какое-то время, например при холостом прогоне будет проверять, не нажимали ли кнопку, и если нажимали - то будет ехать проверяться...
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

Nick писал(а):Не, все гораздо проще, ты заранее знаешь где у тебя датчик, и какое значение должно быть при касании датчика. поэтому сразу после последнего G38 пишем G92 X-- Y-- Z-- и ставим известные координаты.
Если датчик стоит в координате 0,0,0, то пишем G92 X0 Y0 Z0 ? Независимо от того были ли пропуски или нет?
Nick писал(а):К кноппе очень не просто и пока несколько коряво - основная проблема - на паузе нельзя ничего выполнять, надо останавливать программу и потом запускать с предыдущей строчки... и практически все в ручную... в общем не удобно...
В винде можно было макросы записывать, в линухе нет такого? Нашел вот это:
http://xmacro.sourceforge.net/
http://lug.zp.ua/ru/content/xmacro
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Nick »

Urx писал(а):Если датчик стоит в координате 0,0,0, то пишем G92 X0 Y0 Z0 ? Независимо от того были ли пропуски или нет?
Да, только есть одно но, если станок будет долго пропускать шаги в конце концов эти дополниительные сдвиги могут выйти за пределы програмной оси в LinuxCNC и он откажется дальше выполнять задачу. Т.е. лучше раз в какое-то время делать homing осей.
G92 - просто смещает систему координат, так чтобы указанные оси приняли заданные значения.

А еще лучше настроить движки так, чтобы они шаги не пропускали.
Urx писал(а):В винде можно было макросы записывать, в линухе нет такого? Нашел вот это:
Какие именно макросы нужны?
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

Nick писал(а):Какие именно макросы нужны?
Вот список действий.
1. Делать полный останов,
2. поднимать Z на безопасное расстояние (эмуляция Z,нажать +, задержка, отпустить +),
3. Х и У в координаты 10, 10.
4. хоме всех трех осей (эмуляция ctrl-home),
5. поднимать Z на безопасное расстояние,
6. запустить шпиндель,
7. продолжить с предыдущей строки.

В случае с XMacro, вроде всё понятно кроме пп. 3 и 7.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Nick »

Лучше вставить все это в Gкод.. .
В принципе можно сделать и как ты говоришь... все это можно выполнить через консоль -
перемещение в точку - по MDI:
http://www.linuxcnc.org/docs/2.4/html/g ... ml#sub:MDI
homing - http://www.linuxcnc.org/docs/2.4/html/g ... tml#r1_2_6
а значение пинов можно выставлять хоть через консоль:
halcmd setp halui.home-all 1
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение aftaev »

Urx писал(а):Вот список действий.
1. Делать полный останов,
2. поднимать Z на безопасное расстояние (эмуляция Z,нажать +, задержка, отпустить +),
3. Х и У в координаты 10, 10.
4. хоме всех трех осей (эмуляция ctrl-home),
5. поднимать Z на безопасное расстояние,
6. запустить шпиндель,
7. продолжить с предыдущей строки.
Urx, если у твоей машине в банзобаке будет течь которая позволит только литр бензина наливать, ты будешь через несколько км. возвращаться на заправку или все же течь устранишь?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

Nick, спасибо. А как продолжить с предыдущей строки через консоль?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Nick »

Вот это сложнее :)
В этой теме было подробнее, только там пришлось код axis менять... LinuxCNC реверс Gкода #45
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

aftaev писал(а):Urx, если у твоей машине в банзобаке будет течь которая позволит только литр бензина наливать, ты будешь через несколько км. возвращаться на заправку или все же течь устранишь?
А это может быть от отсутствия заземления в гараже? Рядом холодильник работает. На мне потенциал относительно ноля питания 30в, на ноле питания относительно пола гаража 2в. Или всё это ерунда и надо только кольца ферритовые поставить, намотав провод, около шаговиков? Может заэкранировать плату опторазвязки? Может дело в шпинделе Энкор-850 ФМЭ - помехи, так как неэкранированные провода? Узнать бы что именно влияет больше всего. Для этого может пригодиться этот макрос. При этом его надо дополнить каким нибудь звуковым сигналом, который подается если есть пропуски, и не подается, если их нет. Убирая те или иные факторы можно исключить пропуски.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11731
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение michael-yurov »

Urx писал(а):Рядом холодильник работает.
В момент разрыва реле холодильника могут быть сбои.
Коллекторный шпиндель - тоже не подарок.
Ферриты нужно не на провода шаговиков ставить, а на LPT кабель.
Питание платы опторазвязки должно быть или отдельное, или, в крайнем случае от компьютера.
К плате не должно быть ничего подключено кроме драйверов с опторазвязкой на входе, и концевиков, которые больше ни с чем не имеют общих электрических связей.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Urx »

michael-yurov писал(а):
Urx писал(а):Рядом холодильник работает.
В момент разрыва реле холодильника могут быть сбои.
Коллекторный шпиндель - тоже не подарок.
Ферриты нужно не на провода шаговиков ставить, а на LPT кабель.
Питание платы опторазвязки должно быть или отдельное, или, в крайнем случае от компьютера.
К плате не должно быть ничего подключено кроме драйверов с опторазвязкой на входе, и концевиков, которые больше ни с чем не имеют общих электрических связей.
Еще немного по поводу питания. Напряжение в сети низкое, питаю через автотрансформатор с повышением на 10в, потом стоит УПС Smart UPS 1000, от него питается комп и контроллеры, а фрезер идёт отдельно, чисто от розетки, отдельным проводом, холодильник тоже работает от отдельного провода от розетки. Может холодильник питать через сетевой фильтр?
LPT кабель обычный жгут проводов, может заменить на плоский кабель?
Опто со стороны компа питается от раздельного питания. К ней подключены драйвера, концевики и на ней разведены транзисторы управления реле включения шпинделя.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение nkp »

Urx писал(а):как продолжить с предыдущей строки через консоль?
продолжить с нужной строки не проблема:

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

$ python
>>>
import linuxcnc
c = linuxcnc.command() 
program_start_line = 13
c.mode(linuxcnc.MODE_AUTO)
c.auto(linuxcnc.AUTO_RUN, program_start_line)
это понятно - рестарт с 13 строки
а вот чтоб с предыдущей - тут немного доработка нужна...
дело в том , что после стоп у нас не "запоминается" номер строки...
вот мы его и достаем ,как вариант,компонентом minmax
теперь после остановки стартуем с [minmax.N.max -1]
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Программная корректировка пропуска шагов

Сообщение Nick »

nkp писал(а):что после стоп у нас не "запоминается" номер строки...
можно его при нажатии кнопки сохранять...
Ответить

Вернуться в «LinuxCNC»