Ethernet контроллер для LinuxCNC (STM32, FPGA)
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
У меня несколько устройств собрано на ENC28J60, работают достаточно хорошо, единственный нюанс, что сборка, разборка данных выполняется вручную, т.е. приходят данные, и нужно понять что это тип (arp, udp), потом в зависимости от этого собрать ответный пакет побайтно, и побитно. А в w5100 ты работаешь на более высоком уровне, и не вникаешь во многие тонкости, это примерно как сравнить программирование асм, и Си, сейчас если-бы я делал устройство, выбрал скорее всего w5100 с ним реально проще
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 224
- Зарегистрирован: 03 фев 2017, 01:06
- Репутация: 35
- Настоящее имя: Александр
- Откуда: Украина
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Сегодня начал ковырять 7i92
Получается что поверх UDP работает LBP16(похоже, что этот протокол они себе и придумали так как упоминаний в инете о нем мне не попалось).
Не говорю, что надо так же делать, но посмотреть как делают другие лишним не будет. В документации расписано, исходники доступны.
Второй сетевой интерфейс для прошивки может и не нужен.
+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)
Нового ничего здесь нет, но ...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
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Кстати, мне в личку написал человек, который посоветовал обратить внимание вот на этот проект - http://pekka.eu/cnc/. Он пишет, что попросил у автора исходники и запилил такую же штуку но на обычной демо борде. Пишет, что некоторые проблемы есть, но в целом всё работает.
Сам автор пишет, что единственная проблема - это очень долгая пересылка данных, до 600 мкс. Я хоть и мастер ухищрений в оптимизации, но 600 мкс как-то настораживают..
Сам автор пишет, что единственная проблема - это очень долгая пересылка данных, до 600 мкс. Я хоть и мастер ухищрений в оптимизации, но 600 мкс как-то настораживают..
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Может кто-то посоветует как лучше (и бюджетно) организовать высокоскоростую развязку входов/выходов?
Как говорится, если делать так по большому Я сначала думал, что опторазвязку можно сделать отдельными платками, но спустя время понял, что лучший вариант иметь развязку уже из коробки.
- Argon-11
- Мастер
- Сообщения: 2067
- Зарегистрирован: 07 июн 2017, 17:48
- Репутация: 461
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Цифровые изоляторы до 150 МГц, 1корпус = 6 каналов, цена примерно 12рублей за канал:
https://ru.aliexpress.com/wholesale?cat ... ext=si8660
https://ru.aliexpress.com/wholesale?cat ... ext=si8660
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Спасибо за совет, на выходы должны подойти идеально.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)
А на входы - оптроны, там ведь не требуется высокое быстродействие. Да и входов обычно заметно меньше, чем выходов.
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1645
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Ну привести диапазон к фиксированному напряжению то не проблема... Даже банально Резистор от входа и на стабилитрон пятивольтовый...MX_Master писал(а):Чтоб и концевики 12-24V можно было подключить, и датчик длины инструмента, и центроискатель, и всякое другое с напряжением больше 5V.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Сначала надо хорошенько подумать что именно и зачем "развязывать".MX_Master писал(а):Может кто-то посоветует как лучше (и бюджетно) организовать высокоскоростую развязку входов/выходов?
Для начала надо постоянно помнить, что вся эта твоя плата уже развязана от компа.
Дискретные входы и выходы и их питание (рекомендую 24В) - это одна часть. Однако если этим-же напряжением питать и саму плату, то окажется, что все эти входы/выходы и развязывть-то не от чего.
Ну и так далее... Правда у этого метода есть побочный эффект - в результате может оказаться, что и развязка-то совсем не нужна...
P.S. Я обычно развязываю только RS485 - не известно к чему придётся подключать, да и возможный километр линии может сказаться.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Скорее всего, надо составить список возможных устройств, которые гарантированно можно будет подключить к этой платке. Тогда будет боль мень понятно, что и как развязать. Начнём с главного..
Драйвер мотора (STEP/DIR/ENBL)
Обычно, на входе рядового драйвера уже стоят оптопары, рассчитанные на широкий спектр напряжений (3V..36V). На такие драйвера можно подавать сигнал прям с ноги МК и всё будет развязано. Однако, есть ряд других драйверов. Например, на бюджетных модулях с DRV8825 развязки нет и сигналы можно подавать только с напряжением 2.5V..5.5V. В этом случае развязка нужна и напряжение на выходе должно быть не более 5V.
Энкодеры и линейки (A/B/Z)
Чаще всего они запитываются от 5V..24V и выходные сигналы с них соответствующие. И чтобы подключить их к МК нужна высокоскоростная опторазвязка.
Частотный преобразователь (CW/CCW/0..10V)
На входах, обычно, стоят оптопары. Но, я считаю, что развязка обязательна.
Концевики, датчики и кнопки
Обычные концевики и кнопки (замыкают 2 контакта) нельзя подключать напрямую к МК. На провод может попасть высоковольтная наводка и ножке МК поплохеет. Развязка обязательна. Индуктивные и прочие датчики, обычно, запитываются от 3V..36V. И чтобы подключить их к МК нужна обычная (до 20 КГц) опторазвязка.
Модули с обычными или твёрдотельными реле
Чаще всего на входе такого модуля уже стоят оптопары, рассчитанные на широкий спектр напряжений. На такие модули можно подавать сигнал прям с ноги МК. Всё будет развязано.
Драйвер мотора (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)
Хочешь ради такого редкого случая увеличить стоимость проекта для всех?..MX_Master писал(а):Например, на бюджетных модулях с DRV8825 развязки нет и сигналы можно подавать только с напряжением 2.5V..5.5V. В этом случае развязка нужна и напряжение на выходе должно быть не более 5V.
Напрямую к ногам МК лучше вообще ничего не подключать, а использовать буферные элементы хотя-бы в виде 74 серии.MX_Master писал(а):Обычные концевики и кнопки (замыкают 2 контакта) нельзя подключать напрямую к МК. На провод может попасть высоковольтная наводка и ножке МК поплохеет. Развязка обязательна. Индуктивные и прочие датчики, обычно, запитываются от 3V..36V. И чтобы подключить их к МК нужна обычная (до 20 КГц) опторазвязка.
Ну а против высоковольных наводок понапридумывано всяких супрессоров/стабилитронов. В самом МК тоже есть защита от таких наводок, особенно если используется делитель для высоковольных входов. Да и какой смысл опторазвязки для концевиков, если их питать от того-же источника и они сами по себе гальванически изолированы от всего остального?..
Только вот ток срабатывания твёрдотельного реле запросто может оказаться больше нагрузочной способности ноги МК...MX_Master писал(а):Модули с обычными или твёрдотельными реле
Чаще всего на входе такого модуля уже стоят оптопары, рассчитанные на широкий спектр напряжений. На такие модули можно подавать сигнал прям с ноги МК. Всё будет развязано.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 742
- Зарегистрирован: 16 дек 2011, 12:07
- Репутация: 100
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Периодически использую этот чип. Для простеньких приложений годится.MX_Master писал(а):А не поделитесь ли своим опытом в области ENC28J60?
Даже в плате IO к linuxCNC прикручивал.
Я не волшебник я пока учусь......
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Вощем, по развязке всё боль мень понятно. На входы/выходы step/dir/encA/encB можно ставить SI8660.
На обычные входы/выходы можно прикинуть какие-ньть недорогие TLP281-4.
На обычные входы/выходы можно прикинуть какие-ньть недорогие TLP281-4.
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1645
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
На входы энкодера еще и дифприемники ставить нужно )
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Надо подсмотреть как другие люди делают.. С энкодерами и линейками никогда не работал. У меня и линеек-то нет проверить, надо будет прикупить хотяб 1 энкодер..
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1645
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
полистай, там примеры интерфейсов есть...
http://www.skbis.ru/catalog2014/catalog ... c_2014.pdf
http://www.skbis.ru/catalog2014/catalog ... c_2014.pdf
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Я так понял, что у современных линеек чаще всего выход - TTL (5V). А у обычных (угловых) энкодеров?
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Тоже. Чаще дифференциальный A+A-B+B-Z+Z-
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Плата развязки для LinuxCNC (Ethernet + STM32)
Спасибо всем за советы. Изучив поглубже сей вопрос стало понятно, что развязку и доп. функции нужно делать только отдельными платками. Учесть все варианты подключения устройств и разместить на одной плате всё необходимое - выйдет довольно дорого. К тому же это может привести к ошибкам в работе устройства ввиду непростой схемы и разводки. Ну и, наконец, поставив себя на место пользователя, я бы не хотел платить за то, что мне действительно не нужно.