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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

попахивает утопией.. 😏
MX_Master писал(а): Если нужно 6 осей, 6 линеек и куча релюх с развязками - тоже должен быть вариант
мне кажется, оптимальный. а если порты будут ио, то можно спокойно переделать под своим нужды. собственно, как уже есть в одном изделии, что ты мне и советовал ))) не хватает опторазвязок только, но и то обещано. вот по цене в пределах 5к за оптовую партию подобного продукта-было бы вообще отлично.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

MX_Master писал(а): На неделе закажу вот такой комплект. Очень бюджетный, но при этом гибкий вариант. Попробуем замутить контроллер на этой макетке. Цена вопроса - 2т.р.
Поговорил со знакомым ЧПУшником, он меня-таки отговорил от макетных плат. Говорит, что свободно втыкаемые/вытыкаемые провода для пром. оборудования - это какая-то фигня. Все провода должны быть надёжно зафиксированы. Ибо полезет кто-то в шкаф, дёрнет случайно за провод, и не заметит как тот отошёл. А потом ищи свищи причину почему станок не пашет. А как причина будет найдена, ещё надо будет найти по какому-то мануалу, куда провод был воткнут. Вощем, ясно. Как бы я не дёргался, нежелание городить собственный вариант платы толкает меня на какие-то крайности. Пока буду допиливать софт. Как-нибудь потом, продумаю простой вариант с двумя LPT портами под народные платы развязки. На что-то более сложное времени и желания не хватит..
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

по мануалу каждый ещё и подписан должен быть(а некоторые люди не могут пин сконнектить).

про надёжность-согласен на все 146%, от мск до Новосиба станок доехал-внутри ящика вывалился кабель питания из бп, вывалился из клеммы один провод..
и еще что-то было, удалённо выяснить не удалось, починили иначе.

да, 2 платы лпт и контроллер по витой-должно хватать :))
jvq
Новичок
Сообщения: 1
Зарегистрирован: 23 май 2021, 21:24
Репутация: 0
Настоящее имя: Виктор
Контактная информация:

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

Сообщение jvq »

... свободно втыкаемые/вытыкаемые провода для пром. оборудования - это какая-то фигня...
Абсолютно ничто не мешает эти провода припаять, а для пущей паранои ещё и компаундом всю плату залить.
За копеечный прайс получаем готовую плату контроллера. Разработка и изготовление модулей для согласования контроллера с периферией - топорная работа, доступная каждому, у кого есть утюг и рядовые познания в электронике. На чипмекере контроллер для токарного станка вообще на ардуине реализовали и работает он прекрасно. Странно, что китаёзы ещё не наладили выпуск станков с этой разработкой. Может им подсказать? :thinking:
Делать контроллер уникального дизайна имеет смысл если только вы собираетесь сами их производить и на этом зарабатывать, поскольку сделать комплекс на основе готовой платы и вышего софта сможет любой, кто умеет держать в руках паяльник. Ну, почти любой.
Ну так как? Закупаться нам этими макетками в надежде на ваш трудовой подвиг?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Закупаться раньше автора - плохая примета :) разве что, для каких-то своих вариантов.

Я тут не спеша присматриваюсь к высокоскоростным оптопарам. Ибо PC817, установленные на всех народных (LPT) развязках, годятся максимум для концевиков. А вот чтобы подцепить, к примеру, энкодеры (даже с дифф. выходом), нужно что-то другое, побыстрее. HCPL2630, как вариант.

Всё-таки, гребёнка пинов с припаянной развязкой и разъёмами лучше, чем просто гребёнка пинов :)
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Небольшой воскресный вопрос :)

Какой способ программного вывода степ/дир будет для STM32 эффективнее?
  • для каждого степ/дир канала свой аппаратный таймер + своё прерывание;
  • для всех степ/дир каналов один аппаратный таймер + одно прерывание;
  • все степ/дир каналы обрабатывать в основном цикле программы
Cvazist
Мастер
Сообщения: 1080
Зарегистрирован: 16 окт 2017, 16:07
Репутация: 85
Контактная информация:

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

Сообщение Cvazist »

Так это Вы как автор на этот вопрос должны ответить.
Таймер на каждый канал - круто, но процессору будет не сладко ?
Один таймер - какие будут задержки при переключении каналов? Не будет или минимальные отлично, и процессору полегче?
В теле программы - мне не понятно , т е. не реал тайм режим? Самый медленный , но лёгкий режим для процессора ?
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

MX_Master писал(а): для всех степ/дир каналов один аппаратный таймер + одно прерывание;
при разной величине шага это будет фиговенько(или я не так понял😂😂)

но с учётом назначения платы эффективнее будет скорее всего данный метод.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

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

Сообщение selenur »

MX_Master писал(а): Какой способ программного вывода степ/дир будет для STM32 эффективнее?
Очень зависит от методики генерации импульсов, например по алгоритму типа Брезенхема, достаточно одного таймера, а вот если каждый мотор должен работать самостоятельно, и периодически синхронизироваться с неким основным процессом, который сообщает необходимое следующее положение, то разные таймеры.
Непростой вопрос, не зная как ты планируешь реализовать логику управления.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Cvazist писал(а): Так это Вы как автор на этот вопрос должны ответить.
К счастью, как автор своей платы, я использую полностью аппаратный вывод. А над программным выводом я задумался для уже готовых контроллеров, разводка которых пострадала от самих авторов :)

https://www.aliexpress.com/item/1005001342869190.html
https://www.aliexpress.com/item/1005002253809296.html
https://www.aliexpress.com/item/1005002538010912.html
https://www.aliexpress.com/item/1005002033053715.html
https://www.aliexpress.com/item/32756155820.html

Их немало, они недорогие. В случае ЧП, их тоже можно использовать.

Cvazist писал(а): Таймер на каждый канал - круто, но процессору будет не сладко ?
Один таймер - какие будут задержки при переключении каналов? Не будет или минимальные отлично, и процессору полегче?
В теле программы - мне не понятно , т е. не реал тайм режим? Самый медленный , но лёгкий режим для процессора ?
Процессору в любом случае будет нехорошо :) Таковы реалии программных методов. Нам главное, чтобы вывод был равномерным по частоте и максимальная частота должна быть как можно выше. В теле программы - это когда проверка состояния всех каналов выполняется по кругу без пауз. Базой для временных засечек выступает один независимый таймер, без всяких прерываний. Проц в этот момент загружен по максимуму и никогда не отдыхает.

selenur писал(а): Очень зависит от методики генерации импульсов, например по алгоритму типа Брезенхема, достаточно одного таймера, а вот если каждый мотор должен работать самостоятельно, и периодически синхронизироваться с неким основным процессом, который сообщает необходимое следующее положение, то разные таймеры.
Непростой вопрос, не зная как ты планируешь реализовать логику управления.
В случае с LinuxCNC, каждому каналу назначается какая-то выходная частота (про направление пока опустим). Желательно, чтобы каналы были независимыми и не знали друг о друге. Замена выходных частот выполняется, скажем, раз в миллисекунду. От канала нам нужно знать позицию в импульсах, и чтобы вывод был максимально точен по частоте. Брезенхемом на одном таймере частота будет немного скакать туда/сюда. Отдельными таймерами вывод будет заметно глаже. Цель - максимально точная частота вывода шагов на максимально возможной же частоте.

steals_y2k писал(а): при разной величине шага это будет фиговенько(или я не так понял)
Единый таймер должен работать на частоте в 2 раза выше, чем текущая максимальная частота шагов какого-то канала. Тогда в прерывании можно будет успеть обслужить все каналы. Дёрнуть, если нужно пины, обновить позицию. Равномерность вывода будет зависеть от частоты работы таймера. Чем чаще прерывание, тем точнее по времени можно дёрнуть пины.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

ты же вроде говорил, что нуегонафиг эти свежие косяки пытаться вытащить? и вот опять.. )))

пожалуй, я поддержу развитие проекта с Н6 скорее, чем это.))))
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

H6 со временем изчезнет, вон в новых H616 уже нет такого сопроцессора как в H6. А микроконтроллеры как были, так и останутся, с минимальными изменениями. Портировать код со старого на более новый МК на порядок проще. Городить под каждый новый чип новую связку драйверов и прошивок - не продуктивно.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

так вторая мысль была-сделать собственный контроллер)) где нет китайских косяков.
и всё.
и вот опять...😂😂😂
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

Я, просто, заметил, что кроме NVEM'ов, китайцы наклепали гораздо больше готовых контроллеров, чем я видел ранее. Спорю на пузырь, там разводка STM'ов чисто под софт вывод и вход. Отсюда и желание запилить единый шагогенератор для большинства таких контроллеров. Чтобы с минимальными правками контроллер для Mach3 превращался в контроллер для LinuxCNC. Делать отдельный софт с нюансами под каждый контроллер не охота. Но упускать из виду все эти контроллеры было бы глупо.
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

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

Сообщение Kost_irk »

Я бы попробовал завести на каждый канал аппаратный таймер, но прерывания от них всех завел в один обработчик, там в начале быстрое сравнение какой таймер сработал или сработает за время обработки прерывания и переключение соответствующих пинов, а потом уже расчет и перезагрузка их с учетом того, сколько уже насчиталось за время расчета.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

MX_Master писал(а): Спорю на пузырь, там разводка STM'ов чисто под софт вывод и вход.
с чисто китайскими косяками. мы так приляпать потому что собака гриб Луна.
😏

готов поспорить на пузырь))
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Kost_irk писал(а): Я бы попробовал завести на каждый канал аппаратный таймер, но прерывания от них всех завел в один обработчик, там в начале быстрое сравнение какой таймер сработал или сработает за время обработки прерывания и переключение соответствующих пинов, а потом уже расчет и перезагрузка их с учетом того, сколько уже насчиталось за время расчета.
Вариант. Спасибо. +1

steals_y2k писал(а): с чисто китайскими косяками. мы так приляпать потому что собака гриб Луна.


готов поспорить на пузырь))
Когда в описании контроллера указано 200 или 400 КГц, вероятность, что вывод программный, равна 100%. Я, как мастер извращений по аппаратному выводу, точно знаю, что самый ленивый аппаратный способ даёт не меньше мегагерца на канал на каком-нибудь STM32F103C8T6. На быстрых новых чипах - от 2 МГц и выше. А при оптимизированном аппаратном выводе счёт идёт на десятки мегагерц. И остаются ещё таймеры для считки энкодеров.
Аватара пользователя
Prav
Мастер
Сообщения: 827
Зарегистрирован: 14 июл 2015, 05:10
Репутация: 138
Настоящее имя: Петр Раввинский
Откуда: Москва
Контактная информация:

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

Сообщение Prav »

MX_Master писал(а): Когда в описании контроллера указано 200 или 400 КГц, вероятность, что вывод программный, равна 100%. Я, как мастер извращений по аппаратному выводу, точно знаю, что самый ленивый аппаратный способ даёт не меньше мегагерца на канал на каком-нибудь STM32F103C8T6. На быстрых новых чипах - от 2 МГц и выше. А при оптимизированном аппаратном выводе счёт идёт на десятки мегагерц. И остаются ещё таймеры для считки энкодеров.
Вывод очевиден: программная генерация шагов...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

MX_Master писал(а): Я, как мастер извращений по аппаратному выводу, точно знаю, что самый ленивый аппаратный способ даёт не меньше мегагерца на канал на каком-нибудь STM32F103C8T6. На быстрых новых чипах - от 2 МГц и выше. А при оптимизированном аппаратном выводе счёт идёт на десятки мегагерц.
Осталось попробовать стать учеником подмастрья по генерации плавной и стабильной траектории с такими частотами на заданных ускорениях и путь к пониманию китайских разработчиков, выбравших софтовый способ вывода шагов станет короче... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Дядь Серёжа, как обычно, решил порвать всех глубоким знанием дела :) Когда процессору нужно заниматься не только плавной и стабильной траекторией вывода сигналов, но и чем-то полезным ещё, в голове сразу загорается мысль о распараллеливании работы. И, о чудо, в МК есть для этого какой-никакой инструментарий.

Тут недавно человек снимал осциллограммы с некоторых китайских недорогих контроллеров. Дык, что-то как-то там не пахнет плавной траекторией. На мой взгляд, программный вывод сигналов, да и, собсна, весь остальной функционал, разработчики крутят в основном цикле, чтобы не тратить много времени на эту самую разработку. Это, тупо, проще, чем сидеть и, изучая доки на каждый конкретный МК, проводить эксперименты, делать тесты. Я не утверждаю, что все такие ленивые, но многие.

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

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