дёргать/читать можно только управляющие сигналы и TX (4in, 3out), а для приёма/передачи последовательных данных используется FIFO.MX_Master писал(а):Спасибо, буду знать. А если мы дёргаем/читаем пины порта вручную (rtapi_inb/outb, serport.comp), засада с буфером будет решена?
Ethernet контроллер для LinuxCNC (STM32, FPGA)
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Т.е. сделать что-то вроде soft serial не выйдет? Имею ввиду вариант, где мы сами с учётом HR таймера в простом цикле дёргаем/читаем состояние пинов с нужной частотой.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Передавать можно будет, но медленно, принимать - нет.
А что ты хочешь получить в итоге? Может есть другие пути...
А что ты хочешь получить в итоге? Может есть другие пути...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Китайцы производят много разных и недорогих ПЛК c STM32 на борту и с RS232 в качестве связи. Было бы удобно юзать эти ПЛК в качестве плат IO, подключая их прямо к ПК. Прошивку в МК (или сам МК) поменять не сложно. Но хотелось бы иметь возможность работать с этими ПЛК платами в RT циклах. Хотя бы в сервоцикле (:
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Здесь немножкоMX_Master писал(а):Попутно заметил в LinuxCNC драйвер (RT), который позволяет обращаться к пинам COM порта напрямую. Но что-то нигде не видно примеров его применения.
Тут прототип пульта с РГИ
Кстати, я его давно переделал в более "цивильный" формат - встроил в китайский пульт, который тут недавно упоминался.
Если написать свой драйвер на основе serport, который бы работал с портом на уровне регистров, то лишних задержек не будет.MX_Master писал(а):Вопрос к знатокам - способен ли компьютерный COM порт (rs232, serial) и его драйвер успеть за сервопериод отправить/получить минимально полезный объем данных (10-20бит)? Будут ли в процессе непредсказуемые задержки? (:
Насколько я помню, буферизация в чипах SIO отключаемая.UAVpilot писал(а):останется засада с неуправляемой буферизацией данных (16 байт FIFO в чипе порта).
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Лишнее это. К COM нужно просто подключать платы ввода-вывода (реле, оптроны) с управлением по Modbus и использовать их для более медленных процессов - смена инструмента, вкл/выкл СОЖ, кнопки, а ПЛК реализовывать в HAL.MX_Master писал(а):Китайцы производят много разных и недорогих ПЛК c STM32 на борту и с RS232 в качестве связи. Было бы удобно юзать эти ПЛК в качестве плат IO, подключая их прямо к ПК. Прошивку в МК (или сам МК) поменять не сложно. Но хотелось бы иметь возможность работать с этими ПЛК платами в RT циклах. Хотя бы в сервоцикле (:
Битик-то есть, только вот при отключении будут проблемы с приёмом - нужно будет успевать забирать принятый байт до начала приёма следующего, а драйвер у нас не очень-то и RT...Сергей Саныч писал(а): Насколько я помню, буферизация в чипах SIO отключаемая.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего. Даже при полном отключении FIFO. Так что запас времени около 100 мкс при 115200 бод у нас будет. Достаточно при программном опросе по base_freq.UAVpilot писал(а):нужно будет успевать забирать принятый байт до начала приёма следующего
Чудес не бывает. Бывают фокусы.
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Да, обычно, всё так. Про ПЛК ничего не говорю. Я имел ввиду, что сами платы (меняя прошивку) можно юзать как доп. платы IO. И если у нас будет возможность юзать их не только в userspace, но и в RT, это будет очень удобно и полезно.UAVpilot писал(а):К COM нужно просто подключать платы ввода-вывода (реле, оптроны) с управлением по Modbus и использовать их для более медленных процессов, а ПЛК реализовывать в HAL.
Сергей Саныч писал(а):Насколько я помню, буферизация в чипах SIO отключаемая.
UAVpilot писал(а):Битик-то есть, только вот при отключении будут проблемы с приёмом - нужно будет успевать забирать принятый байт до начала приёма следующего, а драйвер у нас не очень-то и RT...
Если я правильно понял, сделать отправку/получение данных в сервоцикле, всё-таки, можно Это несомненно радует. Значит, работать надо напрямую с регистрами порта. Ради спортивного интереса можно и попробовать.Сергей Саныч писал(а):Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего. Даже при полном отключении FIFO. Так что запас времени около 100 мкс при 115200 бод у нас будет. Достаточно при программном опросе по base_freq.
- going
- Мастер
- Сообщения: 523
- Зарегистрирован: 29 сен 2013, 20:55
- Репутация: 129
- Настоящее имя: Леонид
- Откуда: г.Киров
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Готовое решение для некоторых аппаратных платформ в xenomai имеется.MX_Master писал(а):И если у нас будет возможность юзать их не только в userspace, но и в RT, это будет очень удобно и полезно.
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)
Большой и многофункциональный драйвер в такой задаче, скорее всего, не нужен. Быстрее и легче работать с регистрами напрямую. Общий принцип отправки и получения понятен. 115200 кбит/с максимум. В сервопериод должно поместиться. Вощем, нужны тесты. Жаль под рукой нет ничего с STM32 и RS232. Придётся заказать какого-нибудь ПЛК малыша. По-моему, для тестов этот будет идеален - https://item.taobao.com/item.htm?id=592673408733. Вот интересно, какой же уровень защиты STM32 поставили китайцы Есть шанс перепаять МК на новый
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Не во всех реализациях, в более-менее современных от Intel каждый принятый бит заменяет собой тот, что в этом регистре. Я уже напоролся на это...Сергей Саныч писал(а):Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего.
Впрочем если данные будут представлять собой 8-9 отдельных бит, то на эту проблему можно просто забить.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Для плат на 8 входов/выходов, скорее всего, так и будет.UAVpilot писал(а):Впрочем если данные будут представлять собой 8-9 отдельных бит, то на эту проблему можно просто забить.
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Глянул что ещё есть в продаже для прикручивания к LinuxCNC. Попалась парочка интересных и недорогих IO плат (Ethernet, STM32, 25$). Вкупе с китайским контроллером будет неплохая Ethernet компания.
- Dmaster
- Мастер
- Сообщения: 1271
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
А можно ссылки на эти девайсы. И сколько их можно повесить на одну сетевуху?) ато бывает надо 40-50 входов и столько же выходов. использую месы и pci-e 2хLpt. Подумывал для очпушивания старых пультов сдвиговые регистры для ардуины, вот только руки не доходят.MX_Master писал(а):лянул что ещё есть в продаже для прикручивания к LinuxCNC. Попалась парочка интересных и недорогих IO плат (Ethernet, STM32, 25$). Вкупе с китайским контроллером будет неплохая Ethernet компания.
" Linux CNC - наше всё"
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
ссылки на девайсы:
https://item.taobao.com/item.htm?id=598530573295
https://item.taobao.com/item.htm?id=17981626785
Но стоит учесть ещё кое-что. Чем больше устройств, тем больше времени уйдёт на общение с ними. Сервопериод у нас, стессна, не резиновый Поэтому, если надо порядка 100 пинов IO, лучше взять 1 многолапый микроконтроллер на макетке без развязки и добавить к ней жменьку отдельных модулей с развязкой. Так будет дешевле по цене и по времени общения с ЧПУ. Например, можно взять макетку NUCLEO-H743ZI (фото в первом посте темы), на ней порядка 100 свободных пинов. Рядом прикрутить любые модули опто-развязки. Соединить всё эту компанию короткими проводами. Всё.
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)
Появилась ещё одна интересная мысль по поводу китайского Ethernet контроллера (NVEM и клоны). А что если в контроллере оставить оригинальную прошивку для работы с Mach3, добавить рядом прошивку для LinuxCNC, а в загрузчике сделать выбор между ними? (:
Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491
Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
А хватит-ли места под 2 прошивки в контроллере?MX_Master писал(а):Появилась ещё одна интересная мысль по поводу китайского Ethernet контроллера (NVEM и клоны). А что если в контроллере оставить оригинальную прошивку для работы с Mach3, добавить рядом прошивку для LinuxCNC, а в загрузчике сделать выбор между ними? (:
Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
Будет даже три Оригинал занимает примерно 70 Кб. Моя по объёму - почти так же. Флэха у STM32F207VCT6 размером 256 Кб. Веб-загрузчик выйдет примерно на 40-50 Кб.selenur писал(а):А хватит-ли места под 2 прошивки в контроллере?
70 + 70 + 50 = 190 Кб. В теории всё умещается
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
т.е. для выбора прошивки которую загружать, нужно через веб интерфейс заходить?MX_Master писал(а):Веб-загрузчик
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- MX_Master
- Мастер
- Сообщения: 7473
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3098
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер для LinuxCNC (Ethernet + STM32)
На веб странице загрузчика будет не только переключатель между прошивками, но и какие-то базовые настройки контроллера (IP адрес, маска сети, ...) + возможность обновления прошивки из файла или сразу с сайта. Если при старте контроллера не тревожить веб-загрузчик, он просто передаст управление той прошивке, которая была указана ранее в настройках.