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

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

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

Сообщение selenur »

У меня несколько устройств собрано на ENC28J60, работают достаточно хорошо, единственный нюанс, что сборка, разборка данных выполняется вручную, т.е. приходят данные, и нужно понять что это тип (arp, udp), потом в зависимости от этого собрать ответный пакет побайтно, и побитно. А в w5100 ты работаешь на более высоком уровне, и не вникаешь во многие тонкости, это примерно как сравнить программирование асм, и Си, сейчас если-бы я делал устройство, выбрал скорее всего w5100 с ним реально проще :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
alex1816
Мастер
Сообщения: 224
Зарегистрирован: 03 фев 2017, 01:06
Репутация: 35
Настоящее имя: Александр
Откуда: Украина
Контактная информация:

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

Сообщение alex1816 »

Сегодня начал ковырять 7i92
+7i77 (подключил, прошил, начал настраивать .. ну да ладно я не о том).
Прочитал немного документации, и вот на счет того как там организована сеть(попалось под руку заодно и выложу):
HOST COMMUNICATION
The 7I92 standard firmware is designed for low overhead real time communication
with a host controller so implements a very simple set of IPV4 operations. These
operations include ARP reply, ICMP echo reply, and UDP packet receive/send for host
data communications. UDP is used so that the 7I92 can be used on a standard network
with standard tools for non-real time applications. No fragmentation is allowed so
maximum packet size is 1500 bytes.
UDP
All 7I92 data communication is done via UDP packets. The 7I92 socket number for
UDP data communication is 27181. Read data is routed to the requesters port number.
Under UDP, a simple register access protocol is used. This protocol is called LBP16.
LBP16
LBP16 allows read and write access to up to eight separate address spaces with
different sizes and characteristics. Current firmware uses seven of these spaces. For
efficiency, LBP16 allows access to blocks of registers at sequential increasing addresses.
(Block transfers)
Нового ничего здесь нет, но ...
Получается что поверх UDP работает LBP16(похоже, что этот протокол они себе и придумали так как упоминаний в инете о нем мне не попалось).
Не говорю, что надо так же делать, но посмотреть как делают другие лишним не будет. В документации расписано, исходники доступны.
Второй сетевой интерфейс для прошивки может и не нужен.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7475
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Кстати, мне в личку написал человек, который посоветовал обратить внимание вот на этот проект - http://pekka.eu/cnc/. Он пишет, что попросил у автора исходники и запилил такую же штуку но на обычной демо борде. Пишет, что некоторые проблемы есть, но в целом всё работает.

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

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

Сообщение MX_Master »

Может кто-то посоветует как лучше (и бюджетно) организовать высокоскоростую развязку входов/выходов?
Как говорится, если делать так по большому :hehehe: Я сначала думал, что опторазвязку можно сделать отдельными платками, но спустя время понял, что лучший вариант иметь развязку уже из коробки.
Аватара пользователя
Argon-11
Мастер
Сообщения: 2067
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

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

Сообщение Argon-11 »

Цифровые изоляторы до 150 МГц, 1корпус = 6 каналов, цена примерно 12рублей за канал:
https://ru.aliexpress.com/wholesale?cat ... ext=si8660
Аватара пользователя
MX_Master
Мастер
Сообщения: 7475
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Argon-11 писал(а):Цифровые изоляторы до 150 МГц, 1корпус = 6 каналов, цена примерно 12рублей за канал:
https://ru.aliexpress.com/wholesale?cat ... ext=si8660
Спасибо за совет, на выходы должны подойти идеально.

А вот на входе надо явно что-то другое ставить. Чтоб и концевики 12-24V можно было подключить, и датчик длины инструмента, и центроискатель, и всякое другое с напряжением больше 5V.
Аватара пользователя
Argon-11
Мастер
Сообщения: 2067
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

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

Сообщение Argon-11 »

А на входы - оптроны, там ведь не требуется высокое быстродействие. Да и входов обычно заметно меньше, чем выходов.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

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

Сообщение N1X »

MX_Master писал(а):Чтоб и концевики 12-24V можно было подключить, и датчик длины инструмента, и центроискатель, и всякое другое с напряжением больше 5V.
Ну привести диапазон к фиксированному напряжению то не проблема... Даже банально Резистор от входа и на стабилитрон пятивольтовый...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

MX_Master писал(а):Может кто-то посоветует как лучше (и бюджетно) организовать высокоскоростую развязку входов/выходов?
Сначала надо хорошенько подумать что именно и зачем "развязывать". :)
Для начала надо постоянно помнить, что вся эта твоя плата уже развязана от компа.
Дискретные входы и выходы и их питание (рекомендую 24В) - это одна часть. Однако если этим-же напряжением питать и саму плату, то окажется, что все эти входы/выходы и развязывть-то не от чего. :)
Ну и так далее... :) Правда у этого метода есть побочный эффект - в результате может оказаться, что и развязка-то совсем не нужна... :)

P.S. Я обычно развязываю только RS485 - не известно к чему придётся подключать, да и возможный километр линии может сказаться.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7475
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Скорее всего, надо составить список возможных устройств, которые гарантированно можно будет подключить к этой платке. Тогда будет боль мень понятно, что и как развязать. Начнём с главного..

Драйвер мотора (STEP/DIR/ENBL)
Обычно, на входе рядового драйвера уже стоят оптопары, рассчитанные на широкий спектр напряжений (3V..36V). На такие драйвера можно подавать сигнал прям с ноги МК и всё будет развязано. Однако, есть ряд других драйверов. Например, на бюджетных модулях с DRV8825 развязки нет и сигналы можно подавать только с напряжением 2.5V..5.5V. В этом случае развязка нужна и напряжение на выходе должно быть не более 5V.

Энкодеры и линейки (A/B/Z)
Чаще всего они запитываются от 5V..24V и выходные сигналы с них соответствующие. И чтобы подключить их к МК нужна высокоскоростная опторазвязка.

Частотный преобразователь (CW/CCW/0..10V)
На входах, обычно, стоят оптопары. Но, я считаю, что развязка обязательна.

Концевики, датчики и кнопки
Обычные концевики и кнопки (замыкают 2 контакта) нельзя подключать напрямую к МК. На провод может попасть высоковольтная наводка и ножке МК поплохеет. Развязка обязательна. Индуктивные и прочие датчики, обычно, запитываются от 3V..36V. И чтобы подключить их к МК нужна обычная (до 20 КГц) опторазвязка.

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

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

Сообщение Serg »

MX_Master писал(а):Например, на бюджетных модулях с DRV8825 развязки нет и сигналы можно подавать только с напряжением 2.5V..5.5V. В этом случае развязка нужна и напряжение на выходе должно быть не более 5V.
Хочешь ради такого редкого случая увеличить стоимость проекта для всех?..
MX_Master писал(а):Обычные концевики и кнопки (замыкают 2 контакта) нельзя подключать напрямую к МК. На провод может попасть высоковольтная наводка и ножке МК поплохеет. Развязка обязательна. Индуктивные и прочие датчики, обычно, запитываются от 3V..36V. И чтобы подключить их к МК нужна обычная (до 20 КГц) опторазвязка.
Напрямую к ногам МК лучше вообще ничего не подключать, а использовать буферные элементы хотя-бы в виде 74 серии. :)
Ну а против высоковольных наводок понапридумывано всяких супрессоров/стабилитронов. В самом МК тоже есть защита от таких наводок, особенно если используется делитель для высоковольных входов. Да и какой смысл опторазвязки для концевиков, если их питать от того-же источника и они сами по себе гальванически изолированы от всего остального?..
MX_Master писал(а):Модули с обычными или твёрдотельными реле
Чаще всего на входе такого модуля уже стоят оптопары, рассчитанные на широкий спектр напряжений. На такие модули можно подавать сигнал прям с ноги МК. Всё будет развязано.
Только вот ток срабатывания твёрдотельного реле запросто может оказаться больше нагрузочной способности ноги МК...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
T00T
Мастер
Сообщения: 742
Зарегистрирован: 16 дек 2011, 12:07
Репутация: 100
Контактная информация:

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

Сообщение T00T »

MX_Master писал(а):А не поделитесь ли своим опытом в области ENC28J60?
Периодически использую этот чип. Для простеньких приложений годится.
Даже в плате IO к linuxCNC прикручивал.
104_3439.JPG (2706 просмотров) <a class='original' href='./download/file.php?id=135399&sid=47aeb75dbcc4baab30e4c1f41de58d3a&mode=view' target=_blank>Загрузить оригинал (910.14 КБ)</a>
Я не волшебник я пока учусь......
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение MX_Master »

Вощем, по развязке всё боль мень понятно. На входы/выходы step/dir/encA/encB можно ставить SI8660.
На обычные входы/выходы можно прикинуть какие-ньть недорогие TLP281-4.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

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

Сообщение N1X »

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

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

Сообщение MX_Master »

Надо подсмотреть как другие люди делают.. С энкодерами и линейками никогда не работал. У меня и линеек-то нет проверить, надо будет прикупить хотяб 1 энкодер..
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

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

Сообщение N1X »

полистай, там примеры интерфейсов есть...
http://www.skbis.ru/catalog2014/catalog ... c_2014.pdf
Аватара пользователя
MX_Master
Мастер
Сообщения: 7475
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Я так понял, что у современных линеек чаще всего выход - TTL (5V). А у обычных (угловых) энкодеров?
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

Тоже. Чаще дифференциальный A+A-B+B-Z+Z-
Аватара пользователя
MX_Master
Мастер
Сообщения: 7475
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Спасибо всем за советы. Изучив поглубже сей вопрос стало понятно, что развязку и доп. функции нужно делать только отдельными платками. Учесть все варианты подключения устройств и разместить на одной плате всё необходимое - выйдет довольно дорого. К тому же это может привести к ошибкам в работе устройства ввиду непростой схемы и разводки. Ну и, наконец, поставив себя на место пользователя, я бы не хотел платить за то, что мне действительно не нужно.
Ответить

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