Да я ни разу не против совместной разработки.
Ровно напротив - хотелось бы найти единомышленника и разрабатывать командой….и немного стесняюсь...
Но Как я понял Те люди - которые "Отцы основатели" этой темы нацелены строго на две вещи:
- CNC на Линукс
- и на С++
Мне это к сожалению не подходит
.
А местные боюсь не пойдут на такую смену платформы.
У меня задумка такая:
Средненький ценовой диапазон.
Бороться с ценами на Матч-3 и на цены на его контроллеры мне не по силам. Даже и пытаться не буду.
И продавать не контроллеры и прочее железо – а ПО.
Я хочу попробовать написать CNC так - чтобы она работала не только под Win и Linux - Но и на планшетах - Андроид и iOS.
И планшеты - самое главное - и Андрюша - фаворит.
И Планшет по задумке должен висеть на какой-то присоске у станка - а все остальное в электро-ящике.
Чем и удобен планшет - не нужна клавиатура - тачскрин встроенный и дешевый, клава на экране - если нужна - для станка на мой взгляд самое-то - особенно если станок не за 10 лямов.
И именно планшет - основной козырь - иначе боюсь это ни кому не будет нужно и проект заглохнет как и другие проекты.
Далее:
Планшет подключен к контроллеру на Orange Pi или Raspberry Pi предыдущего поколения (из за цены на них) - но можно и на новых.
Почему Pi:
1. На Pi - с CNC передавать буфер уже рассчитанных в CNC перемещений - там крутится быстрый цикл написанный на С++ - который просто шлет по EtherCAT координаты и пр. данные для перемещений в серво-драйвер.
2. На Pi можно не ограничивать себя по оперативки - 4 гБт - минимум - за глаза!!
3. Ни каких сложных расчетов на Pi - максимум расчет аварийной остановки по заданным ускорениям и остановка по датчику по G31 - все остальное рассчитывать в CNC.
4. И т.к. основной расчет управления серво-двигателем берет на себя серво-драйвер по EtherCAT с "управлением по позиционированию" - я надеюсь что производительности Pi хватит за глаза.
И из за этого-же и код на Pi не должен быть сложным (ну про крайней мере я на это надеюсь)
По идее и дешевого контроллера на какой-нибудь STM32 хватило бы за глаза на это, но:
- Я нашел библиотеку EtherCAT только под Linux, и которая работает на нелюбимом почему-то здесь RTLinux.
- Я не уверен что справлюсь с написанием нативной прошивки. А вот пользовательская программа на Linux - это знакомо и понятно.
5. Сетевая карта на Pi может работать в режиме EtherCAT-мастер. Не требуется ни каких специфичных драйверов.
Вот если бы был нужен EtherCAT-slave – тогда да, нужна сетевая карта определенных чипах и спец. драйвер для нее (slave устройства должны 'на лету' подменять байтики в сетевом кадре - а это умеют не многие сетевые чипы)
А для Мастер устройств EtherCAT - сетевые карты Pi вполне подходят - уже проконтролировал этот вопрос у разработчиков библиотеки.
К Планшету или ПК Pi планирую подключать по USB через g_ether модуль - т.е. на Планшете или ПК будет эмулироваться сетевая карта - по идее везде должно работать - и на Андрюше и на ПК и на Linux ПК, и на iOS.
И заодно питание на планшет по этому-же кабелю USB - чтобы на станке не было кучи проводов к планшету.
Но и по Ethernet должно обязательно работать.
Не планирую пользователей ограничивать в выборе Pi, пусть какой хотят – такой и покупают – на этом точно не заработать.
Для облегчения настройки контроллера планирую что настройка будет проходить так:
1. Пользователь должен подключить Pi локальную сеть и прописать его IP в настройку на CNC.
2. CNC соединяется с ним по SSH протоколу (встрою его прямо в CNC - недостатка таких библиотек слава богу нет)
и устанавливает RTLinux и g_ether модуль на выбранный USB порт в Pi по SSH.
3. далее отключаем Pi от локалки (сетевой порт на Pi нужен строго для EtherCAT) и подключаем к CNC по USB – на ПК или планшете должен создастся виртуальный Ethernet интерфейс.
4. CNC подключается по SSH по этому сетевому интерфейсу и заливает и запускает программу-прошивку.
В теории для пользователя минимум телодвижений (многовато всё-таки конечно - но по другому не придумывается что-то ни как).
CNC программа:
Ни какого С++ при написании основного кода CNC
- Это просто нереально в таком большом проекте из за борьбы с утечками, параллельность и контроля всего и вся.
- И я четко понимаю что на С++ мне с этим не справится.
Писать CNC буду на C# - потому что:
Писать код на C# раз в 10/100 быстрее (во всяком случае для меня)
Лучшая на сегодняшний день штатная библиотека - причем на голову лучшая библиотека чем в других языках – и она штатная!
Быстродействие меньше чем на С++ на 20-30% - для меня эта разница не кажется устрашающей.
+ в C# .NET 8 наконец-то завезли АОТ - т.е. там компиляция сразу в машинный код (без работы интерпретатора в Run-time) - а это разница в быстродействии с С++ уже на уровне 15%-20%
+ в C# .NET 6-8 добавили мультипроцессорную работу с SIMD командами - всякие MMX, SSE, SSE2, SSE3, SSEE3, SSE4.1, SSE4.2, AVX и AVX2, Avx 512, NEON!!!(привет андрюша)
Работа с этими командами идет чуть медленнее - чем если было написано спецом для какого-то набора команд (например для SSE3) - но зато C# берет на себя всю разборку с этим зоопарком стандартов.
Так-же в C# может быть проблема со сборщиком мусора (Garbage-Сollector) при продолжительных расчетах, но борьба с этим уже отработана:
- буду его просто временно приостанавливать на время расчетов.
- + в последних версиях Net он стал в разы лучше и в разы дает меньше лагов.
- + в котроллере на PI будет буфер команд - который должен компенсировать возможные лаги даже при работе с планшета
Так что здесь надеюсь проблем не будет.
+ C# есть шикарная 2D библиотека по графическому интерфейсу (Avalonia) - работает на всех платформах без изменения кода вообще.
И работает очень шустро даже на средних по быстродействию планшетах.
И использует встроенные графические ускорители на всех платформах.
И я ее уже обкатал в своем другом проекте.
+ Так-же все это я затеял отчасти из за того что мне нужен TCP.
И не просто TCP - а TCP в реальном времени.
CNC панели с Real/Online TCP нереально дорогие.....А всего лишь нужно несколько раз повернуть координаты по нескольким осям и все...правда в онлайн при работе станка...но сука дорогие!!!!!!!!!!!!!!
Соответственно всякие матрицы вращения, преобразования координат и пр. - вот для них и использовать SIMD команды.
Интерфейс планирую сразу под Тач-скрин (а не под мышь) – т.е. аля всякие CNC панели - мышь по остаточному принципу.
На всякие картинки/иконки нужен художник – по всей видимости эти картинки/иконки придется заказывать на стороне у профессионала – чтобы все было в одном стиле и красиво.
Красиво - обязательно!
И пока только на фрезерный станок.
Потому что на токарных не работал и тонкостей и потребностей просто не знаю – наверняка там море тонкостей и отличий от фрезеров.
Линейки пока тоже не планирую поддерживать так как:
– вот их работу как раз придётся программировать в Pi – а пока мне хочется сделать код в Pi как можно более простым.
- Как замену линейкам – сделаю в CNC таблицу компенсаций погрешностей ШВП и налету вносить поправки в координаты – для старта – достаточно.
- Многие Серводрайверы EtherCAT сами могут работать напрямую с отдельно-стоящими от двигателя линейками - и сами по ним корректировать положение серво-двигателя - так зачем это вообще реализовать?
Обязательно добавлю возможность работы с радио-пультом WHB04B-04 - вот таким:
https://aliexpress.ru/item/100500530217 ... 732aTjGoBo
Там ничего сложного - USB-HID интерфейс примитивный.
Но дешево и безумно удобно.
У меня такой сейчас работает вот на такой панели:
https://www.chpu.net/chpu/cnc-11-titaniumr-mini-digital
Безумно удобно.
Надеюсь все задуманное получится.
Вон - китайцы же штампуют уже эти EtherCAT платы и панели массово.
Я чем хуже? Я тупее китайцев? Неужели у меня не получится? Я Тварь дрожащая – или право имею?
Наверняка я в чем-то по крупному заблуждаюсь – но ведь пока не влезешь со всем этим с головой – не поймешь как нужно было сразу делать правильно…
Первоначально планирую отработать все вот на таком железе (уже закупил) (для тестового стенда):
Orange Pi 5 Plus (именно такой - из за двух сетевых разъемов на борту – по началу они очень понадобятся для отладки):
https://aliexpress.ru/item/100500560376 ... 4233540959
Вот такой серводрайвер EtherCAT c двигателем:
https://aliexpress.ru/item/100500132496 ... 5697250323
+ У меня есть серводвигатель Delta c разбитой крышкой энкодера – но работает, на станок его конечно нельзя ставить, но я купил себе запасной драйвер Delta ASD-B3-0421-E – вот с ним на стенд пойдет:
https://aliexpress.ru/item/100500195275 ... 8208073181
Вот такая EtherCAT плата входов-выходов:
https://www.alibaba.com/product-detail/ ... 87078.html
Такая плата EtherCAT аналоговых входов-выходов:
https://www.alibaba.com/product-detail/ ... 94885.html
И вот такая EtherCAT плата на 6 осей. Тут я конечно лоханулся и прогнулся на уговоры продавца – когда сказал что беру контроллеры на тесты и разработку – он мне ее всучил за 2000р.
Я посмотрел от нее XML – хоть она и EtherCAT - там явно идет управление не по CiA-402 – а что-то другое – но что сделано – то сделано - хрен с этими 2000 р - может и с этим протоколом разберусь...:
https://www.alibaba.com/product-detail/ ... 60645.html
Как все более менее заработает – тренироваться уже буду на своем хоббийном станке станке – там 5 осей, все на EtherCAT на Delta ASD-B3-0421-E:
https://www.chipmaker.ru/uploads/post/m ... fbec8.jpeg
https://www.chipmaker.ru/uploads/post/m ... e3ed0.jpeg
(картинки с сайта конкурента покажет?)
Самое главное – разобраться в протоколах EtherCAT и CiA-402 (он же CANopen)
Я сам смогу уделять по пол-дня каждый рабочий день на проект (доход у меня с другого моего ПО - свой миллион руб/мес. я имею - мне хватает).
Делать его придется точно не меньше года.
И еще раз - я не против команды - но вот концепцию что CNC должна в первую очередь работать на планшете - не могу поменять - я с этой мыслью хожу два года - и уверен что если не будет работать на планшете - не взлетит.
Монетизировать по началу планировал попрошайничеством:
Поработала панель минут 30 - останавливается - выводит окошко "Подайте 1000 рубликов на 1 год на пропитание бывшему депутату Государственной Думы! "
Нежелающие нажимают на кнопку "я жлоб" и работают дальше без каких бы то ни было ограничений - но только следующие 30 минут - далее по кругу.
Надеюсь такое подойдет многим - и обеспеченным и безденежным хоббийшикам..
За Real/Online TCP уже брать денег поболее.. но тоже не особо много...
MX_Master писал(а): ↑
Про идею с EtherCAT в данное время могу сказать только одно, оно сейчас совсем не про Россию.
Отечественные компании, которые производят движки (и сейчас, и в будущем) не будут использовать эту западную технологию.
Не согласен - Вон китайцы - EtherCAT точно так-же не их – но они выкидывают в продажу дешевые контроллеры – пользуйся – не хочу.
Так как за использование EtherCAT никто денег не просит – ни за CNC ни за контроллеры.
Для получения доков и лицензии – нужно просто зарегиться на сайте
https://www.ethercat.org/default.htm - и все - производи!
Кстати почти все производители станков наши РУССКИЕ зарегистрированы там - и могут спокойно пользоваться EtherCAT .
Я все хотел свое ИП зарегить там
… но дотянул до спецоперации
MX_Master писал(а): ↑
Потому что.. а кому её на внутреннем рынке продавать? Российские производители чипов не будут это технологии у себя внедрять, ибо лицензию им никто не продаст.
Ага, был в прошлом году на выставке станков – на всех новых станках Российских – поголовно серво-драйверы китайцев или корейцев и 80% из них были именно по EtherCAT;
И как-то продавцов станков не волнует эта лицензия.
И реально - EtherCAT захватывает сектор управления серво-драйверами
И всё-таки - есть кто разбирается в CiA-402 (он же CANopen)?
Не в передаче байтиков - с этим все понятно более или мнение - а именно в логике безостановочного управления серво-драйвером?
Блин - как на этом форуме вставлять картинки? Я воде не дурак - но не могу найти как.
Пост без картинок - деньги на ветер!