Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение aaleksander »

Вариант: обработать траекторию графически. На рисунках: черным - то, что зашито в УП, красным - как прошла фреза на самом деле.
Можно легко определить области, где надо вмешаться.
Задача: пройти траекторию на максимальной скорости, но так, чтобы красная линия не вышла за черную.
Надо исходники какого-нибудь автосимулятора посмотреть :hehehe:

Фотки вставить не могу: прокси рабочий ругается.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11639
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4644
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

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

aaleksander писал(а):Задача: пройти траекторию на максимальной скорости, но так, чтобы красная линия не вышла за черную.
А вот и не так.
Если взять траекторию по окружности и сохранить ее линейными отрезками - получится многогранник.
И если отрезков много - очень даже похожий на окружность.
Но, чтобы пройти точно по траектории придется останавливаться на каждом изломе, т.к. невозможно мгновенно изменить направление вектора движения не прибегнув к бесконечно высоким ускорениям.

Но в реальности то система могла бы восстановить окружность из отрезков и двигаться без остановок. Собственно, что серьезные системы управления и делают.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Сергей Саныч »

aaleksander писал(а):Фотки вставить не могу: прокси рабочий ругается.
надо сжать jpeg-и посильнее, у нас рабочий прокси тоже не дает загружать файлы больше 1 мегабайта, а меньше - пожалуйста.
Чудес не бывает. Бывают фокусы.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Impartial »

aaleksander писал(а):Вариант: обработать траекторию графически. На рисунках: черным - то, что зашито в УП, красным - как прошла фреза на самом деле.
Можно легко определить области, где надо вмешаться.
Вмешаться не получится. Разбиение на прямые отрезки производит интерполятор главными входными параметрами которого является максимальная скорость, ускорение и период сервоцикла. Чем меньше эти параметры, тем точнее его работа.
Все ухищрения связанные с предсказанием траектории и попытка реализовать различные характеристики разгона/торможения связаны именно с ограничением в периоде сервоцикла 1 мс. Если уменьшить его хотя бы в 10 раз, то все эти ухищрения становятся бессмысленными так как алгоритм планировщика траектории все сделает сам.
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение aaleksander »

Impartial писал(а): Вмешаться не получится. Разбиение на прямые отрезки производит интерполятор главными входными параметрами которого является максимальная скорость, ускорение и период сервоцикла. Чем меньше эти параметры, тем точнее его работа.
Все ухищрения связанные с предсказанием траектории и попытка реализовать различные характеристики разгона/торможения связаны именно с ограничением в периоде сервоцикла 1 мс. Если уменьшить его хотя бы в 10 раз, то все эти ухищрения становятся бессмысленными так как алгоритм планировщика траектории все сделает сам.
Как бы слова все знакомы, но что ты хотел сказать и что из этого следует - не понял :thinking:
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Impartial »

aaleksander писал(а):Как бы слова все знакомы, но что ты хотел сказать и что из этого следует - не понял
"Нефик туда лезть" хотел сказать :)
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11639
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4644
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

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

Impartial писал(а):Все ухищрения связанные с предсказанием траектории и попытка реализовать различные характеристики разгона/торможения связаны именно с ограничением в периоде сервоцикла 1 мс.
Вот здесь не понял.
Наверное, не предсказание, а предпросмотр?
И период сервоцикла тут, вроде бы ни при чем.
Во всяком случае далеко не во всех системах период сервоцикла накладывает ограничения на расчеты планировщика.
В том же килофлопе период сервоцикла говорит лишь о скорости регулирования двигателей, а планировщик работает задолго до этого - вообще на компьютере, а не в контроллере.
aaleksander писал(а):Если уменьшить его хотя бы в 10 раз, то все эти ухищрения становятся бессмысленными так как алгоритм планировщика траектории все сделает сам.
Ну вот в килофлопе он 90 мкс, и что это дает? Что алгоритм планировщика сделает сам? И о каких ухищрениях идет речь?
Я не могу понять.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Impartial »

michael-yurov писал(а):Наверное, не предсказание, а предпросмотр?
Предосмотр на предмет чего? Это и есть предсказание на предмет поведения траектории. Программа то не обладает экстрасенсорными способностями :)
michael-yurov писал(а):И период сервоцикла тут, вроде бы ни при чем.
Ну как же не причем! На периоде сервоцикла постоянен только один параметр - скорость. Как можно еще разбить траекторию не впихнув ее в сервоциклы? Меня сначала тоже озадачивало название "сервоикл". В конечном итоге практически никакого отношения к управлению двигателями он не имеет. Особенно если учесть, что управлять могут и внешние драйвера, например КФЛОП.
Сервоцикл это тик системы. Интерпретатор Г кода работает асинхронно по отношению к подсистеме движения, которая привязана к сервоциклу.
Выглядит это следующим образом:
Интерпретатор расчитывает сервоциклы, заполняя ими буфер ФИФО со скоростью, определяемой возможностью пользовательского режима операционной системы. Это скорость должна быть выше периода сервоцикла. А подсистема движения считывает в режиме реального времени этот поток из ФИФО. Если происходит рассогласование(буфер заполнен), то интерпретатор останавливается. Таким образом в буфере всегда есть данные о будущей траектории. В этом буфере может поместиться не предсказуемое число кадров Г кода. Не знаю как работает алгоритм предсказания МАЧа. Возможно на основании данных этого буфера.
michael-yurov писал(а):Ну вот в килофлопе он 90 мкс, и что это дает? Что алгоритм планировщика сделает сам? И о каких ухищрениях идет речь?
Я не могу понять.
КФЛОП может только управлять двигателями и его сервоцикл получает уже готовые скоростные куски из компа. Поэтому влиять на точность уже не может.
Аватара пользователя
mhael
Мастер
Сообщения: 2443
Зарегистрирован: 09 мар 2013, 11:22
Репутация: 769
Настоящее имя: Ильдар
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение mhael »

Impartial писал(а):Предосмотр на предмет чего? Это и есть предсказание на предмет поведения траектории.
А что G-code вилами на воде писан или он четко определен? что там предсказывать? Это именно предпросмотр. Вот конвеер в процессоре компа занимается как-раз предсказанием, потому что каждая следующая загружаемая команда только "предполагает" результат выполнения предыдущей и выполняются последовательные команды параллелльно. В данном же случает следующая команда четко знает результат выполнения предыдущей, ибо просматривается именно последовательно.
michael-yurov писал(а):Ну вот в килофлопе он 90 мкс, и что это дает? Что алгоритм планировщика сделает сам? И о каких ухищрениях идет речь?
Я не могу понять.
какая траектория будет точнее? та которая была рассчитана с учетом сервоцикла в 90мкс или 100 мс? чемь меньше период сервоцикла, тем меньшими порциями движения мы управляем, и, следовательно более точно к желаемой траектории можем расчитывать движение. Если период сервоцикла уменьшить в 10 раз, о чем сказано выше, то отклонение результата от желаемого будет столь мало, что уже не надо ничего додумывать для уменьшения этого самого отклонения.
Последний раз редактировалось mhael 25 сен 2013, 12:48, всего редактировалось 1 раз.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11639
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4644
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

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

Impartial писал(а):Предосмотр на предмет чего? Это и есть предсказание на предмет поведения траектории. Программа то не обладает экстрасенсорными способностями
На предмет дальнейших изменений направления траектории.
Экстрасенсорными способностями она не обладает, но может что-то предполагать (например, как в онлайн играх при задержке связи игра предполагает, что объекты продолжают двигаться с теми же векторами скорости и ускорения).
Я и говорю, что не предсказание, а предпросмотр - зачем что-то предсказывать, если траектория известна заранее.
Impartial писал(а):На периоде сервоцикла постоянен только один параметр - скорость.
Это вообще про какой сервоцикл идет речь? Я со своей колокольни смотрю. У меня сервоциклы есть только в самом контроллере (в железе), и и с каждым оборотом сервоцикла корректируются управляющие сигналы для моторов. Это может быть не обязательно скорость. Может быть и положение и крутящий момент.
А больше нигде никаких сервоциклов нет, и планировщик траектории ничего не разбивает ни на какие участки. Если нужно двигаться по прямой из точки A в точку B, то планировщик так и передает данные в контроллер в виде прямолинейного отрезка с начальной и конечной скоростью.
А дальше уже не знаю, как там что контроллер делает, наверное, действительно разбивает отрезок на кусочки по 90 мкс.

Но вопрос то не в этом!!!
Вопрос в том - с какой скоростью допустимо двигаться по тому или иному участку траектории, чтобы не выйти за ограничения станка?
С какой скоростью можно двигаться по окружности?
А с какой скоростью можно двигаться по окружности, если она разбита на мелкие отрезки (не останавливаться же на каждом изломе / стыке отрезков!).
А с какой скоростью можно двигаться по эллипсу?
А если он наклонен в пространстве, или спроецирован на поверхность конуса?
Вот это и есть та самая задача, которую нужно решить планировщику, и которая очень непростая.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

Impartial писал(а): На периоде сервоцикла постоянен только один параметр - скорость. Как можно еще разбить траекторию не впихнув ее в сервоциклы?
Impartial писал(а):Разбиение на прямые отрезки производит интерполятор главными входными параметрами которого является максимальная скорость, ускорение и период сервоцикла.
Разбиение происходит именно на прямые потому что на протяжении сервоцикла скорость по осям постоянна. Верно и наоборот :).

Но на самом деле здесь пока речь не о серво циклах и очереди (фифо, вот блин слов напридумывали для стека и очереди :)), а речь тут именно о планировщике траектории. И даже интерпретатор тут не причем. Т.е. сейчас мы говорим о том, что стоит между интерпретатором Гкода и очередью.
mhael писал(а):А что G-code вилами на воде писан или он четко определен? что там предсказывать?
Есть условия IF ;) и еще места срабатывания датчиков и поики датчиков. Но они все делят Gкод на отдельные части и предросмотр за них не заходит :).
aaleksander
Мастер
Сообщения: 577
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение aaleksander »

Появилась мысль разбивать траекторию на участки, рассчитывать ускорения для каждой оси отдельно и потом это все объединять.
Надо код что ли какой-нибудь накалякать.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Impartial »

Nick писал(а):Разбиение происходит именно на прямые потому что на протяжении сервоцикла скорость по осям постоянна. Верно и наоборот .
Наоборот это как? Объясни.
Nick писал(а):Но на самом деле здесь пока речь не о серво циклах и очереди (фифо, вот блин слов напридумывали для стека и очереди ), а речь тут именно о планировщике траектории. И даже интерпретатор тут не причем. Т.е. сейчас мы говорим о том, что стоит между интерпретатором Гкода и очередью.
А там похоже ничего не стоит. Интерпретатор это не только интерпретация Г кода, но и пространственно-временная интерполяция.
Во всяком случае на стыке пользовательской и реалтаймовой частью идет обмен координатами(то самое фифо или очередь). Они могли там появиться только от интерполятора.
Аватара пользователя
mhael
Мастер
Сообщения: 2443
Зарегистрирован: 09 мар 2013, 11:22
Репутация: 769
Настоящее имя: Ильдар
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение mhael »

Nick писал(а):Есть условия IF ;) и еще места срабатывания датчиков и поики датчиков. Но они все делят Gкод на отдельные части и предросмотр за них не заходит
Что и означает, опять же, что нет тут никакого "предсказания"
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11639
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4644
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

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

Nick писал(а):Есть условия IF и еще места срабатывания датчиков и поики датчиков. Но они все делят Gкод на отдельные части и предросмотр за них не заходит .
У меня такие команды тоже буферизируются (например, когда нужно вывести диалоговое окно и спросить оператора о дальнейших действиях).
Когда контроллер до них доходит - он сообщает об этом управляющей программе, а она уже принимает решение, что делать дальше.
А если нужно какие-нибудь пины переключить между строками G-кода, то такие команды тоже передаются в контроллер вместе с запланированной траекторией, и контроллер выполняет в нужных местах в нужные моменты без обращения к компьютеру. Но остановка станка на таких командах все же происходит, т.к. если сгладить стыковку по G64, то не понятно, в какой момент нужно выполнять такую команду переключения пина.
Аватара пользователя
Starik
Опытный
Сообщения: 136
Зарегистрирован: 13 май 2012, 21:22
Репутация: 17
Откуда: Долгопрудный

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Starik »

Вот такую занимательную статейку на тему однажды нарыл...
Вложения
2012_beudaert_lavernhe_tournier_Feedrate_interpolation_with_axis_jerk_constraints_on_5_axis_NURBS_and_G1_tool_path.pdf
(1.77 МБ) 873 скачивания
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp »

вот он "хорошочитаемый" код на си :)
дискус на тему "как же оно там устроено в емс" вместо просто посмотреть как же оно точно там сделано))))
был бы код на питоне - наверно все было бы гораздо понятней из кода...
даже не понятно - какие блоки за какими стоят...
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Impartial »

nkp писал(а):был бы код на питоне - наверно все было бы гораздо понятней из кода...
На питоне там тоже немало написано. Понимания это не прибавляет.
Я начал немного понимать только когда прицепил отладчик при переносе части емс на микроконтроллер.
Связано это просто с ленью разбираться с чужим кодом. Написано там довольно понятно. Просто не зная что за чем стоит разбираться сложно.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11639
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4644
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

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

Хорошая статья. Буду читать.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Lexxa »

1) по поводу высокой производительности компа вопрос крайне спорный - как тогда пенек третий на хаайденхайне успевает 18 осей крутить одновременно?
2) никто не отменял принципа разделяй и властвуй. Чать кода можно(и нужно) реализовать на плисках типа 5i20/25 итд от месы, все равно они и половины функций не истратили
3) про быстрые алгоритмы обработки сигналов тоже забывать не стоит
:bender:
Ответить

Вернуться в «LinuxCNC»