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

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

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

AAN писал(а):Гибкость.
Гибкость быстрой не бывает :hehehe:
verser писал(а):Цена комплектухи ничто, по сравнению с объемами программирования для доведения прошивки до конкурирующего с mesa уровня.
На одном энтузиазме тема вряд ли подъемная.
Согласен. Насчёт энтузиазма и подъёмности - обдумаем.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

MX_Master писал(а):Я точно не знаю, но, вроде, разработчики Мач4 далеко не всем дают доступ к инструментам разработки плагинов к Мач4. Там, вроде, драйвер должен быть как-то подписан, иначе он с Мач4 не будет работать. Или ситуация поменялась?
Ничего такого ни на сайте, ни в лицензии, ни в доках не нашёл. Только фразу типа "вы сами можете писать какие угодно плагины".
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7477
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а):
MX_Master писал(а):Я точно не знаю, но, вроде, разработчики Мач4 далеко не всем дают доступ к инструментам разработки плагинов к Мач4. Там, вроде, драйвер должен быть как-то подписан, иначе он с Мач4 не будет работать. Или ситуация поменялась?
Ничего такого ни на сайте, ни в лицензии, ни в доках не нашёл. Только фразу типа "вы сами можете писать какие угодно плагины".
Надо посмотреть доки к их API и попробовать сделать простейший плагин. Но тут есть и другая сторона медали - пользователей Mach4 у нас очень мало. А 'бесплатный' Mach3 есть почти у каждого (:
AAN
Мастер
Сообщения: 297
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 38
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение AAN »

MX_Master писал(а):Гибкость быстрой не бывает :hehehe:
Не соглашусь. По производительности pyboard даже на чистом Micropython-е (без сишных вставок) кроет массовые 8-битные Ардуины как бык овцу, просто удивительно, как множество народа продолжают кушать кактуСи. С учётом не бесплатности времени разработчика, Питон на контроллере - пушка.
Мне, кстати, сенсорный экран пришёл:
экран.jpg (2741 просмотр) <a class='original' href='./download/file.php?id=134659&sid=81bc8bdec86db9a7300761b5cdfa3d82&mode=view' target=_blank>Загрузить оригинал (16.23 КБ)</a>
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение aftaev »

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

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

AAN писал(а):Не соглашусь. По производительности pyboard даже на чистом Micropython-е (без сишных вставок) кроет массовые 8-битные Ардуины как бык овцу, просто удивительно, как множество народа продолжают кушать кактуСи.
Любой интерпретатор - это всегда дополнительные накладные расходы по памяти и производительности просто по определению. Для встроенных приложений это один из главных параметров. Напомню, что в среде программеров STM32 всё ещё много тех, кто считает даже библиотеку HAL непозволительной роскошью.
Ну и чтоб запустить Micropython на каком-то устройстве типа платы развязки для LinuxCNC (Ethernet + STM32) сначала надо будет на том-же С понаписать функций для поддержки всей периферии в Micropython...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7477
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а):Напомню, что в среде программеров STM32 всё ещё много тех, кто считает даже библиотеку HAL непозволительной роскошью.
Есь такое. Я хоть и молодой STM'описатель, но знаю, что в некоторых требовательных местах HAL функции создают, хоть и небольшие, но задержки. Когда речь идёт о микросекундах и меньше, вплоть до тактов проца, использую прямую работу с регистрами.
AAN
Мастер
Сообщения: 297
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 38
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение AAN »

UAVpilot писал(а): Любой интерпретатор - это всегда дополнительные накладные расходы по памяти и производительности просто по определению. Для встроенных приложений это один из главных параметров. Напомню, что в среде программеров STM32 всё ещё много тех, кто считает даже библиотеку HAL непозволительной роскошью.
Дополнительные расходы памяти и производительности не позволят управлять тормознутой механикой? Вы - серъёзно? Мегабайта встроенного флеша и 192кВ оперативы https://store.micropython.org/product/PYBv1.1 Вам мало?
А давайте посмотрим хороший мультик: [youtube]https://www.youtube.com/watch?v=OOz9U_YdstM&t=420s[/youtube]
Можно, конечно, и дальше наСИловать мозг, только в 99,9% случаев это стрельба из пушки по воробьям.
UAVpilot писал(а): Ну и чтоб запустить Micropython на каком-то устройстве типа платы развязки для LinuxCNC (Ethernet + STM32) сначала надо будет на том-же С понаписать функций для поддержки всей периферии в Micropython...
Опять не соглашусь. Вы мыслите в Си-шной парадигме, которая выросла из крайней дороговизны всех ресурсов, кроме времени разработчика. Времена меняются, Micropython напрямую работает со всем железом, всё придумано до нас, например, работа с Eternet: https://github.com/micropython/micropyt ... conf.h#L59
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

AAN писал(а):Можно, конечно, и дальше наСИловать мозг, только в 99,9% случаев это стрельба из пушки по воробьям.
Ну если для вас это насилие мозга, то нормальным программистам совершенно без разницы на каком языке писать. :)
Я, например, считаю, что логика работы программы не должна зависеть от количества пробелов в строке... Особенно когда многие редакторы умеют заменять один символ табуяции на 2, 4 или 8 пробелов и наоборот...
AAN писал(а):Времена меняются, Micropython напрямую работает со всем железом, всё придумано до нас, например, работа с Eternet: https://github.com/micropython/micropyt ... conf.h#L59
Но вы почему-то даёте ссылку на С код... :)
Мне вот в нынешнем проекте нужна работа с modbus, для C есть несколько вариантов готовых библиотек - бери и пользуйся. А как с этим в Micropython?..
А ещё для управления люминицентными дисплеями есть очень хорошие чипы PT6315 (собственно им даже алтернативы нет) - так вот у них SPI, но нестандартный. Писать на С драйвер в Micropython? А нафик тогда Micropython нужен, если всё равно на C писать?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
AAN
Мастер
Сообщения: 297
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 38
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение AAN »

UAVpilot писал(а): Ну если для вас это насилие мозга, то нормальным программистам совершенно без разницы на каком языке писать. :)
Не нужно мне рассказывать про сферических программистов в вакууме, которым всё равно, на каком языке писать. Пытались мы нанять специалистов или контору, чтобы добавить нужные нам функции в ПО, написанное на Perl со вставками на C :pssdoff: Типичный ответ был: "Мне проще аналогичную прогу с нуля написать." Это - к вопросу о "количестве пробелов в строке"/лёгкости поддержки-модификации кода.
UAVpilot писал(а): Но вы почему-то даёте ссылку на С код... :)
Мне вот в нынешнем проекте нужна работа с modbus, для C есть несколько вариантов готовых библиотек - бери и пользуйся. А как с этим в Micropython?..
А ещё для управления люминицентными дисплеями есть очень хорошие чипы PT6315 (собственно им даже алтернативы нет) - так вот у них SPI, но нестандартный. Писать на С драйвер в Micropython? А нафик тогда Micropython нужен, если всё равно на C писать?..
Интерпретатор Micropython написан на C - авторы славно поработали на благо пользователя, теперь бери да пользуйся, экономя тучу времени. Тот же модбас: https://github.com/riptideio/pymodbus/t ... r/pymodbus
По поводу "а вот ещё есть нестандартщина..." - почитайте, наконец, про Python/Microputhon - они и битовую адресацию поддерживают, и преобразования типов, и протоколы парсить настолько удобно, что тот же питоновский модуль PySerial целиком на Питоне и написан: https://github.com/pyserial/pyserial/tree/master/serial
alex1816
Мастер
Сообщения: 224
Зарегистрирован: 03 фев 2017, 01:06
Репутация: 35
Настоящее имя: Александр
Откуда: Украина
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение alex1816 »

AAN писал(а):Дополнительные расходы памяти и производительности не позволят управлять тормознутой механикой? Вы - серъёзно? Мегабайта встроенного флеша и 192кВ оперативы
Для задач реального времени этого может быть недостаточно, в любом случае интерпретатору нужно время на интерпретирование :)
И при наличии ОЗУ и тп, даже 170Мгц не всегда будет с запасом. Надо считать или проверять .....
Ну да ладно - придумали этого питона - значит он имеет право ползать, у него работа такая :)

Вопрос другой: какие варианта обмена данными по езернету?
1. Ethercat как я понял(еще не разобрался до конца как оно работает) - крутая штука, но там не так все просто (и наверное не дешево) со стороны slave.
Здесь обсуждение ethercat - http://www.cnc-club.ru/forum/viewtopic. ... 5&p=386089
2. Сделать поддержку IP (например с использованием куба настроить free-rtos + IP - там все в коробке для чипов помощнее или без куба и ртос запрограммировать(геморно немного, но реально)).
3. А выше как лучше сделать. Можно к примеру сделать обмен клиент сервер (сервер слушает порт например UDP - клиент отвечает при получении пакета, примеры кода в инете присутствуют). Например один раз в сервоцикл обращение из линукса к плате(происходит обмен).
4. Как это происходит в уже работающих платах (например меса 7i92, 7i80)?
5. Можно ли осуществлять обмен в обратную сторону (запрос с платы к компбютеру например при нештатных ситуациях и тп)? Как тогда лучше сделать: надо так же чтобы компьютер слушал порт(сервер уже на его стороне) или ????
6. Другие варианты?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7477
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

У устройства будет свой IP, который можно будет поменять на HTML странице системных настроек.
На этой же странице можно будет поменять и прошивку (будет свой загрузчик).

FreeRTOS - нет.
EtherCAT - нет.
UDP - скорее всего.
alex1816 писал(а):Например один раз в сервоцикл обращение из линукса к плате(происходит обмен).
Это верно для модулей stepgen и encoder. А вот передача/приём состояний входов/выходов должна быть намного чаще. В идеале за время основного цикла.
alex1816
Мастер
Сообщения: 224
Зарегистрирован: 03 фев 2017, 01:06
Репутация: 35
Настоящее имя: Александр
Откуда: Украина
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение alex1816 »

MX_Master писал(а): FreeRTOS - нет.
Здесь конечно может и выиграш будет в производительности, но я бы не откидывал так сразу этот вариант. В затратах времени - плюс неоспоримый. РТОС не даст таких задержек как к примеру интерпретатор.
Хотя здесь есть варианты: к примеру у чипа 407GTx или подобных в кубе сразу есть поддержка ip... то есть прямо в кубе настраиваешь ртос и там же IP(затраты на программирование минимальные). А в других вариантах цепляешь плату на SPI(дешевую) и пишешь код сам(гемороя много). По википедии SPI 20мбит/сек.
MX_Master писал(а):EtherCAT - нет.
Здесь очень заманчиво, но .... есть много но... особенно финансово, хотя я этот вопрос до конца не изучал... похоже за ним(или подобным) будущее..... Драйвер в LinuxCNC есть, а вот slave ....
MX_Master писал(а):UDP - скорее всего.
не отрицается конечно (протокол без подтверждения, но самый быстрый в этом уровне).
MX_Master писал(а): Это верно для модулей stepgen и encoder. А вот передача/приём состояний входов/выходов должна быть намного чаще. В идеале за время основного цикла.
Вот в этом и основной вопрос: как это организовать получше.....
Интересно услышать разные мнения..
Попробую поумничать : :)
steppgen - раз в сервоцикл
encoder - ... сомнительно, но .. раз в сервоцикл
А состояние входов/выходов - надо отдельно разделять.
Если организация клиент(ПК)-сервер(контроллер), то клиент(ПК) запрашивает раз в сервоцикл состояние енкодера(допкстим паралельно отправляет степген). Это все по принципу сервоцикла.
А если входы/выходы - как это можно организовать а уровне протоколов?
Как вариант: с двух сторон два юдп(или другие) порта отркытых для входов и выходов которые слушают постоянно и правильно расставленные приоритеты ? Или хз?
Для того чтобы это все работало в комплексе и не мешало одно другому конечно надо экспериментировать или просчитывать тайминги (наверное не на питоне:) ).....


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

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

alex1816 писал(а):наверное не на питоне:)
В точку
alex1816 писал(а):А если входы/выходы - как это можно организовать а уровне протоколов?
32 выходных бита (4 байта) шлём вперёд, 32 входных бита (4 байта) шлём назад. Чем быстрее - тем лучше. UDP пакеты - быстрый и простой вариант. Со стороны LinuxCNC это будет выглядеть так: в самом начале базового цикла отсылаем 32 выходных бита, это будет сигналом к отправке 32 входных битов назад; ближе к концу базового периода получаем эти 32 входных бита; далее делаем с ними, что нужно. Но это только в теории. Как подойду к конкретной реализации, станет ясно.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

AAN писал(а):Не нужно мне рассказывать про сферических программистов в вакууме, которым всё равно, на каком языке писать.
Мне всё равно на каком языке писать. :tongue:
AAN писал(а):Пытались мы нанять специалистов или контору, чтобы добавить нужные нам функции в ПО, написанное на Perl
Но и я за такое не возьмусь, особенно не глядя - программисты бывают разные и разбираться в коде некоторых действительно может оказаться сложнее, чем написать заново, причём на любом языке.
Ну а Perl - это отдельная песня, это язык состоящий из сплошных исключений, свои собственные програмы на нём бывает довольно сложно понять спустя несколько лет... :)
AAN писал(а):Тот же модбас: https://github.com/riptideio/pymodbus/t ... r/pymodbus
Вот вы лепите ссылки даже не вникая о чём они... :) Вопрос по Modbus был с подвохом - pymodbus в Микропитоне не будет правильно работать, ибо Микропитон заметно отличается от настоящего Питона.
AAN писал(а):почитайте, наконец, про Python/Microputhon
Я даже писал на нём. :) И рассматривал его как инструмент для создания некритичных приложений. но в итоге отказался от его использования.
Micro Python c pyboard - это по сути аналог Arduino, там тоже свой язык очень похожий на C, но это не C.
AAN писал(а):тот же питоновский модуль PySerial целиком на Питоне и написан: https://github.com/pyserial/pyserial/tree/master/serial
Только вот на PC этот модуль на скоростях выше 230400 bps на современном компе уже начинает терять байты, а порт-то умеет работать аж на 10Mbps...
alex1816 писал(а):к примеру у чипа 407GTx или подобных в кубе сразу есть поддержка ip... то есть прямо в кубе настраиваешь ртос и там же IP(затраты на программирование минимальные).
Там только MAC, а сам стэк tcp/ip программный (lwip) - 40кб кода в самом минимальном варианте + от 2кб RAM на каждое соединение (socket).
alex1816 писал(а):А в других вариантах цепляешь плату на SPI(дешевую) и пишешь код сам(гемороя много). По википедии SPI 20мбит/сек.
W5X00 - вся физика и tcp/ip стэк уже внутрию :) А скорость SPI теоретически неограничена, например общение с оптическими трансиверами (телекомуникации) происходит по SPI на скорости 80Gbit/s. :)
Те-же W5X00 поддерживают 80Mbit/s.
alex1816 писал(а):Драйвер в LinuxCNC есть, а вот slave ....
Я на макетке с stm32 делал пробный вариант - работает. :)
alex1816 писал(а):протокол без подтверждения
На сеансовом уровне подтверждений нет, но на уровне приложения никто не мешает сделать, причём именно в тех местах где надо.
MX_Master писал(а):в самом начале базового цикла отсылаем 32 выходных бита, это будет сигналом к отправке 32 входных битов назад
Делай наоборот и две отдельные команды - одна для чтения входных данных, другая для записи выходных, потом спасибо скажешь. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7477
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а):
MX_Master писал(а):в самом начале базового цикла отсылаем 32 выходных бита, это будет сигналом к отправке 32 входных битов назад
Делай наоборот и две отдельные команды - одна для чтения входных данных, другая для записи выходных, потом спасибо скажешь. :)
Спасибо. Да, надо наоборот. Вот, что значит ночью сообщение писать. Сначала желательно получить входящие 32 бита. На их основе другие realtime компоненты сделают свою работу, попутно меняя выходные пины. Ну и в самом конце (базового периода) нужно отправить выходные 32 бита в STM32.
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение sergx99 »

MX_Master писал(а):У устройства будет свой IP, который можно будет поменять на HTML странице системных настроек.
На этой же странице можно будет поменять и прошивку (будет свой загрузчик).

FreeRTOS - нет.
EtherCAT - нет.
UDP - скорее всего.
alex1816 писал(а):Например один раз в сервоцикл обращение из линукса к плате(происходит обмен).
Это верно для модулей stepgen и encoder. А вот передача/приём состояний входов/выходов должна быть намного чаще. В идеале за время основного цикла.
RTOS может быть удобно, делал на stm32f107 машет ногами (14шт) по расписанию, сетка времени и минимальный интервал 1мкс, общение с компьютером UDP, получение времени от GPS с разрешением 1мкс. + дисплей от nokia ..., экран без RTOS просто не прикрутить.
Использовал scmRTOS.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

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

sergx99 писал(а):экран без RTOS просто не прикрутить
Что в дисплее от телефона такого сакрального, что без RTOS ну никак? :)
Чудес не бывает. Бывают фокусы.
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение sergx99 »

Не надо думать сколько времени оно отнимает, крутится в минимальном приоритете
alex1816
Мастер
Сообщения: 224
Зарегистрирован: 03 фев 2017, 01:06
Репутация: 35
Настоящее имя: Александр
Откуда: Украина
Контактная информация:

Re: Плата развязки для LinuxCNC (Ethernet + STM32)

Сообщение alex1816 »

UAVpilot писал(а):alex1816 писал(а):
к примеру у чипа 407GTx или подобных в кубе сразу есть поддержка ip... то есть прямо в кубе настраиваешь ртос и там же IP(затраты на программирование минимальные).

Там только MAC, а сам стэк tcp/ip программный (lwip) - 40кб кода в самом минимальном варианте + от 2кб RAM на каждое соединение (socket).
Немножко не понял. Имеется в виду, что стек (который из куба слишком много кода имеет? или ??)
Поддержка в кубе lwip есть (правда не всем чипам stm32, настраивается после включения free-rtos и eth0).
lwip.jpg (2437 просмотров) <a class='original' href='./download/file.php?id=134981&sid=81bc8bdec86db9a7300761b5cdfa3d82&mode=view' target=_blank>Загрузить оригинал (75.12 КБ)</a>
UAVpilot писал(а):W5X00 - вся физика и tcp/ip стэк уже внутрию
Спасибо за наводку.
Цена доступная - https://www.ebay.com/sch/i.html?_odkw=W ... 2&_sacat=0
UAVpilot писал(а):alex1816 писал(а):
Драйвер в LinuxCNC есть, а вот slave ....

Я на макетке с stm32 делал пробный вариант - работает.
Тогда тебе уже проще :) Думаю в таком случае не нужно UDP или TCP(разве что для некритичных по времени операций). Мало что о нем вычитал, но с первого взгляда штука хорошая.
Ответить

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