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

MAB72

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

Ноль - если не требуется изменение периода таймера (движение с постоянной скоростью).
Или новый период таймера (движение с ускорением/замедлением).

Когда таймеры не генерирует импульсы, планировщик предрасчитывает движения и складывает результаты расчетов в буфер, очищая буфер от уже выполненных инструкций. При этом также делается контроль состояния буфера: если буфер близок к заполнению - расчеты ставятся на паузу до тех пор, пока в буфере не появится свободное место.

Такой алгоритм генерации импульсов ЩД не требует большого буфера. Из-за того, что он своевременно заполняется/очищается. А своевременное заполнение происходит из-за того, что расчеты производятся намного быстрее, чем движения осей.
Прочитал, не дошло. Ушел думать, переваривать.
 
vvv1234 написал(а):
Нет никаких проблем повесить все это на один МК. Буфер, о котором Вы говорите, это буфер инструкций таймеров (по другому, буфер импульсов). Буфер имеет следующую структуру.

Ноль - если не требуется изменение периода таймера (движение с постоянной скоростью).
Или новый период таймера (движение с ускорением/замедлением).

Когда таймеры не генерирует импульсы, планировщик предрасчитывает движения и складывает результаты расчетов в буфер, очищая буфер от уже выполненных инструкций. При этом также делается контроль состояния буфера: если буфер близок к заполнению - расчеты ставятся на паузу до тех пор, пока в буфере не появится свободное место.

Такой алгоритм генерации импульсов ЩД не требует большого буфера. Из-за того, что он своевременно заполняется/очищается. А своевременное заполнение происходит из-за того, что расчеты производятся намного быстрее, чем движения осей.
Я наверно неправильно сформулировал вопрос. До буфера еще добраться надо. Вот считываю с накопителя строчку g-code. К примеру "G91 G0 X170 Y15". Разгон/торможение пофиг(пока не учитываю). По X надо ехать много, по Y мало. Точные расчеты в сторону, чисто для примера. По X надо 270000 импульсов с частотой 100kHz и по Y 24000 импульсов соответственно частота примерно 9kHz. Вот с этого момента кудой чаво? Каким способом это превратить в step/dir да на двух каналах?
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

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

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

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

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