ИЩУ РЕШЕНИЕ Логика работы автономного контроллера?

MAB72

МЕСТНЫЙ
ПРОВЕРЕННЫЙ
Регистрация
13.01.2025
Сообщения
36
Реакции
14
Баллы
8
Город
Khabarovsk
Имя
Anton
Подскажите пожалуста, где почитать про отправку команд из контроллера на драйверы. Задумал соорудить свой контроллер (на stm32g4 or stm32h7 пока не решил). В cad/cam нарисовал чаво хочу и получил g-code. Теперь возник вопрос, как перевести этот g-cod в движение по осям. Для начала самое простое типа прямолинейное движение без ускорений и разгонов. Заранее спасибо.
 
Какого типа АК Вы планируете делать: полный или для работы с платой управления? Если второго типа - посмотрите коды Олега.
Полный, как я понимаю. stm32 читает готовый жэ-код с USB флешки, переваривает(парсит) и выдает Step/Dir/En на драйвера и управляет LCD, и контролирует лимиты/концевики. Пока только для шаговых моторов, сервоприводы и обратная связь пока не планируется, как-то так.
Если есть плата управления, то зачем еще шо-то городить? Подключай сендер к плате управления и вперед. За ссылочку спасибо, полистаю.
А мне как раз на детско-дошкольном уровне и надо.
 


А лучше не надо (это точно не пример для подражания) - там на уровне ясельной группы церковно-приходской школы программистов :)

оффтоп

Главное - это то, что оно работает. А как написано - это уже вторично. И разобраться в таких кодах намного проще, чем в high-densed grbl.

оффтоп

Ваши сообщения автоматически объединены:

выдает Step/Dir/En на драйвера
Управление ШД - это уже полный контроллер, который работает самостоятельно, без платы grbl.
 
Последнее редактирование:
Если есть плата управления, то зачем еще шо-то городить? Подключай сендер к плате управления и вперед.
А зачем тогда городить что то если всё равно на плату отсылать? Так то логика АК несложна, управление картой, чтение карты с отсылкой в UART, ну ещё несколько функций прямого управления станком и, собсно, всё..
Да, ещё чтобы читал ответы платы управления на отосланные команды.
 
В памяти(во flash МК, на SD и тд) находится заранее рассчитанный буфер из которого с определенной периодичностью забираем данные и выдаем в порт. Да, для начала и упрощения понимания принимаю некоторые ограничения. Две оси XY и нет разгонов и торможений.
Подготовить буфер для отправки на пины - это задача контроллера, а находиться он должен в оперативной памяти, т.к. структура эта крайне мало живущая. На sd хранятся УП в g-code!
Подход "сначала две оси" также в корне неверный. Обрабатывать нужно пространственные вектора, сформированные из строки g-code. С таким подходом, без дополнительных костылей можно рулить любым количеством осей сразу.

Какого типа АК Вы планируете делать: полный или для работы с платой управления?
Аналог grbl, с парсингом g-code, планировщиком, работой с sd, насколько я понимаю.
 
Аналог grbl, с парсингом g-code, планировщиком, работой с sd, насколько я понимаю.
Мне кажется, ТС еще не понял, что полный АК (на входе карта, на выходе - импульсы управления ШД) и АК-сендер (на входе карта, на выходе - комманды для grbl) - это две очень большие разницы. Как по алгоритмике, так и по объему работы.
 
А зачем тогда городить что то если всё равно на плату отсылать? Так то логика АК несложна, управление картой, чтение карты с отсылкой в UART, ну ещё несколько функций прямого управления станком и, собсно, всё..
Да, ещё чтобы читал ответы платы управления на отосланные команды.
Что-то я не понял? Как по мне при наличии платы управления больше ничего и не надо, сендер соединен с платой управления, та с драйверами ШД вот и поженились, крути не хочу. И зачем тут что-то городить? Ну разве, что плата управления без обратной связи, значит нада другую плату выбирать, а так это тоже самое, что на велисапед моторчик городить, оно канечно работает, но... .

Да ладно, не в этом суть.
Тута начал вникать в суть вопроса и погряз в полном непонимании.
Условия:
-StepMotor step/rpm = 200 шагов на оборот, стандарт;
-StepScrew mm/rpm =4 миллиметра на оборот, шаговый винт;
-StepDriver Div = 32;

Трабл: Чтобы проехать 170мм по прямой по одной оси нада ( (200*32)/4)*170 = 272000 шагов.
Даже при условии хранения по 8 бит на шаг, как-то расточительно-многовато и в оперативку не лезет. На ходу преобразовывать/распаковывать данные ума не хватает, а казалось так просто. И какой же метод применяют в реале? Вот уже пол дня поиска в интернетах не нахожу ответа, так как не могу правильно сформулировать вопрос.

И да про: Dizzy: "...сначала две оси..." именно так, тут вообще нулевые знания и голый энтузиазм с полного нуля так сказать. Тут на самых первых моментах провалы в познании, вот с помощью форумов и познаю.
 
Трабл: Чтобы проехать 170мм по прямой по одной оси нада ( (200*32)/4)*170 = 272000 шагов.
Даже при условии хранения по 8 бит на шаг, как-то расточительно-многовато и в оперативку не лезет.
Пjчитайте про uint32_t и uint64_t
 
Мне кажется, ТС еще не понял, что полный АК (на входе карта, на выходе - импульсы управления ШД) и АК-сендер (на входе карта, на выходе - комманды для grbl) - это две очень большие разницы. Как по алгоритмике, так и по объему работы.
1. stm32 читает готовый жэ-код с USB_флешки - вполне реализуемо (с помощью HAL я уже читал/записывал текстовый файл)
2. ж-код в STEP/DIR - пока не брался, так мельком глянул, алгоритм Брезенхема, возможно что-то еще, как по мне так это чистая математика, в плоть до целочисленных вычислений. Ну до этого еще далеко.
3. Единственные прерывания E_stop и Soft_Limit. Вообще не вижу проблем.
4. Обратной связи - нет. Во всяком случае мне до этого еще далеко.
5. LCD с энкодерным управлением - реализуемо.
И все это я называю АК. Как-то так.
 
Последнее редактирование:
На ходу преобразовывать/распаковывать данные
Именно. У тебя должен быть небольшой FIFO буфер, т.к. затолкать всю секцию планировщика нереально, да и не нужен он большой. А по поводу LCD - крайне сомнительная авантюра. Практика (в том числе и именитых брендов, таких как kuka и fanuc) показывает, что идея повесить все на свете на один контроллер не самая удачная. Как один из вариантов исполнения данного контроллера - отказаться от самостоятельного распределения ресурсов и использовать FreeRTOS. (недоступен для 8бит avr и grbl). И, да, далее будет математика. Много математики. И вектора.

Для всех остальных: Не мешайте человеку набивать собственные шишки. Иногда из таких товарищей получаются довольно ценные кадры с неплохими и даже очень ценными идеями.
 
Последнее редактирование:
2. ж-код в STEP/DIR - пока не брался, так мельком глянул, алгоритм Брезенхема, возможно что-то еще, как по мне так это
АК-сендер этим не занимается. Базовые функции АК-сендера.
1. Считать строку ж-кода с карты.
2. Проверить строку на валидность (например, пропустить строчку с комментарием).
3. Положить строку в стринговый буфер.
4. Отправить строку из буфера в grbl, дождавшись ответа из grbl об окончании обработки предыдущей строки.
5. Расшифровать ответ grbl и отобразить его на экране.
 
Ок. Пойду почитаю, что же такого интересного в них имеется... А в каком ключе про эти данные почитать, что искать?
Здесь. Специальные целочисленные типы, позволяющие оптимизировать работу МК.
Но это на будущее. Если соберетесь делать полный АК.
 
Ну повесить все на один МК наверняка идея так себе. Можно взять пару-тройку МК таких или проще, благо стоят они копейки. Ну это после осознания масштаба предстоящих операций/работ/задач. Сейчас для меня главное по готовой задаче (например переехать из X0 Y0 в X15 Y225), то есть выдать наружу 225 импульсов на два канала, при которых Yканал получит 225 импульсов с частотой от 0 до 100kHz, а Xканал получит 15 импульсов с частотой Fx = f(15шагов, 225шагов, 100kHz). Вот и пытаюсь собрать все это в кучу. Все равно получается нужен буфер минимум на количество шагов, а это 272000 шагов. Половинить/четвертить итд, значит использовать прерывания, а я в силу неверования в прерывания, пытаюсь забабахать все на уровне периферии без участия ЦП. Расчеты ведет ЦП, а перегонкой данных периферия. По указанию ЦП взял в одном месте памяти данные закинул в периферию, закончил - сиди жди, когда ЦП понадобиться он обратится к тебе. Ну так примерно вижу.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать