Ардуино и ЧПУ. Проблема с передачей данных
- Войдите на сайт для отправки комментариев
Пнд, 02/06/2014 - 00:01
Добрый день, форумчане! Я не большой специалист в программировании на C++, отсюда много недопониманий и косяков. Поэтому не судите строго.
Устройство: Строю небольшой станок для тиснения. Два шаговика + устройство тиснения. Железо: ардуина + моторшилд.
Проблема: Использую адаптированный G-код (координаты в формате X,Y,Z;). При передаче кода вручную построчно - все работает отлично. Как только заряжаю данные полным пакетом в PUTTY - начинает сбоить. Координаты сбиваются, появляются просто бешенные числа. Такое ощущение, что пока ардуина крутит шаговиками часть данных теряется и карта считывает данные не с начала строки. Может такое быть? И как избежать проблемы?
Ардуино не успевает принимать и обрабатывать данные, буфер у неё ограничен.
Можно как-то органичить поток данных, скажем, вводя таймаут на прием? Или выход один - писать программу для кампутера, которая будет отправлять следующую строку только по поступлении спецсимвола с Ардуины, который будет говорить о том, что все предыдущие данные обработаны?
Как вариант. Раньше в модемах было аппаратное и программное управление потоком. В Ардуино такого нет, потому если он не успевает, он не может сказать, что он не успевает. Потому нужно вводить в протокол обмена какой то управляющий флаг/сигнал. Практически я это никогда не использовал, не было нужды, потому варианты надо гуглить, наверняка проблему уже кто то решил.
G-код это только координаты и начало действия
конечно координаты надо подавать только когда предыдущие отработаны
я пользую уже отлаженную связку 1 2 3 4 5 6 7 8 9
деталь в моем случае например dwg-код oscad-код проект stl-код выверка под конкретную механику g-code проверка
PC спец софтина (даже не помню самосбор Pronteface вроде) <-> arduino256 <-> пачка драверов шаговых <-> механика
есть короткий путь 1 2 3
miniSD G-code - arduina256 - драйвера шаговые - механика
короткий путь у меня наоборот еще ни одной детали тольком не зделал все косяки плошные и я не пользую
По моемому вы не с того начали
надо сначало софтину управления под станок подобрать а не наоборот
вот в каждой строчке тупая координата и команда
а кто у вас ожидать будет?
я вон спес цобранным под мой станок слайсером косяки других редакторов выверяю
может и для вашей фрезерной обработки есть вариант слайсера
попробуйте поискать
у меня каждая софтина вроде может напрямую g-code в arduino256 толкать
а народ рекомендует чтоб без косяков спец сборку под меня
успехов пишите что накопали
безплатный софт тоже есть
а вот под вашу фрезеровку не могу подсказать что оптимальней
не надо только велосипеды изобретать
это верно то вы на g-code обратили вниамния - да он самый распростарнненный для станков и спец софтины как правило все его понять должны
теоретически в g-code есть команда подтверджения наверно
не думал
сам смотрите в моем реальном нет
тупа X;Y;подача сырья; все :-0
наврал если далше простыню посмотреть есть некая команда Fxxx
может это и есть то что slicer встявляет чего-то там свое отсчитвая
суть слайсера тольков вставлении/удаленнии автоматом каких-то команд
не думал над этим
солнце всходит и заходит зачем его трогать
о по видимому в g-code нмого чего есть
вижу через равные промежутки
однообразынй блок
может высчитали что как раз до этой комнады все в ардуину влезает
а когда
вот тогда слежующий блок засунем
век живи век учись
Всем большое спасибо - разобрался.
Мои заблуждения:
1. Ардуино считывает данные по мере поступления четко, чинно и построчно
Оказывается - Ардуино и Putty как бы вообще не больно совместимы. Пока Ардуина крутит моторчиками поток данных продолжает тужится на предмет влезть в порт. Насколько я понял Putty выплевывает данные непрерывно. Без таймаутов. Решение - использую для отправки данных на карту программу Al Terminal. И всем советую - отличная штука с кучей настроек. Как только ввел таймаут отправки координат - все заработало. Пока тестировал с интервалом в 1500 милисекунд. Буду постепенно уменьшать, чтобы отследить на каком этапе пойдут сбои.
2. Канал связи с Ардуино полный дуплекс.
Нихрена подобного. У меня после принятия данных скетч отдавал в СериалМонитор текущие координаты. Постепенно я стал замечать, что данные, отправленные с Ардуины волшебным образом стали дополнять данные, отправленные с компа. Такшта при пакетной передаче без таймаутов лучше никакого фидбэка не делать.
Сейчас все вроде как бегает. Работаю над небольшой коррекцией расчета координат.
... данные, отправленные с Ардуины волшебным образом стали дополнять данные, отправленные с компа...
мне кажется ты не все еще прощупал
у тебя похоже в терминале локальное эхо включено поэтому ответ с приветом добавляется
но если не напрягает то не заморачивайся
ты надеюсь подгоняешь уже какой-то полуготовый код под свое железо?
ты случаем не рисовалку пасхальную делаешь?
тоже два мотора и тиснение
я думаю код и софт от сюда выложены
прикольно
так проект развит
и рисовалка со спец расширением
и спец драйвер
и код для ардуины уно уже откомпилировал и прошил на столе на ура
и разворачивается за 15 минут
вот используется в этой рисовалке g-code пока не понял
еще немного и не удержусь и начну делать
хм
3 мотора 2 мосфета а вот концевиков что-то сильно много
страно
ясно у ардуинки своя система команд
это все возможные
какие-то EBB-команды
прикрутил только что G-code
брр только смысл потерял зачем?
опять это вездесущий g-code
вообщем как всегда
софт выстраивается можно и железяку делать