Что я еще не знал о LinuxCNC, что нам еще предстоит сделать
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Вариант: обработать траекторию графически. На рисунках: черным - то, что зашито в УП, красным - как прошла фреза на самом деле.
Можно легко определить области, где надо вмешаться.
Задача: пройти траекторию на максимальной скорости, но так, чтобы красная линия не вышла за черную.
Надо исходники какого-нибудь автосимулятора посмотреть
Фотки вставить не могу: прокси рабочий ругается.
Можно легко определить области, где надо вмешаться.
Задача: пройти траекторию на максимальной скорости, но так, чтобы красная линия не вышла за черную.
Надо исходники какого-нибудь автосимулятора посмотреть
Фотки вставить не могу: прокси рабочий ругается.
- michael-yurov
- Почётный участник
- Сообщения: 11639
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4644
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
А вот и не так.aaleksander писал(а):Задача: пройти траекторию на максимальной скорости, но так, чтобы красная линия не вышла за черную.
Если взять траекторию по окружности и сохранить ее линейными отрезками - получится многогранник.
И если отрезков много - очень даже похожий на окружность.
Но, чтобы пройти точно по траектории придется останавливаться на каждом изломе, т.к. невозможно мгновенно изменить направление вектора движения не прибегнув к бесконечно высоким ускорениям.
Но в реальности то система могла бы восстановить окружность из отрезков и двигаться без остановок. Собственно, что серьезные системы управления и делают.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
надо сжать jpeg-и посильнее, у нас рабочий прокси тоже не дает загружать файлы больше 1 мегабайта, а меньше - пожалуйста.aaleksander писал(а):Фотки вставить не могу: прокси рабочий ругается.
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Вмешаться не получится. Разбиение на прямые отрезки производит интерполятор главными входными параметрами которого является максимальная скорость, ускорение и период сервоцикла. Чем меньше эти параметры, тем точнее его работа.aaleksander писал(а):Вариант: обработать траекторию графически. На рисунках: черным - то, что зашито в УП, красным - как прошла фреза на самом деле.
Можно легко определить области, где надо вмешаться.
Все ухищрения связанные с предсказанием траектории и попытка реализовать различные характеристики разгона/торможения связаны именно с ограничением в периоде сервоцикла 1 мс. Если уменьшить его хотя бы в 10 раз, то все эти ухищрения становятся бессмысленными так как алгоритм планировщика траектории все сделает сам.
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Как бы слова все знакомы, но что ты хотел сказать и что из этого следует - не понялImpartial писал(а): Вмешаться не получится. Разбиение на прямые отрезки производит интерполятор главными входными параметрами которого является максимальная скорость, ускорение и период сервоцикла. Чем меньше эти параметры, тем точнее его работа.
Все ухищрения связанные с предсказанием траектории и попытка реализовать различные характеристики разгона/торможения связаны именно с ограничением в периоде сервоцикла 1 мс. Если уменьшить его хотя бы в 10 раз, то все эти ухищрения становятся бессмысленными так как алгоритм планировщика траектории все сделает сам.
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
"Нефик туда лезть" хотел сказатьaaleksander писал(а):Как бы слова все знакомы, но что ты хотел сказать и что из этого следует - не понял
- michael-yurov
- Почётный участник
- Сообщения: 11639
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4644
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Вот здесь не понял.Impartial писал(а):Все ухищрения связанные с предсказанием траектории и попытка реализовать различные характеристики разгона/торможения связаны именно с ограничением в периоде сервоцикла 1 мс.
Наверное, не предсказание, а предпросмотр?
И период сервоцикла тут, вроде бы ни при чем.
Во всяком случае далеко не во всех системах период сервоцикла накладывает ограничения на расчеты планировщика.
В том же килофлопе период сервоцикла говорит лишь о скорости регулирования двигателей, а планировщик работает задолго до этого - вообще на компьютере, а не в контроллере.
Ну вот в килофлопе он 90 мкс, и что это дает? Что алгоритм планировщика сделает сам? И о каких ухищрениях идет речь?aaleksander писал(а):Если уменьшить его хотя бы в 10 раз, то все эти ухищрения становятся бессмысленными так как алгоритм планировщика траектории все сделает сам.
Я не могу понять.
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Предосмотр на предмет чего? Это и есть предсказание на предмет поведения траектории. Программа то не обладает экстрасенсорными способностямиmichael-yurov писал(а):Наверное, не предсказание, а предпросмотр?
Ну как же не причем! На периоде сервоцикла постоянен только один параметр - скорость. Как можно еще разбить траекторию не впихнув ее в сервоциклы? Меня сначала тоже озадачивало название "сервоикл". В конечном итоге практически никакого отношения к управлению двигателями он не имеет. Особенно если учесть, что управлять могут и внешние драйвера, например КФЛОП.michael-yurov писал(а):И период сервоцикла тут, вроде бы ни при чем.
Сервоцикл это тик системы. Интерпретатор Г кода работает асинхронно по отношению к подсистеме движения, которая привязана к сервоциклу.
Выглядит это следующим образом:
Интерпретатор расчитывает сервоциклы, заполняя ими буфер ФИФО со скоростью, определяемой возможностью пользовательского режима операционной системы. Это скорость должна быть выше периода сервоцикла. А подсистема движения считывает в режиме реального времени этот поток из ФИФО. Если происходит рассогласование(буфер заполнен), то интерпретатор останавливается. Таким образом в буфере всегда есть данные о будущей траектории. В этом буфере может поместиться не предсказуемое число кадров Г кода. Не знаю как работает алгоритм предсказания МАЧа. Возможно на основании данных этого буфера.
КФЛОП может только управлять двигателями и его сервоцикл получает уже готовые скоростные куски из компа. Поэтому влиять на точность уже не может.michael-yurov писал(а):Ну вот в килофлопе он 90 мкс, и что это дает? Что алгоритм планировщика сделает сам? И о каких ухищрениях идет речь?
Я не могу понять.
- mhael
- Мастер
- Сообщения: 2443
- Зарегистрирован: 09 мар 2013, 11:22
- Репутация: 769
- Настоящее имя: Ильдар
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
А что G-code вилами на воде писан или он четко определен? что там предсказывать? Это именно предпросмотр. Вот конвеер в процессоре компа занимается как-раз предсказанием, потому что каждая следующая загружаемая команда только "предполагает" результат выполнения предыдущей и выполняются последовательные команды параллелльно. В данном же случает следующая команда четко знает результат выполнения предыдущей, ибо просматривается именно последовательно.Impartial писал(а):Предосмотр на предмет чего? Это и есть предсказание на предмет поведения траектории.
какая траектория будет точнее? та которая была рассчитана с учетом сервоцикла в 90мкс или 100 мс? чемь меньше период сервоцикла, тем меньшими порциями движения мы управляем, и, следовательно более точно к желаемой траектории можем расчитывать движение. Если период сервоцикла уменьшить в 10 раз, о чем сказано выше, то отклонение результата от желаемого будет столь мало, что уже не надо ничего додумывать для уменьшения этого самого отклонения.michael-yurov писал(а):Ну вот в килофлопе он 90 мкс, и что это дает? Что алгоритм планировщика сделает сам? И о каких ухищрениях идет речь?
Я не могу понять.
Последний раз редактировалось mhael 25 сен 2013, 12:48, всего редактировалось 1 раз.
- michael-yurov
- Почётный участник
- Сообщения: 11639
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4644
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
На предмет дальнейших изменений направления траектории.Impartial писал(а):Предосмотр на предмет чего? Это и есть предсказание на предмет поведения траектории. Программа то не обладает экстрасенсорными способностями
Экстрасенсорными способностями она не обладает, но может что-то предполагать (например, как в онлайн играх при задержке связи игра предполагает, что объекты продолжают двигаться с теми же векторами скорости и ускорения).
Я и говорю, что не предсказание, а предпросмотр - зачем что-то предсказывать, если траектория известна заранее.
Это вообще про какой сервоцикл идет речь? Я со своей колокольни смотрю. У меня сервоциклы есть только в самом контроллере (в железе), и и с каждым оборотом сервоцикла корректируются управляющие сигналы для моторов. Это может быть не обязательно скорость. Может быть и положение и крутящий момент.Impartial писал(а):На периоде сервоцикла постоянен только один параметр - скорость.
А больше нигде никаких сервоциклов нет, и планировщик траектории ничего не разбивает ни на какие участки. Если нужно двигаться по прямой из точки A в точку B, то планировщик так и передает данные в контроллер в виде прямолинейного отрезка с начальной и конечной скоростью.
А дальше уже не знаю, как там что контроллер делает, наверное, действительно разбивает отрезок на кусочки по 90 мкс.
Но вопрос то не в этом!!!
Вопрос в том - с какой скоростью допустимо двигаться по тому или иному участку траектории, чтобы не выйти за ограничения станка?
С какой скоростью можно двигаться по окружности?
А с какой скоростью можно двигаться по окружности, если она разбита на мелкие отрезки (не останавливаться же на каждом изломе / стыке отрезков!).
А с какой скоростью можно двигаться по эллипсу?
А если он наклонен в пространстве, или спроецирован на поверхность конуса?
Вот это и есть та самая задача, которую нужно решить планировщику, и которая очень непростая.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Impartial писал(а): На периоде сервоцикла постоянен только один параметр - скорость. Как можно еще разбить траекторию не впихнув ее в сервоциклы?
Разбиение происходит именно на прямые потому что на протяжении сервоцикла скорость по осям постоянна. Верно и наоборот .Impartial писал(а):Разбиение на прямые отрезки производит интерполятор главными входными параметрами которого является максимальная скорость, ускорение и период сервоцикла.
Но на самом деле здесь пока речь не о серво циклах и очереди (фифо, вот блин слов напридумывали для стека и очереди ), а речь тут именно о планировщике траектории. И даже интерпретатор тут не причем. Т.е. сейчас мы говорим о том, что стоит между интерпретатором Гкода и очередью.
Есть условия IF и еще места срабатывания датчиков и поики датчиков. Но они все делят Gкод на отдельные части и предросмотр за них не заходит .mhael писал(а):А что G-code вилами на воде писан или он четко определен? что там предсказывать?
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Появилась мысль разбивать траекторию на участки, рассчитывать ускорения для каждой оси отдельно и потом это все объединять.
Надо код что ли какой-нибудь накалякать.
Надо код что ли какой-нибудь накалякать.
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Наоборот это как? Объясни.Nick писал(а):Разбиение происходит именно на прямые потому что на протяжении сервоцикла скорость по осям постоянна. Верно и наоборот .
А там похоже ничего не стоит. Интерпретатор это не только интерпретация Г кода, но и пространственно-временная интерполяция.Nick писал(а):Но на самом деле здесь пока речь не о серво циклах и очереди (фифо, вот блин слов напридумывали для стека и очереди ), а речь тут именно о планировщике траектории. И даже интерпретатор тут не причем. Т.е. сейчас мы говорим о том, что стоит между интерпретатором Гкода и очередью.
Во всяком случае на стыке пользовательской и реалтаймовой частью идет обмен координатами(то самое фифо или очередь). Они могли там появиться только от интерполятора.
- mhael
- Мастер
- Сообщения: 2443
- Зарегистрирован: 09 мар 2013, 11:22
- Репутация: 769
- Настоящее имя: Ильдар
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Что и означает, опять же, что нет тут никакого "предсказания"Nick писал(а):Есть условия IF и еще места срабатывания датчиков и поики датчиков. Но они все делят Gкод на отдельные части и предросмотр за них не заходит
- michael-yurov
- Почётный участник
- Сообщения: 11639
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4644
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
У меня такие команды тоже буферизируются (например, когда нужно вывести диалоговое окно и спросить оператора о дальнейших действиях).Nick писал(а):Есть условия IF и еще места срабатывания датчиков и поики датчиков. Но они все делят Gкод на отдельные части и предросмотр за них не заходит .
Когда контроллер до них доходит - он сообщает об этом управляющей программе, а она уже принимает решение, что делать дальше.
А если нужно какие-нибудь пины переключить между строками G-кода, то такие команды тоже передаются в контроллер вместе с запланированной траекторией, и контроллер выполняет в нужных местах в нужные моменты без обращения к компьютеру. Но остановка станка на таких командах все же происходит, т.к. если сгладить стыковку по G64, то не понятно, в какой момент нужно выполнять такую команду переключения пина.
- Starik
- Опытный
- Сообщения: 136
- Зарегистрирован: 13 май 2012, 21:22
- Репутация: 17
- Откуда: Долгопрудный
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Вот такую занимательную статейку на тему однажды нарыл...
- Вложения
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
вот он "хорошочитаемый" код на си
дискус на тему "как же оно там устроено в емс" вместо просто посмотреть как же оно точно там сделано))))
был бы код на питоне - наверно все было бы гораздо понятней из кода...
даже не понятно - какие блоки за какими стоят...
дискус на тему "как же оно там устроено в емс" вместо просто посмотреть как же оно точно там сделано))))
был бы код на питоне - наверно все было бы гораздо понятней из кода...
даже не понятно - какие блоки за какими стоят...
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
На питоне там тоже немало написано. Понимания это не прибавляет.nkp писал(а):был бы код на питоне - наверно все было бы гораздо понятней из кода...
Я начал немного понимать только когда прицепил отладчик при переносе части емс на микроконтроллер.
Связано это просто с ленью разбираться с чужим кодом. Написано там довольно понятно. Просто не зная что за чем стоит разбираться сложно.
- michael-yurov
- Почётный участник
- Сообщения: 11639
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4644
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Хорошая статья. Буду читать.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
1) по поводу высокой производительности компа вопрос крайне спорный - как тогда пенек третий на хаайденхайне успевает 18 осей крутить одновременно?
2) никто не отменял принципа разделяй и властвуй. Чать кода можно(и нужно) реализовать на плисках типа 5i20/25 итд от месы, все равно они и половины функций не истратили
3) про быстрые алгоритмы обработки сигналов тоже забывать не стоит
2) никто не отменял принципа разделяй и властвуй. Чать кода можно(и нужно) реализовать на плисках типа 5i20/25 итд от месы, все равно они и половины функций не истратили
3) про быстрые алгоритмы обработки сигналов тоже забывать не стоит