Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)
Добавлено: 09 сен 2017, 19:11
Это накладывает дополнительное ограничение, все оси и сигналы должны быть заведены на этот "генератор"
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Хотя это и не ко мне вопрос, но очередь присланных команд - общая. Каждый элемент очереди содержит задание для всех координат. Наглядной аналогией являются кадры G кода - G0/G1. Они тоже содержат задания для всех координат.UAVpilot писал(а):А оси ты как синхронизировать собираешься?
Ну да, STM32 вполне справится с несколькими осями. Но вообще при чем тут оси? Шаговый двигатель и генератор могут использоваться вообще не в чпу станках, а там где никаких координатных осей нет, синхронизация не требуется и иногда даже кривые разгона не имеют особого значения. Примеров можно набрать сотни. Автор темы разве говорил, что собирается ЧПУ станок делать на основе этого генератора?tims писал(а):Это накладывает дополнительное ограничение, все оси и сигналы должны быть заведены на этот "генератор"
Как именно? Например при движении по окружности.Argon-11 писал(а):Генератор ващето можно считать реалтаймным девайсом, он и будет синхронизировать оси.
Это ты сейчас лёгким движением мысли засунул планировщик траектории в генератор, между прочим работающий в RT...MX_Master писал(а):Хотя это и не ко мне вопрос, но очередь присланных команд - общая. Каждый элемент очереди содержит задание для всех координат. Наглядной аналогией являются кадры G кода - G0/G1. Они тоже содержат задания для всех координат.
Сергей, все планы строит как раз мастер. И тот факт, что мастер отдает приказы, похожие на кадры G кода, не говорит о том, что планировщик есть в генераторе. Мастер может изменить начальную траекторию и подачи, взятые из g кода, как ему угодно. Например, загрубить изначальную дугу на отрезки. А потом прикажет генератору выполнять эти отрезки с другими подачами.UAVpilot писал(а):Это ты сейчас лёгким движением мысли засунул планировщик траектории в генератор, между прочим работающий в RT...MX_Master писал(а):Хотя это и не ко мне вопрос, но очередь присланных команд - общая. Каждый элемент очереди содержит задание для всех координат. Наглядной аналогией являются кадры G кода - G0/G1. Они тоже содержат задания для всех координат.
Но тут возникает небольшой вопрос: А зачем тогда нужен "мастер" и что он будет делать?
Т.е. синхронизация должна происходить довольно часто, генератор-же не знает по какой траектории происходит движение. Где в этом случае генератор сможет применить свои умения типа разгона по S-кривой?MX_Master писал(а):Сергей, все планы строит как раз мастер. И тот факт, что мастер отдает приказы, похожие на кадры G кода, не говорит о том, что планировщик есть в генераторе. Мастер может изменить начальную траекторию и подачи, взятые из g кода, как ему угодно. Например, загрубить изначальную дугу на отрезки. А потом прикажет генератору выполнять эти отрезки с другими подачами.
Только я вижу противоречие между "Генератор четко выполняет приказ" и "он может планировать"?MX_Master писал(а):Генератор четко выполняет приказ движения из точки А в точку Б, со строго указанными подачами и ускорениями. Единственное, что он может планироаать - это формулы ускорения и формулы движения по дуге. Все эти формулы должны чётко соответствовать выданным приказам. Самостоятельно менять траекторию генератор не должен.
Эх, если бы был только один солдат... А что если забор красят три солдата: первый забор двигает, второй кистью машет, а третий краску произвольного цвета подносит, чтоб второй в неё кисть макал. И есть ещё четвёртый, который под забором водку пьянствует. Причём каждый делает это по своему разумению. И как теперь офицеру всю эту банду стройбатовцев озадачить, дабы забор покрашен вовремя, ровно и в зелёный цвет?MX_Master писал(а):Тут будет всё как в жизни: поступил сверху приказ покрасить забор в зелёный цвет за три дня, и дальше солдат может планировать и думать как хочет, может ваще не думать, но выполнить обязан.
Солдат может запланировать покрасить забор за 2 дня и целый день отдыхать, но проблема в том, что у поставщика краски могут быть свои планы - поставлять каждый день краску в количестве на 1/3 забора, а строители забора могут вообще запланировать построить забор за 4 дня...MX_Master писал(а):Тут будет всё как в жизни: поступил сверху приказ покрасить забор в зелёный цвет за три дня, и дальше солдат может планировать и думать как хочет, может ваще не думать, но выполнить обязан.
В планировщике нужна обязательно (для рабочих движений по G1, G2, G3), чтобы результирующая траектория движения нескольких осей получалась именно такой, как задумал планировщик, а не как решили генераторы/приводы, каждый по своему. Да и длительность сервоцикла (LinuxCNC -1ms, Mach3 - 2ms) ничтожна в сравнении с мех. характеристиками приводов - т.е. им просто не хватит этого времени на реализацию S-кривой разгона/торможения. А продолжать свой разгон/торможение за пределами одного сервоцикла они не имеют права, ибо это будет вопервых искажение заданной траектории, а вовторых они просто не знают какая команда ждёт их в след. сервоцикле.tims писал(а):Правильно ли я понимаю, для реализации s-кривых нужна поддержка и в планировщике и в драйвере (генераторе), или в пределах сервоцикла они не нужны и будет достаточно реализации в планировщике?
Ну если забить на синхронизацию с внешними сигналами от датчиков и т.п. и на возможность работы со вторым контуром ОС (линейками), то не криминал.tims писал(а):А подождать команду следующего сервоцикла и начать исполнять предыдущий это криминал?
Т.е получается, что в этом случае расчитывать S-кривые должны уметь и планировщик и генератор/привод. Но тут опять возникает всё тот-же неудобный вопроос: нафига в таком случае S-кривые в генераторе, если он может получать результаты расчёта вместе с командами от планировщика?tims писал(а):Тогда часть функционала s-кривой будет в приводе, но планировщик будет в курсе этого функционала - расчёт будет вестись с его учётом.
Непонятно )UAVpilot писал(а):P.S. Вам всё ещё не кажется подозрительным, что S-кривые ещё пока никто не реализовал для рабочего движения по G1, G2, G3?..
Да много где реализовано, и я реализовал в WLMotion. и по прямым и по кругу... и по спирали..UAVpilot писал(а):P.S. Вам всё ещё не кажется подозрительным, что S-кривые ещё пока никто не реализовал для рабочего движения по G1, G2, G3?..
Если не требуется согласованного движения нескольких суставов одновременно, т.е. соблюдения точной траектории.tims писал(а):В роботах есть.
Не встречал. Правильная реализация S-кривых для G1-G3 в 3д принтерах сильно сомнительна - в применяемых в них МК просто не хватит вычислительных ресурсов для этого.tims писал(а):В 3д принтерах есть.
С асинхронным движением и S-кривыми проблем никаких нет. На твоём видео видно, что все оси движутся поодиночке. Проблемы начинаются, когда при синхронном движении двух и более осей надо точно выдерживать траекторию движения в любой момент времени.Bender писал(а):Также сейчас стыкую контроллер WLMotion и программу управления станком для гибки проволоки. Там будет и асинхронные движения осей.
Например поворот головы идёт по S кривой (большая масса=инерция=пружение=при передачи момента движения), а все остальные по трапеции.
Для шприц-дозатора может оказаться удобнее полностью автономное устройство, наподобие этого: Конкретно в этом один канал, но в неспешной разработке трехканальный вариант.Argon-11 писал(а):В моем проекте (поршневой дозатор) это тоже не требуется и даже будет вредно, поскольку мастером является одноплатник с ОС Android