аппаратный StepGen

Контроллеры, драйверы, датчики, управляющие устройства.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

аппаратный StepGen

Сообщение Steel.ne »

Смотрю в сторону реализации аппаратного USB stepgen - всякие аналоги smooth stepper, planet cnc и иже с ними. Но хочется чего-то более открытого.
Поясню - каждый изобретает свой тщательно охраняемый протокол взаимодействия со своим устройством через USB, соотвественно на компе у каждого своя программа.

Хотелось бы в идеале такую схему: на компе программа отрабатывает g-код, учитывает все смещения, циклы, переменные, look-ahead и прочие вкусности, а в контроллер гонится уже максимально привязанный к машинным координатам поток данных. В идеале вообще в шагах :) Всеми измерениями заведует контроллер, данные для пересчетов смещений передает на комп. Как-то так.
Например, программа интерполирует все полиномами, в контроллер гонятся коэффициенты, а уже сама интерполяция происходит "аппаратно" в реалтайме. Вобщем много вариантов.

И, соответственно, ищется более-менее распространенная программа на компе. Сначала увидел EMC, обрадовался. Потом все оказалось грустно - мало того, что все происходит внутри модуля motion, так еще ядро реалтаймовое не поддерживает ничего кроме лпт-порта. А счастье было так возможно ((

mach3 - платный и закрытый. Хотя в ближайшее время помедитирую над плагинами и путем smooth stepper. Хотя озвучено, что в smooth stepper-e нельзя компенсировать люфт, значит и там какая-то принципиальная собака зарыта.

gigamesh - вроде идеально подходит, тем более на форуме раздел рассуждений о протоколах, разделению сущностей и т.п. Но заброшен и никаких новостей ((

Что еще я может быть упустил?
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: аппаратный StepGen

Сообщение Impartial »

С завидной регулярностью генерируются подобные идеи на различных форумах.
И всем кажется, что их идея самая оригинальная.
Ну зачем с нуля начинать. Здесь в соседней теме большая часть работы уже сделана.
http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=1771
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: аппаратный StepGen

Сообщение Nick »

Главный вопрос который надо решить - стабильная передача данных раз в servo-thread, т.е. около раз в мс. Мне неоднократно говорили, что есть библиотеки, типа libusb, которые это умеют (передача в изохронном режиме), но никак не могу до них добраться.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Nick писал(а):Главный вопрос который надо решить - стабильная передача данных раз в servo-thread, т.е. около раз в мс. Мне неоднократно говорили, что есть библиотеки, типа libusb, которые это умеют (передача в изохронном режиме), но никак не могу до них добраться.
для реалтаймового ядра даже просто usb внятного нет. И задача - убрать весь реалтайм с компа.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Impartial писал(а):С завидной регулярностью генерируются подобные идеи на различных форумах.
И всем кажется, что их идея самая оригинальная.
Ну зачем с нуля начинать. Здесь в соседней теме большая часть работы уже сделана.
http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=1771
Та вот в том-то и дело, что не хочется "еще один контроллер на pic со своей программой, которая работает только под XP"
тред почитаю внимательней, вроде там не то что хотелось...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: аппаратный StepGen

Сообщение Nick »

А почему это ядро не умеет с usb работать?
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Nick писал(а):А почему это ядро не умеет с usb работать?
Linux hardware drivers cannot be used from the realtime context, so it is not possible to reuse them. In principle, emc supports two different real-time kernels (rtlinux and rtai) and they have no mutually compatiable hardware drivers. For this reason, hal hardware drivers have been written in the lowest possible terms: inb(), outb() and the like. Realistically, the only real-time kernel we know of people using with emc2 is rtai. For this reason, it is reasonable to consider using higher-level drivers that work with rtai.

там же говорят, что в принципе есть проект rt-usb, но его никто вживую не видел ))
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Impartial писал(а):Здесь в соседней теме большая часть работы уже сделана.
http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=1771
Прочитал. Понял, что основной путь - это в контроллер засунуть EMC и не парится, так?
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: аппаратный StepGen

Сообщение Impartial »

Ну можно и так, только довольно сложно. Проще идти по накатанной месе/плуто.
Для ЕМС USB возможен только HS(480 МБит/125ns) и только при условии написания аппаратного драйвера. Правда это касается только сервопривода, завязанного на ХАЛ. Аппаратные блоки степгенов и ПИД можно и на FS запустить. Только смысла в этой затее нет, там получается все впритирку, поэтому никто еще не сделал что нибудь путнее.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: аппаратный StepGen

Сообщение Nick »

Ну можно же servo период сделать по-больше, скажем 2-5мс, при этом останется плавность управления шаговиками.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Та в том-то и дело, хочу все, что на компе вывести из реалтайма. Вон аналог - тот же "Кулибин". Связь через usb, протокол самобытный, но пилит же.
Рано или поздно плюну, изобрету свой велосипед. Но скорее всего он уже изобретен ))

Impartial, ты меня уже почти убедил в том, чтобы всунуть в контроллер разборку g-кода. А его можно хоть через gprs заливать ))

Потому что рассуждения примерно такие:
самый нижний уровень: шаги транслировать не получится - слишком часто, и очень реалтаймово )
поднимаемся выше - координаты точек с частотой servo_thread, между ними едем по прямой - уже лучше, но все-равно часто слишком. За 1 мс двигатель делает с десяток степов.
еще выше - передаем точки, по которым строится бикубические сплайны, можно вместе с коэффициентами этих сплайнов. Вот на это ходил, облизывался как кот на сметану. Уже был готов дописать несколько пинов в motmod. Но тут сказывается реалтаймовость emc2 - эти точки генерируются и обрабатываются в servo_thread, то есть налету. И любая задержка будет сказываться в дерганности движения.
Конечно, можно сначала накомпилировать этих точек, а потом неспеша их заливать в порт. Но как-то длинно и через левое ухо.

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

ну а раз мы и так разбираем g-код, то тут уже один шаг до того, чтобы вся программа разбиралась на контроллере. В этом случае софт на компе делает только copy file.cnc usb1 с минимальными кнопочками. Вплоть до того, что контроллер виден как mass storage, на который и копируется файл g-кода.
Визуализацию можно желать на экранчике контроллера, тем более что от нее особых изобразительных качеств не требуется - было бы видно, где сейчас фреза и сколько времени осталось.

Вот сижу размышляю над двумя последними подходами. Кто что посоветует?

Вариант mesa/pluto не рассматриваю, в виду несовпадения подходов с моим мировоззрением.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: аппаратный StepGen

Сообщение Nick »

А почему никто не рассматривает вариант увеличения servo thread??? тот же кулибин, наверняка не раз в мс контроллируется. Ну сделай 10 мс на один такт серво цикла. Все остальное также.

Да, надо будет еще сразу реализовать обработку touch или концевиков, т.е. движение до срабатывания какого-то пина.

Переход с 2-го уровня на третий по твоей классификации сразу очень сильно ограничивает возможности УП. Если в на уровнях 1-2 УП может все что может LinuxCNC, то на 3 уровне это уровень самой простой управляющей программки.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Nick писал(а):А почему никто не рассматривает вариант увеличения servo thread??? тот же кулибин, наверняка не раз в мс контроллируется. Ну сделай 10 мс на один такт серво цикла. Все остальное также.
давай прикинем. Это у меня максимальная скорость 600мм/мин, а тут станки есть, которые метра по 4 легко дают ))
за серво-период он проедет уже порядка миллиметра. А по канонам EMC он между серво-тиками едет по прямой, при необходимости - с ускорением. Устроит интерполяция хордами по 1мм?
Nick писал(а): Переход с 2-го уровня на третий по твоей классификации сразу очень сильно ограничивает возможности УП. Если в на уровнях 1-2 УП может все что может LinuxCNC, то на 3 уровне это уровень самой простой управляющей программки.
а что в этом плане умеет необычного linuxcnc?
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: аппаратный StepGen

Сообщение Impartial »

Steel.ne писал(а):Вот сижу размышляю над двумя последними подходами. Кто что посоветует?
Ну если силен в С++ бери этот исходник и дерзай.
http://www.cnc-club.ru/forum/viewtopic. ... 1&start=40 пост 53.
Nick писал(а):А почему никто не рассматривает вариант увеличения servo thread??? тот же кулибин, наверняка не раз в мс контроллируется. Ну сделай 10 мс на один такт серво цикла. Все остальное также.
Потому, что на 10мс уже временной интерполятор работает.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Impartial писал(а):
Steel.ne писал(а):Вот сижу размышляю над двумя последними подходами. Кто что посоветует?
Ну если силен в С++ бери этот исходник и дерзай.
http://www.cnc-club.ru/forum/viewtopic. ... 1&start=40 пост 53.
да, нивапрос. Я уже примерно раскурил исходники EMC, принцип ясен, выкинуть os-dependent структуры и вызовы, задействовать аппаратные таймеры и будет счастье )
Impartial писал(а):
Nick писал(а):А почему никто не рассматривает вариант увеличения servo thread??? тот же кулибин, наверняка не раз в мс контроллируется. Ну сделай 10 мс на один такт серво цикла. Все остальное также.
Потому, что на 10мс уже временной интерполятор работает.
а что это за зверь?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: аппаратный StepGen

Сообщение Nick »

Steel.ne писал(а):А по канонам EMC он между серво-тиками едет по прямой, при необходимости - с ускорением. Устроит интерполяция хордами по 1мм?
Тут надо рассматривать не только скорость, но и ускорение, от него зависит максимальный размер хорды.
Т.е. скажем ускорение 1000 мм/сек^2, за 0,01 секунды станок с таким ускорением проедет 0,05 мм, значит максимальной сглаживание будет не больше 0.05 мм.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: аппаратный StepGen

Сообщение Impartial »

Steel.ne писал(а):да, нивапрос. Я уже примерно раскурил исходники EMC, принцип ясен, выкинуть os-dependent структуры и вызовы, задействовать аппаратные таймеры и будет счастье )
Счастье будет недолгим. Если вообще будет. Будет только ощущение, что твоя любознательность и амбиция сыграла с тобой злую шутку.
Пустая трата времени. Это из личного опыта :) IMHO
Steel.ne писал(а):а что это за зверь?
Планировщик траектории.
Steel.ne
Почётный участник
Почётный участник
Сообщения: 112
Зарегистрирован: 21 апр 2012, 22:52
Репутация: 5
Контактная информация:

Re: аппаратный StepGen

Сообщение Steel.ne »

Impartial писал(а):
Steel.ne писал(а):да, нивапрос. Я уже примерно раскурил исходники EMC, принцип ясен, выкинуть os-dependent структуры и вызовы, задействовать аппаратные таймеры и будет счастье )
Счастье будет недолгим. Если вообще будет. Будет только ощущение, что твоя любознательность и амбиция сыграла с тобой злую шутку.
Пустая трата времени. Это из личного опыта :) IMHO
тю. А почему? Не взлетит? или пользы не будет?
zewan
Новичок
Сообщения: 12
Зарегистрирован: 19 июн 2012, 10:59
Репутация: 0
Контактная информация:

Re: аппаратный StepGen

Сообщение zewan »

По-моему все гораздо проще. Надо объединить вот это http://www.fpga4fun.com/CNC.html с этим http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=1771 и все.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: аппаратный StepGen

Сообщение Impartial »

Почему бы Вам не попробовать?
Ответить

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