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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

А что если добавить возможность подключения по SPI ? У одноплатных ПК ethernet порт - это зачастую единственный выход в сеть. Если воткнуть STM'ку в этот порт, то одноплатник сразу лишается интернетов и прочих сетевых прелестей. Я, к примеру, очень часто закидываю файлы УП по сети.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Для интернетов есть USB-Eth.

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

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

Сообщение MX_Master »

Ясно, значит, пока не дёргаюсь (:
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

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

Сообщение sergx99 »

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

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

Сообщение Serg »

sergx99 писал(а):SPI на длинной линии, описание проблемы и решение.
Т.ё. тот-же самый RS422, только пар проводов больше. :)
Напрашивается вопрос: а собственно сам SPI там зачем?.. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
sergx99
Новичок
Сообщения: 35
Зарегистрирован: 27 фев 2016, 17:03
Репутация: 7
Настоящее имя: Сергей
Контактная информация:

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

Сообщение sergx99 »

UAVpilot писал(а):
sergx99 писал(а):SPI на длинной линии, описание проблемы и решение.
Т.ё. тот-же самый RS422, только пар проводов больше. :)
Напрашивается вопрос: а собственно сам SPI там зачем?.. :)
Да проводов больше, два SPI со стороны мастера, но идет речь о кабеле 100м и скорости 10 Мбит/с.
Честный RS422, на этой длинне, только 1 Мбит / с гарантирует.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Простой SPI вообще ничего не гарантирует по длине и скорости - это всё зависит только от физического уровня который SPI не описывает. Например если его засунуть в оптоволокно, то это вообще будут гигабиты или десятки километров.
Если-же SPI запихнуть в "честный RS422" (что собственно в статье и предлагается), то скорости и дальность теоретически будет как у "честного RS422". :)

Кстати, про
sergx99 писал(а):речь о кабеле 100м и скорости 10 Мбит/с.
для SPI это невозможно физически. В смысле законы физики не позволят. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

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

Сообщение wldev »

У меня когда встал вопрос о расширении кол-ва входов , осей и пр. То я выбрал такую схему: с ПК соединяется stm32f4 (или круче) по usb. Далее сеть can с опторазвязкой (iso1050) от пк. Результат более чем устраивает.

+ Аппаратная поддержка stm 32
+ Стремящаяся к нулю вероятность передачи неверных данных
+ Приоритетности передачи
+ Одну посылку видят все
+ Можно передавать децентрализованно
+ Цена

- пакет максимум 8 байт

Например у меня f4 двигает осями а датчик org "y " подключен через can к f1. Или
управление узлом рубки сделал так что ШИМ и входные сигналы по can а логика сидит на f4.
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Ну, с ethernet'ами вопрос расширения решается довольно просто (: Я, буквально, вчера проверял.

До проверки скоростей ещё не дошёл, изучаю тонкости работы с ethernet в F4. Хочу убрать из функций приёма и отправки всё лишнее. Остановился на RAW пакетах, для меня это лучший вариант.
Birukov
Новичок
Сообщения: 2
Зарегистрирован: 08 апр 2017, 20:26
Репутация: 0
Настоящее имя: Ak
Контактная информация:

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

Сообщение Birukov »

Хочу присоединиться к проекту. СТМ программировать умею, ЛЦНЦ видел, даже поставил на 3Д фрезер большой Пратт-Уитни.
Со стороны ЛСНЦ как раз проблемы - не понимаю протокола обмена, как настраивать и т.д.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Немного отвлёкся на другой проект (OrangePi + LinuxCNC). Но отвлёкся не зря. В перерывах было время подумать на тему, как использовать этот проект (STM32 + Ethernet) как можно продуктивнее.

В какой-то момент в голову ударила мысль, что эту платку можно смело заюзать не только как ногодрыг для LinuxCNC, но и как отдельный контроллер с веб мордой. Причём, морда управления будет лежать внутри самой STM'ки (или рядом на SPI флэшке 8/16/32 Мб). Для хранения файлов УП будет использоваться любая внешняя SD флэшка. Согласно этой задумке, решил взять за основу STM32F407VGT6 у которой на борту 1024 Кб программной памяти.

Скорее всего, прошивки будут разные. Но заливать их можно будет через единую веб морду. Кто хочет, будет юзать это дело как плату развязки для LinuxCNC, а другие - как отдельный контроллер.
alex1816
Мастер
Сообщения: 224
Зарегистрирован: 03 фев 2017, 01:06
Репутация: 35
Настоящее имя: Александр
Откуда: Украина
Контактная информация:

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

Сообщение alex1816 »

Ух и задумки ... :)
Если файлы УП на флешке - значит в контроллере планируется полноценный ЧПУ с планировщиком и тп?
А не за мало мощи у стм-ки для этого.
Может лучше все таки в таком случае разделить на два сопроцессора, реалтайм отдельно, а все остальное .... ну наверное на OrangePI:)
Веб морда реалтайму вряд ли мешать будет, потому как она больше стоять будет чем работать.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

Вспоминая первый опыт работы со Smoothieware, могу сказать, что полноценный контроллер запихнуть внутрь - не проблема. Проблемой Smoothieware был неправильный выбор чипа по аппаратной части и нерациональное его использование.

Самая большая проблема у них была в скорости работы с SD картой. Если G код был из очень мелких отрезков, контроллер тупо не успевал их читать и обрабатывать. Мне в этом плане нравится подход программы CNC USB Controller. Она перед стартом переваривает весь текстовый G код в удобный бинарный формат. Т.е. планирует всё заранее. Этот бинарный файл, состоящий из строгих команд контроллеру, читается и выполняется в разы быстрее. Поэтому во время работы проц не волнуется о планировании и занимается более полезными делами.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

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

Сообщение selenur »

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

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

Сообщение MX_Master »

selenur писал(а):Смотрел много разных решений, и это на мой взгляд самое интересное, да контроллер сам не парсит G-код, зато есть единый формат "кадров" которые передаются в контроллер либо по USB, либо по сети, либо с карты памяти, где в каждом кадре есть информация о том какие оси на каких скоростях, сколько должны выполнить импульсов, и какие доп-выходы какой должны генерировать сигнал (для шпинделя, лазера, тумана).
В моем случае надо проверить, какой вариант разбора G кода будет быстрее - STM'кой или средствами браузера. Давно хотел поверить возможности WebAssembly.

Продолжение темы - http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=19713.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

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

Сообщение selenur »

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

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

Сообщение MX_Master »

selenur писал(а):посмотрел как выглядит "линейный ассемблерный код байт-код"
Смесь Си и ассемблера в перемешку, выглядит конечно странновато....
Мне тоже интересно. Потому что обычная виртуальная машинка для JavaScript в браузере работает не ахти как быстро. А тут практически машинный байт-код, который выполняется в песочнице.

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

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

Сообщение Serg »

MX_Master писал(а):Видно, что именно на тяжёлых процессорных подсчётах WebAssembly намного быстрее.
Вобщем в очередной раз изобрели велосипед...
В давние времена, ещё до существования Java самым кросплатформенным языком был Tcl/Tk - работал на любых платформах, коих тогда было сильно больше трёх.
Так-же его можно было встроить в браузер (сейчас это называют плагинами) и исполнять Tcl скрипты в браузере.
Потом появилась группа людей, которые решили создать мощный, удобный и "единственный" кросплатформенный язык - и появила Java. Нет, про Tcl они конечно-же знали, просто его лицензия не позволяла продавать свои лицензии на его использование...
Кстати, по размеру Runtime комплекта Tcl/Tk и по использованию им памяти ему до сих пор нет равных среди других решений при одинаковом функционале.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

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

Сообщение MX_Master »

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

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

Сообщение Serg »

Это эволюция способов победы маркетологов над инженерами.
Java и iPhone - классические примеры тому. Например ещё в 1998 году у меня в кармане лежал "наладонник" со встроенным мобильником и лишь спустя почти 10 лет Джобс "изобрёл" iPhone...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

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