Самопальный интерпретатор

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

В принципе получается есть небольшое количество ячеек, в которых храниться положение X,Y,Z,A, скорость движения, обороты шпинделя, и др..
И с каждой из строк G-кода меняется одна или несколько ячеек, ну а после <LF> собственно выполнение.
Сам в начале впал в ступор, когда только этим увлекся, а потом всё оказалось куда проще и интереснее. ;-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Странно что в компьютерную эру не сделали другой способ интерпретации. Можно же было сделать что-то типа
move(,100,10) (аналог G0 Y100 Z10)
feed(1000) (аналог F1000)
line(100, 100, 100) (G1 X100 Y100 Z100)
for($i=0; $i < 10; $i += 2) //проход по контуру несколько раз
$contour_kakoito($i)
end

$contour_kakoito($z) //определение функции прохода по контуру
line(100, 100,$z) //квадрат, например
line(1,100,)
line(1,1,)
line(100,1,)
line(100,100,)
end

а вместо этого начали затычки лепить типа O-кодов.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Serg »

На многосимвольные команды требуется больше памяти в станке для хранения прогрммы...

Ну а если кто из производителей вдруг решит отступить от промстандарта и реализовать в своих ЧПУ такой красивый и современный язык, то никто не купит его продукцию, ибо всем надо чтоб всё продолжало работать, а на эксперименты эксперементировать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
umerov
Кандидат
Сообщения: 83
Зарегистрирован: 18 янв 2012, 21:22
Репутация: 21
Откуда: Украина
Контактная информация:

Re: Самопальный интерпретатор

Сообщение umerov »

все придумано до нас...
http://www.vagrearg.org/content/gcmc
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Хоббийщикам думаю до лампочки на размер программ.
Повысил напряжение на шаговиках, заменил железные муфты на куски шланга, теперь более менее крутится, уря уря :D . Может для начинающих описать отрицательный опыт, что не надо делать при постройке станка :lol1: .
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Serg »

Крафтер писал(а):Хоббийщикам думаю до лампочки на размер программ.
Ну если они желают "вариться в собственном соку" и не пользоваться плодами прогресса, то конечно до лампочки... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

самопал.zip
(87.9 КБ) 337 скачиваний
Выложу пока только исходники, может кому интересно будет внутрь заглянуть. Это даже не бета-версия, погонять пока не получится.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

Крафтер писал(а):
самопал.zip
Выложу пока только исходники, может кому интересно будет внутрь заглянуть. Это даже не бета-версия, погонять пока не получится.
Все равно спасибо! т.к. тоже начал делать на STM32F429ZIT6, будет с чем сравнить :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

selenur писал(а): Все равно спасибо! т.к. тоже начал делать на STM32F429ZIT6, будет с чем сравнить :-)
Для компиляции нужен Qt 5 и библиотека GLM. Для мк - Keil uVision 5.
Я уже от текущего подхода отказался. Легче всё интерполировать отрезками (хоть кривые Безье), а по ним рассчитывать расстояние до конца линии. Тогда можно сделать сопряжение кусков траектории без торможений при переходах, а также легко менять скорость подачи из интерфейса или по аппаратному сигналу. Плюс можно будет сделать поворот системы координат и увеличить число осей до 5.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение sidor094 »

Уважаемый Крафтер.Вы не смогли бы рассказать про протокол обмена через СОМ .Дело в том ,что я то-же раньше делал интерпретатор на атмеге . Там программа построчно передавалась через СОМ порт компьютера.Проблема была в том что виндоус не является системой реального времени .В связи с этим при загрузке строки в буфер СОМ порта неизвестно в какой момент она будет отправлена .Так же ответ о готовности контроллера к приёму следующей команды нельзя гарантировать что это выполнена текущая или предидущая команда ,а до неё просто только что добрался виндоус.Из-за этого пришлось усложнять протокол.Но всё равно при работе с короткими командами станок начинал тарахтеть из-за постоянных подтормаживаний при ожидании следующей команды.Из за этого на данный момент работая с кортексом загружаю сразу всю программу в озу с флешки и работаю непосредственно с озу микроконтроллера.Хотя было бы значительно привлекательнее иметь отдельный командный интерпретатор и отдельное устройство(например компьютер) для отображения,обработки,хранения редактирование и т.д. программы.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

sidor094 - может вам такой вариант рассмотреть http://habrahabr.ru/post/208026/ ?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Predator
Мастер
Сообщения: 9583
Зарегистрирован: 18 июл 2013, 18:26
Репутация: 2531
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Predator »

sidor094 писал(а):Проблема была в том что виндоус не является системой реального времени

Зато Билли гад всем пытается доказать, что это именно так, только вот верующих в это всё меньше и меньше :hehehe:
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

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

В принципе я весь код стараюсь писать так, чтобы при потере связи не случилась катастрофа.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

Например в контроллере mk1 от planet-cnc, есть буфер, состоит из 14 ячеек по 64 байта, в этот буфер с компьютера посылаются данные, а контроллер компьютеру постоянно шлет пакет из 64 байт, в котором есть информация о том на сколько наполнен буфер, текущие координаты, и ещё кое какие режимы. В результате чего удается добиться такого обмена, что контроллер не уходит в аут, от избытка информации, т.к. компьютер следит за размером буфера, и необходимостью посылать новые данные.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Serg »

Крафтер писал(а):Комп не парится с тем, что на мк кончилось место, и постоянно пытается послать ещё. А мк, если места нет, просто не принимает.
RS232 имеет встроенные средства контроля потока, аппаратные - сигналы DTR/DSR и RTS/CTS, и программные - байты XON/XOFF, используйте их.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение sidor094 »

Не хотел использовать длинный буфер т.к компьютер должен показывать текущую команду,да и не хотел слишком усложнять протокол отвечая номером в буфере .А DTR RTS не получилось использовать на компе,хотя это был бы наилучший вариант. Сейчас у меня контроллер сам выводит на дисплей и принимает с клавиатуры ,но планирую разделить функции.Была мысль СОМ использовать только для отображения координат и ввода команд с клавиатуры загрузка пока с microcd.В дальнейшем для загрузки загрузки программ в память контроллера думаю отдельный интерфейс типа ETHERNET или что нить другое .Есть ли у кого нибудь опыт работы на компе с СОМ с помощью DTR RTS ?
Не хотелось бы использовать USB да и ЕТНЕRNЕТ не лучший вариант.Слишком подвязаны к аппаратуре (конкретного микроконтроллера).
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Serg »

sidor094 писал(а):Есть ли у кого нибудь опыт работы на компе с СОМ с помощью DTR RTS ?
А какой там опыт нужен? Просто настраивается соотв. режим порта, в программе выделяется память под буфер, системному драйверу порта сообщается адрес этого буфера и всё. Потом только пихаешь байты в этот буфер и следишь, чтобы он не переполнялся, а драйвер и чип порта сами будут всё передавать/принимать отслеживая управляющие сигналы.
sidor094 писал(а):да и ЕТНЕRNЕТ не лучший вариант
ЕТНЕRNЕТ наилучший вариант: большие скорости, минимальные задержки, "встроенная" гальваническая развязка.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Самопальный интерпретатор

Сообщение AndyBig »

sidor094 писал(а):USB да и ЕТНЕRNЕТ не лучший вариант.Слишком подвязаны к аппаратуре (конкретного микроконтроллера)
И то и другое вполне нормальные варианты. И почему так пугает подвязка к конкретному контроллеру? Продумали задачу, выбрали подходящее железо и делаете на нем :)
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

Сейчас в процессе изучения МК STM32F429 нашел в нем DSP модуль, который по идее должен ещё ускорить алгоритм интерпретатора, правда ещё не разобрался как...
Кто нибудь имел возможность с этим модулем работать?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение sidor094 »

UAVpilot писал(а):Просто настраивается соотв. режим порта, в программе выделяется память под буфер, системному драйверу порта сообщается адрес этого буфера и всё. Потом только пихаешь байты в этот буфер и следишь, чтобы он не переполнялся, а драйвер и чип порта сами будут всё передавать/принимать отслеживая управляющие сигналы.
Все кроме настройки режима с DTR RTS работает.Не получилось настроить СОМ с синхронизацией.
Ответить

Вернуться в «Windows / Mach»