Совместная разработка системы ЧПУ.

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение sidor094 »

А нельзя сразу при разборе получать обновлять измененные координаты + флаг изменения,далее сразу устанавливать тип действия g0,g1,g2,g3,g31,g33 ну и может еще каких нибудь команд движения,с тем чтобы сразу после разбора перейти к подпрограмме обработки команд движения(например g0(); ).Кроме того при поступлении различных команд типа g4,g90,91 и других меняющих установки работы чпу включая M коды выполнять их сразу в теле разбора(или вызывая соответствующие подпрограммы (например g4() ;) еще до окончания разбора всей строки,
В таком случае разбор бы заканчивался либо вызовом подпрограммы расчета движения согласно типу действия и затем выходом из обработки строки,либо непосредственно выити уже сделав соответствующие установки системы.
AAN
Мастер
Сообщения: 284
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 35
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение AAN »

MX_Master писал(а): Сразу видно, человек не знает как работает большинство популярных ЧПУ систем. Давайте без лишних разговоров сразу к примерам.

GRBL/Marlin/Smoothieware/... - вся ЧПУ работает внутри микроконтроллера. <>
Я больше всего работал с промышленными стойками, там, за исключением какого-нибудь совсем древнего Фанук 6м (у которого буфер на один кадр) предпросмотр (и сооьветственно, синтаксический разбор) на десятки кадров. например, у Heidenhain 426, если не ошибаюсь, предпросмотр 80кадров, и это очень важно, например, при ВСО, где опорожнился буфер и встала фреза- деталь на выброс. А стойке, на которой я работал черверть века стукнуло, и пашет до сих пор. А разрабатывали её, естественно, ещё раньше.
К чему я это всё - Вы, конечно, можете сразу заложиться на устаревшие подходы, но какой смысл? Сделать 101-й безнадёжный продукт?
Нужно как-то использовать достижения последних десятилетий.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

sidor094 писал(а): А нельзя сразу при разборе
Конечно, можно. Но получится монолитное решение. А в монолит отдельные доп. модули уже не внедрить. Я, к примеру, сейчас добавляю код разбора параметров внутри строки. И вижу, что разбор параметров это задача, которую можно сделать полностью отдельной функцией. И разбор комментариев надо сделать отдельной функцией, т.к. в комментариях могут быть команды, не связанные с G кодом. Всё это даст системе возможность выбора. А в монолитном подходе выбора нет, все параметры и комментарии будут разобраны в любом случае, надо это или не надо.
AAN писал(а): К чему я это всё - Вы, конечно, можете сразу заложиться на устаревшие подходы, но какой смысл? Сделать 101-й безнадёжный продукт?
Нужно как-то использовать достижения последних десятилетий.
Если под фразой "устаревшие подходы" подразумевается использование С/С++ в критичных по времени задачах, я, пожалуй, буду придерживаться устаревших :) При этом я с удовольствием использую скриптовые языки и текстовую разметку для GUI.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение sidor094 »

MX_Master писал(а): А в монолит отдельные доп. модули уже не внедрить.
Не понятно почему.Потом ,зачем внедрять доп модули,парсер всетаки достаточно стандартное решение.А простые расширения ввиде различных новых G и M кодов легко дописываются и вставляются а текст.У меня для расширения и обработки сложных циклов сделано так,что после просмотра всех возможных g кодов и при отсутствии кода в готовых идет поиск дополнительных кодов,которые выполнены в виде подпрограмм находящегося на флешке в файле functions.ini и при включении системы перегружаются с флешки в озу системы при этом для ускорения обработки расчитываются адреса начала каждой подпрограммы.Подпрограммы именуются номерами кодов (например подпрограмма с О500 будет вызываться кодом g500.Таким оьразом можно создавать G кода для сложной обработки например многопроходной резьбы или проточки .Точно также устроена обработка смены инструмента так как в подпрограмме можно написать условия по опросу портов и их установки.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

sidor094 писал(а): А простые расширения ввиде различных новых G и M кодов легко дописываются и вставляются а текст.
Такой подход как раз и противоречит модульному подходу (из Unix Way). В итоге может получиться огромный комбайн в виде одной функции, которая делает всё - и играет, и пляшет, и поёт, и ещё немного вышивает крестиком.

Я понимаю, что не хочется переделывать готовый код под какой-то стандарт. Я этого ни от кого не требую, кроме самого себя. Желание "делать всё по-своему" есть у всех. Но это работает, когда круг участников не более одного-двух. А для массовой работы нужны стандарты.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение sidor094 »

MX_Master писал(а): Я этого ни от кого не требую, кроме самого себя. Желание "делать всё по-своему" есть у всех. Но это работает, когда круг участников не более одного-двух. А для массовой работы нужны стандарты.
Я с этим не спорю.Просто на выходе хотелось бы получить не перемолоченный код , а вызов определенной функции движения (g0,g1...)по окончании обработки строки и внутри обработки вызов установочных функций(g90,g91,g42,...) .Какой смысл перелопачивать код для получения его в более удобном для обработки виде,если все равно придется снова затратить время для его обработки и в итоге на выходе все равно получим вызов функции (g1,g2....)?Не оптимально,да и не вижу удобств для работы в команде.Чем первый вариант менее удобен?
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение a321 »

Наверняка сочтете, что не в тему, но поднимать новую не стоит -
https://habr.com/ru/company/timeweb/blog/707410/
плата со 128 входами и выходами, опторазвязанными
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

a321 писал(а): Наверняка сочтете, что не в тему, но поднимать новую не стоит -
https://habr.com/ru/company/timeweb/blog/707410/
плата со 128 входами и выходами, опторазвязанными
https://aliexpress.ru/item/1005004607691148.html
Налетай, торопись, покупай, не скупись :hehehe:
И при такой цене оно ещё не работает с быстрыми сигналами. Интернет вещей же :)

sidor094 писал(а): Просто на выходе хотелось бы получить не перемолоченный код , а вызов определенной функции
Так и будет, но этими вызовами заниматься должен не парсер G кода, а планировщик. А если мы используем парсер G кода для визуализации, то вызовами функций будет заниматься визуализатор. При этом они оба используют один и тот же модуль разбора G кода, но каждый - для своих задач. Вот здесь выигрыш и будет.

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

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

Код: Выделить всё

    // setup buffers
    from = str1; to = str2;

    // parse and replace parameter values, #n and #<NAME>
    parameters_cnt = gcode_parse_parameters(from, to, &gdata);
    if ( parameters_cnt > 0 ) { from = str2; to = str1; }

    // parse and remove comments, (...) and ;
    comments_cnt = gcode_parse_comments(from, to, &gdata);
    if ( comments_cnt > 0 ) { from = str1; to = str2; }

    // parse, calculate and replace expressions, [any math]
    expressions_cnt = gcode_parse_expressions(from, to, &gdata);
    if ( expressions_cnt > 0 ) { from = str2; to = str1; }

    // parse and remove parameters setup, #n=n and #<NAME>=n
    parameters_setup_cnt = gcode_parse_parameters_setup(from, to, &gdata);
    if ( parameters_setup_cnt > 0 ) { from = str1; to = str2; }

    // parse words, Gn Mn Xn Yn ...
    words_cnt = gcode_parse_words(from, &gdata);
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение sidor094 »

MX_Master писал(а): но этими вызовами заниматься должен не парсер G кода, а планировщик.
Я никогда не использовал планировщик,поэтому не очень представляю ,как он работает.А разве нельзя запускать планировщик при вызове функции (например G1)непосредственно внутри подпрограммы G1?
MX_Master писал(а): . А если мы используем парсер G кода для визуализации, то вызовами функций будет заниматься визуализато
А разве визуализатор не использует те же функции,просто при движении не только делая шаги,но и ставя точки на экран?
(Код как то не очень понял)
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

Визуализатор может быть на другом устройстве или полностью в другом процессе того же устройства. И ему какие-то функции при разборе кода будут не нужны, а какие-то наоборот, нужны. Например, комментарии вида (КОМАНДА, ЗНАЧЕНИЕ) планировщику не интересны, а визуализатор будет оттуда брать настройки отображения.

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

ЗЫ код был только для примера читабельности кода при модульном подходе
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение sidor094 »

MX_Master писал(а): Планировщик у тебя есть в самой функции разбора текста G кода.
В разборе текста у меня нет планировщика.Только выделение данных и по ним вызов соответствующей подпрограммы.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение sidor094 »

MX_Master писал(а): Визуализатор может быть на другом устройстве или полностью в другом процессе того же устройства.
У меня рисовалка просто отображает текущую координату движения в трехмерном пространстве.Но это работает только наполный стол станка и без перерисовки т.к отображается прямо на экране и не имеет буфера в озу.Если надо быстро предварительно просмотреть программу,то программа выполняется полностью за изелючением того,что шаги делаются не по прерыванию таймера ,а подряд насколько позволяет скорость процессора.Ну и шагов на драйвера не поступает,только виртуальные.Но это пока иногда глючит.Пользуюсь редко.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

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

Что касается визуализатора.. для него, всё-таки, нужен процессор/видеочип помощней. Поэтому свой вариант интерфейса я делаю на более медленной настольной связке HTML/CSS/JS/WebGL. Но не исключаю, что будет ещё пара простых вариантов на С. Возможно, и на базе OpenGL ES, для ПК и мини ПК.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение aftaev »

Пока вы думаете как надо, народ берет и делает ЧПУ, платы, привода ;)
https://www.youtube.com/watch?v=e63kaxLendw
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

Да мы, особо, и не думаем. У Сергея уже есть своё ЧПУ. Готовые закрытые ЧПУ есть и у других участников форума. У Михаила Юрова тоже скоро будет. А я делаю открытую систему, которая будет работать на любом утюге, но функционально будет не хуже LinuxCNC. Сканер G кода как раз оттуда. Скоро выложу новую версию, которая работает с параметрами, функциями и т.п.

Если кто-то хочет делать моторы и привода - милости просим. Жаль только, что исходники никто не выкладывает.
Аватара пользователя
Prav
Мастер
Сообщения: 827
Зарегистрирован: 14 июл 2015, 05:10
Репутация: 138
Настоящее имя: Петр Раввинский
Откуда: Москва
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение Prav »

MX_Master писал(а): 01 янв 2023, 01:55 ... У Михаила Юрова тоже скоро будет. ...
Скоро выложу новую версию, которая работает с параметрами, функциями и т.п. ...
Скоро - это хорошо! :)
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение michael-yurov »

MX_Master писал(а): У Михаила Юрова тоже скоро будет.
Есть такая вероятность. Но работы еще много. Примерно половина.
Я не пытаюсь превзойти LinuxCNC или mach3 по функционалу, но стараюсь сделать программу более качественно.
Большинство функций сначала пишу, чтобы просто работали, а потом трачу в 20 раз больше времени, чтобы довести код до ума.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение MX_Master »

aftaev писал(а): 31 дек 2022, 23:47 Пока вы думаете как надо, народ берет и делает ЧПУ, платы, привода ;)
На панели управления - обычный LinuxCNC c интерфейсом gmocappy. Импортозамещение идёт полным ходом :hehehe:
гражданинъ
Мастер
Сообщения: 1234
Зарегистрирован: 07 фев 2020, 21:00
Репутация: 160
Настоящее имя: Дмитрий
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение гражданинъ »

MX_Master писал(а): обычный LinuxCNC
Ну ты дунул ! А плащи с капюшонами и геральдикой на спине не в счёт? Тут совсем другие силы действуют ! :hehehe:
Гражданином Непала может быть любой гражданин,зачатый НЕпалкой и НЕпальцем.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Совместная разработка системы ЧПУ.

Сообщение aftaev »

MX_Master писал(а): На панели управления - обычный LinuxCNC c интерфейсом gmocappy. Импортозамещение идёт полным ходом
Платы, сервопривод который кушает многое из датчиков видел? Ты наверно не в курсе что делает DP Lab.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Ответить

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