Страница 44 из 70

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

Добавлено: 09 ноя 2019, 04:42
Serg
MX_Master писал(а):Спасибо, буду знать. А если мы дёргаем/читаем пины порта вручную (rtapi_inb/outb, serport.comp), засада с буфером будет решена?
дёргать/читать можно только управляющие сигналы и TX (4in, 3out), а для приёма/передачи последовательных данных используется FIFO.

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

Добавлено: 09 ноя 2019, 04:46
MX_Master
Т.е. сделать что-то вроде soft serial не выйдет? Имею ввиду вариант, где мы сами с учётом HR таймера в простом цикле дёргаем/читаем состояние пинов с нужной частотой.

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

Добавлено: 09 ноя 2019, 04:54
Serg
Передавать можно будет, но медленно, принимать - нет.
А что ты хочешь получить в итоге? Может есть другие пути...

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

Добавлено: 09 ноя 2019, 05:02
MX_Master
Китайцы производят много разных и недорогих ПЛК c STM32 на борту и с RS232 в качестве связи. Было бы удобно юзать эти ПЛК в качестве плат IO, подключая их прямо к ПК. Прошивку в МК (или сам МК) поменять не сложно. Но хотелось бы иметь возможность работать с этими ПЛК платами в RT циклах. Хотя бы в сервоцикле (:

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

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

Тут прототип пульта с РГИ
Кстати, я его давно переделал в более "цивильный" формат - встроил в китайский пульт, который тут недавно упоминался.
MX_Master писал(а):Вопрос к знатокам - способен ли компьютерный COM порт (rs232, serial) и его драйвер успеть за сервопериод отправить/получить минимально полезный объем данных (10-20бит)? Будут ли в процессе непредсказуемые задержки? (:
Если написать свой драйвер на основе serport, который бы работал с портом на уровне регистров, то лишних задержек не будет.
UAVpilot писал(а):останется засада с неуправляемой буферизацией данных (16 байт FIFO в чипе порта).
Насколько я помню, буферизация в чипах SIO отключаемая.

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

Добавлено: 09 ноя 2019, 05:18
Serg
MX_Master писал(а):Китайцы производят много разных и недорогих ПЛК c STM32 на борту и с RS232 в качестве связи. Было бы удобно юзать эти ПЛК в качестве плат IO, подключая их прямо к ПК. Прошивку в МК (или сам МК) поменять не сложно. Но хотелось бы иметь возможность работать с этими ПЛК платами в RT циклах. Хотя бы в сервоцикле (:
Лишнее это. К COM нужно просто подключать платы ввода-вывода (реле, оптроны) с управлением по Modbus и использовать их для более медленных процессов - смена инструмента, вкл/выкл СОЖ, кнопки, а ПЛК реализовывать в HAL.
Сергей Саныч писал(а): Насколько я помню, буферизация в чипах SIO отключаемая.
Битик-то есть, только вот при отключении будут проблемы с приёмом - нужно будет успевать забирать принятый байт до начала приёма следующего, а драйвер у нас не очень-то и RT...

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

Добавлено: 09 ноя 2019, 05:48
Сергей Саныч
UAVpilot писал(а):нужно будет успевать забирать принятый байт до начала приёма следующего
Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего. Даже при полном отключении FIFO. Так что запас времени около 100 мкс при 115200 бод у нас будет. Достаточно при программном опросе по base_freq.

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

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

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

Добавлено: 09 ноя 2019, 12:14
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
Об этом речь?

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

Добавлено: 09 ноя 2019, 14:06
MX_Master
Большой и многофункциональный драйвер в такой задаче, скорее всего, не нужен. Быстрее и легче работать с регистрами напрямую. Общий принцип отправки и получения понятен. 115200 кбит/с максимум. В сервопериод должно поместиться. Вощем, нужны тесты. Жаль под рукой нет ничего с STM32 и RS232. Придётся заказать какого-нибудь ПЛК малыша. По-моему, для тестов этот будет идеален - https://item.taobao.com/item.htm?id=592673408733. Вот интересно, какой же уровень защиты STM32 поставили китайцы :thinking: Есть шанс перепаять МК на новый :)

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

Добавлено: 09 ноя 2019, 17:39
Serg
Сергей Саныч писал(а):Есть там промежуточный регистр, где принятый байт хранится до окончания приема следующего.
Не во всех реализациях, в более-менее современных от Intel каждый принятый бит заменяет собой тот, что в этом регистре. Я уже напоролся на это...
Впрочем если данные будут представлять собой 8-9 отдельных бит, то на эту проблему можно просто забить. :)

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

Добавлено: 09 ноя 2019, 18:01
MX_Master
UAVpilot писал(а):Впрочем если данные будут представлять собой 8-9 отдельных бит, то на эту проблему можно просто забить.
Для плат на 8 входов/выходов, скорее всего, так и будет.

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

Добавлено: 11 ноя 2019, 08:18
MX_Master
Глянул что ещё есть в продаже для прикручивания к LinuxCNC. Попалась парочка интересных и недорогих IO плат (Ethernet, STM32, 25$). Вкупе с китайским контроллером будет неплохая Ethernet компания.
16 - ADC, 8 - 4-20мА, 2 - RS485 (3536 просмотров) <a class='original' href='./download/file.php?id=171751&mode=view' target=_blank>Загрузить оригинал (127.55 КБ)</a>
16 - ADC, 8 - 4-20мА, 2 - RS485
10 опто-входов, 8 реле-выходов (10А) (3536 просмотров) <a class='original' href='./download/file.php?id=171750&mode=view' target=_blank>Загрузить оригинал (360.55 КБ)</a>
10 опто-входов, 8 реле-выходов (10А)

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

Добавлено: 11 ноя 2019, 13:14
Dmaster
MX_Master писал(а):лянул что ещё есть в продаже для прикручивания к LinuxCNC. Попалась парочка интересных и недорогих IO плат (Ethernet, STM32, 25$). Вкупе с китайским контроллером будет неплохая Ethernet компания.
А можно ссылки на эти девайсы. И сколько их можно повесить на одну сетевуху?) ато бывает надо 40-50 входов и столько же выходов. использую месы и pci-e 2хLpt. Подумывал для очпушивания старых пультов сдвиговые регистры для ардуины, вот только руки не доходят.

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

Добавлено: 11 ноя 2019, 13:55
MX_Master
ссылки на девайсы:
https://item.taobao.com/item.htm?id=598530573295
https://item.taobao.com/item.htm?id=17981626785

Но стоит учесть ещё кое-что. Чем больше устройств, тем больше времени уйдёт на общение с ними. Сервопериод у нас, стессна, не резиновый ;) Поэтому, если надо порядка 100 пинов IO, лучше взять 1 многолапый микроконтроллер на макетке без развязки и добавить к ней жменьку отдельных модулей с развязкой. Так будет дешевле по цене и по времени общения с ЧПУ. Например, можно взять макетку NUCLEO-H743ZI (фото в первом посте темы), на ней порядка 100 свободных пинов. Рядом прикрутить любые модули опто-развязки. Соединить всё эту компанию короткими проводами. Всё.

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

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

Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491

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

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

Чтобы реализовать это технически, я поинтересовался у спецов соседнего форума - https://electronix.ru/forum/index.php?a ... &id=154491
А хватит-ли места под 2 прошивки в контроллере?

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

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

70 + 70 + 50 = 190 Кб. В теории всё умещается :freak:

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

Добавлено: 18 ноя 2019, 15:41
selenur
MX_Master писал(а):Веб-загрузчик
т.е. для выбора прошивки которую загружать, нужно через веб интерфейс заходить?

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

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