Ethernet контроллер для LinuxCNC (STM32, FPGA)

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Prav
Мастер
Сообщения: 681
Зарегистрирован: 14 июл 2015, 05:10
Репутация: 112
Настоящее имя: Петр Раввинский
Откуда: Москва
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение Prav »

Если очень хочется на МК "и рыбку съесть и кости сдать", то для плавной программной траектории на приемлемых частотах, нужно выбирать хотя б двуядерные МК
.

А они стоят в два раза дороже и пошло-поехало...
Аватара пользователя
Serg
Мастер
Сообщения: 21915
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5147
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение Serg »

Как будет время покажи как выглядит на лог.анализаторе непрерывная последовательность шагов с аппаратного генератора шагов (на таймере) например по 10имп. со значениями ARR: 2, 3, 4, 8, 16, ... При PSC=0.
Лучше с куском исходника, чтоб можно было удостовериться в повторяемости результата.

P.S. И дело тут не многоядерности МК, а в самой архитектуре ARM-Cortex.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 6748
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2831
Настоящее имя: Миша
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

Prav писал(а): А они стоят в два раза дороже и пошло-поехало...
ESP32 нынче такие дорогие :hehehe:
Serg писал(а): Как будет время покажи как выглядит на лог.анализаторе непрерывная последовательность шагов с аппаратного генератора шагов (на таймере) например по 10имп. со значениями ARR: 2, 3, 4, 8, 16, ... При PSC=0.
Для более плавного вывода и более широкого диапазона частот играть нужно обеими величинами. Мы же не просто дискретность в вакууме обсуждаем. Применительно к выводу импульсов для управления ШД, и в диапазоне частот, который физически может выдать софт, дискретность вывода таймера нас более чем устроит. При этом ЦП ещё успеет отдохнуть.

Если мы начнём обсуждать применимость таймеров для каких-то других задач, где нужны точные частоты на уровне десятков МГц, там даже код расчехлять не придётся. Будет достаточно пары кликов калькулятора, чтобы понять какую большую и неприемлемую дискретность мы получим.
Аватара пользователя
MX_Master
Мастер
Сообщения: 6748
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2831
Настоящее имя: Миша
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

Прикольные ща цены на STM'ы... Мне, канеш, много не надо. Но по факту, штучно можно купить STM32F429VIT6 (180 МГц, 2Мб флэша, 256Кб ОЗУ) на 20% дешевле, чем популярный STM32F407VET6 (168 МГц, 512Кб, 192Кб) :) Хорошо, что пин совместимых чипов довольно много - от STM32F207xxxx до STM32F439xxxx.

Дефицит чипов, насколько я понял, будет продолжаться не меньше года, а то и дольше. Надо, пока есть возможность, брать непопулярные, но подходящие чипы, что есть в наличии. А уж потом, когда (если) дефицит поубавится, можно будет перейти на что-то популярное.
Аватара пользователя
Serg
Мастер
Сообщения: 21915
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5147
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение Serg »

MX_Master писал(а): Мы же не просто дискретность в вакууме обсуждаем.
Ну можешь изобразить полный цикл разгона от 0 до Fmax и обратно до 0, всё равно у тебя на самом пике будет меняться только ARR при PSC=0, суть от этого не изменится, я просто предложил изобразить лишь наглядный кусок для понимания сути. Также можешь использовать низкие частоты - эффект полностью сохраняется, просто не так хорошо заметен на анализаторе. И код там не при чём - это особенность работы таймеров и прерываний.

На всякий случай напомню суть проблемы: дело совсем не в доступном наборе частот для плавного повышения/понижения результирующей. А в плавности перехода между двумя соседними частотами, например чтобы после последнего шага с периодом M следом шёл чёткий шаг с периодом N без каких-либо лишних импульсов и пауз.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
mmv
Мастер
Сообщения: 464
Зарегистрирован: 24 май 2016, 21:58
Репутация: 27
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение mmv »

Такой вопрос: был период следования М, потом между импульсами пришло задание двигаться с периодом следования N через какое время нужно выставить следующий импульс?
А зачем кстати частоты больше МГц?
Комплект плат PinCET для модернизации станков на Linuxcnc.
viewtopic.php?f=19&t=11116#p268407
Аватара пользователя
MX_Master
Мастер
Сообщения: 6748
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2831
Настоящее имя: Миша
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

В идеале, внутри контроллера должен крутиться свой сервоцикл, именно он должен переключать частоты. Со стороны LinuxCNC задания могут приходить хаотично (+/-200мкс). Поэтому менять периоды шагов на лету нежелательно.

Частоты выше 1 МГц, в основном, для серв.
mmv
Мастер
Сообщения: 464
Зарегистрирован: 24 май 2016, 21:58
Репутация: 27
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение mmv »

Какая разница насколько нестабильно приходит задание. (+/-200 это очень много) обычно цифры +/-20-30 МКС. Пришло новое исполняй новое прямо сейчас. И причем здесь нестабильность сервопрериода. Приходит задание по середине между импульсами, неважно вообще какой там сервопериод. Длительность между импульсами может быть больше сервопрериода вообще.
Про 1 МГц:
Все же максимальная частота задаёт соотношение между дискретностью перемещения и максимальной скоростью. 1000000 это очень хорошее соотношение. Вряд ли кому нужно будет микронная точность и Макс скорость выше 60 м/с. Я по крайней мере не могу себе представить такую задачу.
Я вот понимаю что нет какого то Т.З. конкретного.
Комплект плат PinCET для модернизации станков на Linuxcnc.
viewtopic.php?f=19&t=11116#p268407
Аватара пользователя
MX_Master
Мастер
Сообщения: 6748
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2831
Настоящее имя: Миша
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

Чтобы утверждать, что правильно, а что нет, надо быть более подкованным в теме.

Планировщик разбивает траекторию на ровные периоды, зачастую, совпадающие с серво периодом. А если выполнять задания, начиная, когда вздумается, системе приходится "подруливать", чтоб удержать траекторию в заданных пределах. В результате траектория получается кривее, чем задумано.

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

Про 1 МГц :
В драйвере серв есть свой "фильтр" входящих импульсов. При последующей обработке и выводе с учётом настроек драйвера, кривые входящие периоды могут значения не возыметь. Так что, абсолютная точность частот не сильно и нужна.
mmv
Мастер
Сообщения: 464
Зарегистрирован: 24 май 2016, 21:58
Репутация: 27
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение mmv »

Вопрос был изначально не об всем этом. Ну, ничего.....
Комплект плат PinCET для модернизации станков на Linuxcnc.
viewtopic.php?f=19&t=11116#p268407
Аватара пользователя
MX_Master
Мастер
Сообщения: 6748
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2831
Настоящее имя: Миша
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

mmv писал(а): 14 июн 2021, 19:04 Вопрос был изначально не об всем этом. Ну, ничего.....
Что тут непонятного.. Если внутри контроллера не крутится свой сервоцикл, то менять частоту надо сразу, как пришло новое задание. Если крутится внутри свой сервоцикл - то менять частоту надо не сразу, задание кладём в буфер.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9038
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2825
Откуда: Тюмень
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

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

MX_Master писал(а): 06 июн 2021, 07:03 Небольшой воскресный вопрос :)

Какой способ программного вывода степ/дир будет для STM32 эффективнее?
  • для каждого степ/дир канала свой аппаратный таймер + своё прерывание;
  • для всех степ/дир каналов один аппаратный таймер + одно прерывание;
  • все степ/дир каналы обрабатывать в основном цикле программы
Хоть и "прокис" вопрос давно :)
но добавлю свой вариант.
- одно прерывание на базовой частоте для генерации и подсчета шагов для всех каналов.
- второе прерывание для расчетов и управления частотами (servothread по терминологии LCNC).
- индикация, опрос органов управления - в основном цикле.

Из практики - делал в доковидные времена автономный специализированный контроллер, там похожий вариант был реализован на STM32F072 (Cortex M0, 48 МГц). Максимальная частота шагов, она же базовая частота - 131072 Гц. Три независимых канала, генерация шагов программная, по Брезенхем - подобному алгоритму.
Чудес не бывает. Бывают фокусы.
Kost_irk
Мастер
Сообщения: 339
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 56
Откуда: Иркутск
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение Kost_irk »

Немного не в тему, увидел тут китайцы продают платы от майнеров на xilinx zynq7010 практически даром, на борту ethernet и слот под sd, больше ничего полезного. Soc содержит в себе двухьядерный арм и неплохую фпга. Штатно там крутится линукс, круто бы было запустить linuxcnc прямо там, а на фпга сделать все степгены и прочее мясо. Правда арм кмк слабоват, да и картинку выводить особо некуда.
Аватара пользователя
MX_Master
Мастер
Сообщения: 6748
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2831
Настоящее имя: Миша
Контактная информация:

Re: Ethernet контроллер для LinuxCNC (STM32, FPGA)

Сообщение MX_Master »

Kost_irk писал(а): 14 июн 2021, 23:32 Немного не в тему, увидел тут китайцы продают платы от майнеров на xilinx zynq7010 практически даром, на борту ethernet и слот под sd, больше ничего полезного. Soc содержит в себе двухьядерный арм и неплохую фпга. Штатно там крутится линукс, круто бы было запустить linuxcnc прямо там, а на фпга сделать все степгены и прочее мясо. Правда арм кмк слабоват, да и картинку выводить особо некуда.
Бывший ASIC сгодится максимум как автономный контроллер. Мордочку управления всё равно придётся мутить на отдельном устройстве, с передачей данных по сети (Ethernet). Развязку тоже надо делать. Ну и месовские прошивки как-то оптимизировать. С одной стороны (по цене платы) это удобно, с другой стороны (всё остальное) - нет :freak:
Сергей Саныч писал(а): Хоть и "прокис" вопрос давно
но добавлю свой вариант.
- одно прерывание на базовой частоте для генерации и подсчета шагов для всех каналов.
- второе прерывание для расчетов и управления частотами (servothread по терминологии LCNC).
- индикация, опрос органов управления - в основном цикле.
Спасибо. Вы уже несколько раз этот вариант предлагали, я, просто, о нём забыл :)
Ответить

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