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

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Программная корректировка пропуска шагов
во придумалUrx писал(а):Время от времени, через определенное количество "телодвижений" шаговиков, запоминать положение, делать паузу, останавливать шпиндель, поднимать фрезу над заготовкой и выполнять хоминг
энкоедры на шаговики для ослеживания пропуска шагов, а вообще станок не должен шаги пропускать.Urx писал(а):Как это сделать программно и автоматизировать процесс
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Re: Программная корректировка пропуска шагов
Хотите сказать это нельзя сделать программно, внедрив свой код в УП?aftaev писал(а):во придумалUrx писал(а):Время от времени, через определенное количество "телодвижений" шаговиков, запоминать положение, делать паузу, останавливать шпиндель, поднимать фрезу над заготовкой и выполнять хоминг
Это я понимаю, и всячески борюсь. Энкодеры на шаговики - как сделать это с минимальными финансовыми вложениями? Я думал над этим - магнит+геркон, 400 полушагов за оборот, и если больше 400, эту разницу подавать на комп, но вот потом как "подружить" это с LinuxCNC...на этом мысль останавливается. Думаю первый вариант был бы проще и финансово, и программно.aftaev писал(а):энкоедры на шаговики для ослеживания пропуска шагов, а вообще станок не должен шаги пропускать.
Могут ли быть пропуски из-за того что станок не заземлен, при прикасании к соединенной с нулем питания фрезе чуть чуть так "побивает" током?
Re: Программная корректировка пропуска шагов
Есть еще вариант - на уровне Арткам разбить траекторию на несколько. Буду думать в этом направлении, если в LinuxCNC ничего не получится.
Может есть возможность написать внешнюю параллельно работающую программу которая отслеживает внутренние переменные Linuxcnc и делает над этой прогой какие-то действия?
Может есть возможность написать внешнюю параллельно работающую программу которая отслеживает внутренние переменные Linuxcnc и делает над этой прогой какие-то действия?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Программная корректировка пропуска шагов
Хоуминг делать прямо в процессе выполнения наверное не выйдет.Urx писал(а):Хотите сказать это нельзя сделать программно, внедрив свой код в УП?
Но можно делать доп смещение по осям.
Делаем так: раз в какое-то время делаем probe на пластинку, и потом G92 X0Y0Z0 или ныжное значение.
Т.е. будет что-то вроде:
G53 G0 Z10
G53 G0 Xпробы Yпробы
G38.2 Z-100
G92 X0
ну и потом возвращаемся в рез.
В принципе, можно и запомнить текущие координаты, в последних версиях есть переменные #<_x>, #<_y>, #<_z>. (в более ранних версиях они численные, а еще раньше из вообще нет...)
Re: Программная корректировка пропуска шагов
Спасибо, Nick.
Re: Программная корректировка пропуска шагов
Я так понял, probe физически - это тот же хоуминг, только без повторной перепроверки на пониженной скорости. А программно - он не меняет абсолютные координаты, а только устанавливает значения переменных (параметры 5061-5069). И на этих переменных мы делаем смещения.
А этот код должен стоять в теле основной работающей УП, или его можно "привязать" к кнопке и запускать в паузе? Если можно привязать к кнопке, скажите пожалуйста как это сделать?
А этот код должен стоять в теле основной работающей УП, или его можно "привязать" к кнопке и запускать в паузе? Если можно привязать к кнопке, скажите пожалуйста как это сделать?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Программная корректировка пропуска шагов
Не совсем - probe можно сделать двойнымUrx писал(а):Я так понял, probe физически - это тот же хоуминг, только без повторной перепроверки на пониженной скорости.
F1000
g38.2 Z-100
F10
g38.4 Z100
Основное отличие, что не меняются привязки станка - в основном поиск home нужен, чтобы linuxCNC знал, где находятся пределы осей.
Не, все гораздо проще, ты заранее знаешь где у тебя датчик, и какое значение должно быть при касании датчика. поэтому сразу после последнего G38 пишем G92 X-- Y-- Z-- и ставим известные координаты.Urx писал(а): И на этих переменных мы делаем смещения.
К кноппе очень не просто и пока несколько коряво - основная проблема - на паузе нельзя ничего выполнять, надо останавливать программу и потом запускать с предыдущей строчки... и практически все в ручную... в общем не удобно...Urx писал(а):А этот код должен стоять в теле основной работающей УП, или его можно "привязать" к кнопке и запускать в паузе? Если можно привязать к кнопке, скажите пожалуйста как это сделать?
А вот если вставить в Gкод - то никаких проблем.
В принципе, можно добавить в Gкод процедуру, котораяраз в какое-то время, например при холостом прогоне будет проверять, не нажимали ли кнопку, и если нажимали - то будет ехать проверяться...
Re: Программная корректировка пропуска шагов
Если датчик стоит в координате 0,0,0, то пишем G92 X0 Y0 Z0 ? Независимо от того были ли пропуски или нет?Nick писал(а):Не, все гораздо проще, ты заранее знаешь где у тебя датчик, и какое значение должно быть при касании датчика. поэтому сразу после последнего G38 пишем G92 X-- Y-- Z-- и ставим известные координаты.
В винде можно было макросы записывать, в линухе нет такого? Нашел вот это: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: Программная корректировка пропуска шагов
Да, только есть одно но, если станок будет долго пропускать шаги в конце концов эти дополниительные сдвиги могут выйти за пределы програмной оси в LinuxCNC и он откажется дальше выполнять задачу. Т.е. лучше раз в какое-то время делать homing осей.Urx писал(а):Если датчик стоит в координате 0,0,0, то пишем G92 X0 Y0 Z0 ? Независимо от того были ли пропуски или нет?
G92 - просто смещает систему координат, так чтобы указанные оси приняли заданные значения.
А еще лучше настроить движки так, чтобы они шаги не пропускали.
Какие именно макросы нужны?Urx писал(а):В винде можно было макросы записывать, в линухе нет такого? Нашел вот это:
Re: Программная корректировка пропуска шагов
Вот список действий.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: Программная корректировка пропуска шагов
Лучше вставить все это в 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
В принципе можно сделать и как ты говоришь... все это можно выполнить через консоль -
перемещение в точку - по 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: Программная корректировка пропуска шагов
Urx, если у твоей машине в банзобаке будет течь которая позволит только литр бензина наливать, ты будешь через несколько км. возвращаться на заправку или все же течь устранишь?Urx писал(а):Вот список действий.
1. Делать полный останов,
2. поднимать Z на безопасное расстояние (эмуляция Z,нажать +, задержка, отпустить +),
3. Х и У в координаты 10, 10.
4. хоме всех трех осей (эмуляция ctrl-home),
5. поднимать Z на безопасное расстояние,
6. запустить шпиндель,
7. продолжить с предыдущей строки.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Re: Программная корректировка пропуска шагов
Nick, спасибо. А как продолжить с предыдущей строки через консоль?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Программная корректировка пропуска шагов
Вот это сложнее
В этой теме было подробнее, только там пришлось код axis менять... LinuxCNC реверс Gкода #45
В этой теме было подробнее, только там пришлось код axis менять... LinuxCNC реверс Gкода #45
Re: Программная корректировка пропуска шагов
А это может быть от отсутствия заземления в гараже? Рядом холодильник работает. На мне потенциал относительно ноля питания 30в, на ноле питания относительно пола гаража 2в. Или всё это ерунда и надо только кольца ферритовые поставить, намотав провод, около шаговиков? Может заэкранировать плату опторазвязки? Может дело в шпинделе Энкор-850 ФМЭ - помехи, так как неэкранированные провода? Узнать бы что именно влияет больше всего. Для этого может пригодиться этот макрос. При этом его надо дополнить каким нибудь звуковым сигналом, который подается если есть пропуски, и не подается, если их нет. Убирая те или иные факторы можно исключить пропуски.aftaev писал(а):Urx, если у твоей машине в банзобаке будет течь которая позволит только литр бензина наливать, ты будешь через несколько км. возвращаться на заправку или все же течь устранишь?
- michael-yurov
- Почётный участник

- Сообщения: 11731
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Программная корректировка пропуска шагов
В момент разрыва реле холодильника могут быть сбои.Urx писал(а):Рядом холодильник работает.
Коллекторный шпиндель - тоже не подарок.
Ферриты нужно не на провода шаговиков ставить, а на LPT кабель.
Питание платы опторазвязки должно быть или отдельное, или, в крайнем случае от компьютера.
К плате не должно быть ничего подключено кроме драйверов с опторазвязкой на входе, и концевиков, которые больше ни с чем не имеют общих электрических связей.
Re: Программная корректировка пропуска шагов
Еще немного по поводу питания. Напряжение в сети низкое, питаю через автотрансформатор с повышением на 10в, потом стоит УПС Smart UPS 1000, от него питается комп и контроллеры, а фрезер идёт отдельно, чисто от розетки, отдельным проводом, холодильник тоже работает от отдельного провода от розетки. Может холодильник питать через сетевой фильтр?michael-yurov писал(а):В момент разрыва реле холодильника могут быть сбои.Urx писал(а):Рядом холодильник работает.
Коллекторный шпиндель - тоже не подарок.
Ферриты нужно не на провода шаговиков ставить, а на LPT кабель.
Питание платы опторазвязки должно быть или отдельное, или, в крайнем случае от компьютера.
К плате не должно быть ничего подключено кроме драйверов с опторазвязкой на входе, и концевиков, которые больше ни с чем не имеют общих электрических связей.
LPT кабель обычный жгут проводов, может заменить на плоский кабель?
Опто со стороны компа питается от раздельного питания. К ней подключены драйвера, концевики и на ней разведены транзисторы управления реле включения шпинделя.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Программная корректировка пропуска шагов
продолжить с нужной строки не проблема:Urx писал(а):как продолжить с предыдущей строки через консоль?
Код: Выделить всё
$ python
>>>
import linuxcnc
c = linuxcnc.command()
program_start_line = 13
c.mode(linuxcnc.MODE_AUTO)
c.auto(linuxcnc.AUTO_RUN, program_start_line)а вот чтоб с предыдущей - тут немного доработка нужна...
дело в том , что после стоп у нас не "запоминается" номер строки...
вот мы его и достаем ,как вариант,компонентом minmax
теперь после остановки стартуем с [minmax.N.max -1]
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Программная корректировка пропуска шагов
можно его при нажатии кнопки сохранять...nkp писал(а):что после стоп у нас не "запоминается" номер строки...
