Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение PKM »

aftaev писал(а):Насколько знаю если какая ось "не успевает" другие тормозятся иначе нет интерполяции
Urban legend
Ось ничего не знает о положении других осей, каждая имеет свое задание и управляется своим ПИДом. Ну а если слишком большое отклонение в любой оси - ferror зашкаливает и авария.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение Serg »

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

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение Nick »

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

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение Serg »

Только вот с момента появления события от wachdog до начала исполнения его обработчика может пройти негарантируемый период времени.
Формально тут заколдованный круг: как можно гарантировать точность в 0.1 секунды в системе, где не гарантируются время обработки событий?

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

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение Impartial »

Nick писал(а):Тут еще вот какая проблема, честно говоря даже не представляю как это в LinuxCNC реализовано:

Хрен с ним с base-thread представим, что все решено, но для того, чтобы сделать рассчет траектории в servothread надо получить обратную связь на начало периода, потом все рассчитать и выдать задание, но все это время рассчета будет проходить перемещение ведь вычисления могут затянуться дольше чем на 1 base-thread... Хотя все это может сглаживаться за счет 1 такта серво...
Реализовано не сложно, в плане идеологии. Интерпретатор анализируя текущий кадр Г кода выдает точку в пространстве, в которую необходимо переместить инструмент, по отношению к предыдущему кадру, и отдает эту точку интерполятору (кубический сплайн). Интерполятор строит траекторию в пространстве, по которой должен пройти инструмент, чтобы достигнуть заданной точки, выдавая на выходе проекции на оси. Эта пространственная траектория подается на вход планировщика траектории, или временного интерполятора, который, учитывая установленные максимальные скорости и ускорения, строит временнОй график скоростей по каждой оси опираясь на период сервоцикла. Весь этот расчет производится каждый раз при получении нового кадра. На этом работа ЕМС заканчивается. Далее полученный массив скоростей просто проигрывается с периодом сервоцикла.
Обратной связи ни по позиции ни по скорости в ЕМС нет никакой. Нет Г кода, который бы позволял считать текущую позицию инструмента, и на основании ее изменить ход выполнения программы. ЕМС просто сканирует, с периодом серворцикла, состояние выходов ошибки приводов и уходит в аварию при их появлении.
Генератор шагов и ПИД (впрочем генератор шагов это тот же ПИД) это компонеты либо внешние, либо внутренние ХАЛ. Так вот для работы этих самых компонентов ХАЛ и требуется режим реального времени. Если перенести эти функции на аппаратную часть, то необходимость в ней отпадает.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение Nick »

Impartial писал(а):(кубический сплайн)
Не не не - кубический сплайн штука коварная и не удобная для наших задач, одна из самых сложных задач - нахождение t для заданной длинны дуги. Аналитически практически не решается. Я как-то попробовал в какую-то математику запихать интеграл, который считает длинну этой дуги, в итоге получилась формула на 14 страниц, где часто встречаются странные буквы, которые означают корни многочлена n-той степени :).

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

Re: Olimex iMX233-OLINUXINO-Micro linux computer ARM926J

Сообщение Impartial »

Nick писал(а):Не не не - кубический сплайн штука коварная и не удобная для наших задач,
Нахождение коэффициентов полинома действительно непростая задача, если решать влоб :)
Вот выделенный из ЕМС кубический интерполятор.
cubic.rar
(2.83 КБ) 444 скачивания
А какой аппаратной части мы говорим, какой-то маленький чип на предложенной плате или отдельный девайс?
О внутренних таймерах основного чипа.
Ответить

Вернуться в «Электроника»