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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

MX_Master писал(а):Спасибо, буду знать. А если мы дёргаем/читаем пины порта вручную (rtapi_inb/outb, serport.comp), засада с буфером будет решена?
дёргать/читать можно только управляющие сигналы и TX (4in, 3out), а для приёма/передачи последовательных данных используется FIFO.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Т.е. сделать что-то вроде soft serial не выйдет? Имею ввиду вариант, где мы сами с учётом HR таймера в простом цикле дёргаем/читаем состояние пинов с нужной частотой.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

Передавать можно будет, но медленно, принимать - нет.
А что ты хочешь получить в итоге? Может есть другие пути...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Китайцы производят много разных и недорогих ПЛК c STM32 на борту и с RS232 в качестве связи. Было бы удобно юзать эти ПЛК в качестве плат IO, подключая их прямо к ПК. Прошивку в МК (или сам МК) поменять не сложно. Но хотелось бы иметь возможность работать с этими ПЛК платами в RT циклах. Хотя бы в сервоцикле (:
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

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

MX_Master писал(а):Попутно заметил в LinuxCNC драйвер (RT), который позволяет обращаться к пинам COM порта напрямую. Но что-то нигде не видно примеров его применения.
Здесь немножко :)

Тут прототип пульта с РГИ
Кстати, я его давно переделал в более "цивильный" формат - встроил в китайский пульт, который тут недавно упоминался.
MX_Master писал(а):Вопрос к знатокам - способен ли компьютерный COM порт (rs232, serial) и его драйвер успеть за сервопериод отправить/получить минимально полезный объем данных (10-20бит)? Будут ли в процессе непредсказуемые задержки? (:
Если написать свой драйвер на основе serport, который бы работал с портом на уровне регистров, то лишних задержек не будет.
UAVpilot писал(а):останется засада с неуправляемой буферизацией данных (16 байт FIFO в чипе порта).
Насколько я помню, буферизация в чипах SIO отключаемая.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

MX_Master писал(а):Китайцы производят много разных и недорогих ПЛК c STM32 на борту и с RS232 в качестве связи. Было бы удобно юзать эти ПЛК в качестве плат IO, подключая их прямо к ПК. Прошивку в МК (или сам МК) поменять не сложно. Но хотелось бы иметь возможность работать с этими ПЛК платами в RT циклах. Хотя бы в сервоцикле (:
Лишнее это. К COM нужно просто подключать платы ввода-вывода (реле, оптроны) с управлением по Modbus и использовать их для более медленных процессов - смена инструмента, вкл/выкл СОЖ, кнопки, а ПЛК реализовывать в HAL.
Сергей Саныч писал(а): Насколько я помню, буферизация в чипах SIO отключаемая.
Битик-то есть, только вот при отключении будут проблемы с приёмом - нужно будет успевать забирать принятый байт до начала приёма следующего, а драйвер у нас не очень-то и RT...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

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

UAVpilot писал(а):нужно будет успевать забирать принятый байт до начала приёма следующего
Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего. Даже при полном отключении FIFO. Так что запас времени около 100 мкс при 115200 бод у нас будет. Достаточно при программном опросе по base_freq.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а):К COM нужно просто подключать платы ввода-вывода (реле, оптроны) с управлением по Modbus и использовать их для более медленных процессов, а ПЛК реализовывать в HAL.
Да, обычно, всё так. Про ПЛК ничего не говорю. Я имел ввиду, что сами платы (меняя прошивку) можно юзать как доп. платы IO. И если у нас будет возможность юзать их не только в userspace, но и в RT, это будет очень удобно и полезно.
Сергей Саныч писал(а):Насколько я помню, буферизация в чипах SIO отключаемая.
UAVpilot писал(а):Битик-то есть, только вот при отключении будут проблемы с приёмом - нужно будет успевать забирать принятый байт до начала приёма следующего, а драйвер у нас не очень-то и RT...
Сергей Саныч писал(а):Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего. Даже при полном отключении FIFO. Так что запас времени около 100 мкс при 115200 бод у нас будет. Достаточно при программном опросе по base_freq.
Если я правильно понял, сделать отправку/получение данных в сервоцикле, всё-таки, можно :) Это несомненно радует. Значит, работать надо напрямую с регистрами порта. Ради спортивного интереса можно и попробовать.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение going »

MX_Master писал(а):И если у нас будет возможность юзать их не только в userspace, но и в RT, это будет очень удобно и полезно.
Готовое решение для некоторых аппаратных платформ в xenomai имеется.
https://xenomai.org/downloads/ipipe/v4. ... 64-4.patch

Код: Выделить всё

drivers/tty/serial/8250/8250_core.c
drivers/tty/serial/amba-pl011.c
drivers/tty/serial/xilinx_uartps.c
И работает в РТ режиме.
По аналогии можно реализовать для какой то другой платформы, которая лежит на столе, и может быть протестирована.

P.S. Посмотрел RTAI https://www.rtai.org/userfiles/download ... .2.tar.bz2
Реализован только:

Код: Выделить всё

drivers/tty/serial/8250/8250_core.c
Об этом речь?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Большой и многофункциональный драйвер в такой задаче, скорее всего, не нужен. Быстрее и легче работать с регистрами напрямую. Общий принцип отправки и получения понятен. 115200 кбит/с максимум. В сервопериод должно поместиться. Вощем, нужны тесты. Жаль под рукой нет ничего с STM32 и RS232. Придётся заказать какого-нибудь ПЛК малыша. По-моему, для тестов этот будет идеален - https://item.taobao.com/item.htm?id=592673408733. Вот интересно, какой же уровень защиты STM32 поставили китайцы :thinking: Есть шанс перепаять МК на новый :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Serg »

Сергей Саныч писал(а):Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего.
Не во всех реализациях, в более-менее современных от Intel каждый принятый бит заменяет собой тот, что в этом регистре. Я уже напоролся на это...
Впрочем если данные будут представлять собой 8-9 отдельных бит, то на эту проблему можно просто забить. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

UAVpilot писал(а):Впрочем если данные будут представлять собой 8-9 отдельных бит, то на эту проблему можно просто забить.
Для плат на 8 входов/выходов, скорее всего, так и будет.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Глянул что ещё есть в продаже для прикручивания к LinuxCNC. Попалась парочка интересных и недорогих IO плат (Ethernet, STM32, 25$). Вкупе с китайским контроллером будет неплохая Ethernet компания.
16 - ADC, 8 - 4-20мА, 2 - RS485 (3509 просмотров) <a class='original' href='./download/file.php?id=171751&sid=77ea64ea503f1522572a8d48ef7697f8&mode=view' target=_blank>Загрузить оригинал (127.55 КБ)</a>
16 - ADC, 8 - 4-20мА, 2 - RS485
10 опто-входов, 8 реле-выходов (10А) (3509 просмотров) <a class='original' href='./download/file.php?id=171750&sid=77ea64ea503f1522572a8d48ef7697f8&mode=view' target=_blank>Загрузить оригинал (360.55 КБ)</a>
10 опто-входов, 8 реле-выходов (10А)
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение Dmaster »

MX_Master писал(а):лянул что ещё есть в продаже для прикручивания к LinuxCNC. Попалась парочка интересных и недорогих IO плат (Ethernet, STM32, 25$). Вкупе с китайским контроллером будет неплохая Ethernet компания.
А можно ссылки на эти девайсы. И сколько их можно повесить на одну сетевуху?) ато бывает надо 40-50 входов и столько же выходов. использую месы и pci-e 2хLpt. Подумывал для очпушивания старых пультов сдвиговые регистры для ардуины, вот только руки не доходят.
" Linux CNC - наше всё"
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

ссылки на девайсы:
https://item.taobao.com/item.htm?id=598530573295
https://item.taobao.com/item.htm?id=17981626785

Но стоит учесть ещё кое-что. Чем больше устройств, тем больше времени уйдёт на общение с ними. Сервопериод у нас, стессна, не резиновый ;) Поэтому, если надо порядка 100 пинов IO, лучше взять 1 многолапый микроконтроллер на макетке без развязки и добавить к ней жменьку отдельных модулей с развязкой. Так будет дешевле по цене и по времени общения с ЧПУ. Например, можно взять макетку NUCLEO-H743ZI (фото в первом посте темы), на ней порядка 100 свободных пинов. Рядом прикрутить любые модули опто-развязки. Соединить всё эту компанию короткими проводами. Всё.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

Появилась ещё одна интересная мысль по поводу китайского Ethernet контроллера (NVEM и клоны). А что если в контроллере оставить оригинальную прошивку для работы с Mach3, добавить рядом прошивку для LinuxCNC, а в загрузчике сделать выбор между ними? (:

Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение selenur »

MX_Master писал(а):Появилась ещё одна интересная мысль по поводу китайского Ethernet контроллера (NVEM и клоны). А что если в контроллере оставить оригинальную прошивку для работы с Mach3, добавить рядом прошивку для LinuxCNC, а в загрузчике сделать выбор между ними? (:

Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491
А хватит-ли места под 2 прошивки в контроллере?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
MX_Master
Мастер
Сообщения: 7473
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3098
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

selenur писал(а):А хватит-ли места под 2 прошивки в контроллере?
Будет даже три :hehehe: Оригинал занимает примерно 70 Кб. Моя по объёму - почти так же. Флэха у STM32F207VCT6 размером 256 Кб. Веб-загрузчик выйдет примерно на 40-50 Кб.

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

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение selenur »

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

Re: Контроллер для LinuxCNC (Ethernet + STM32)

Сообщение MX_Master »

На веб странице загрузчика будет не только переключатель между прошивками, но и какие-то базовые настройки контроллера (IP адрес, маска сети, ...) + возможность обновления прошивки из файла или сразу с сайта. Если при старте контроллера не тревожить веб-загрузчик, он просто передаст управление той прошивке, которая была указана ранее в настройках.
Ответить

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