Страница 5 из 7
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 12:32
Duhas
MX_Master писал(а): ↑03 авг 2022, 11:05
До каких высот и скоростей мы докатились
Осталось только, чтобы контроллеры всё это дело аппаратно поддерживали
ЗЫ указанные в заголовке не могут
а чего там поддерживать? на входе оптики TTL и на выходе..
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 12:51
antoxa-kylibin
Инструкция это хорошо)
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 14:20
MX_Master
И снова про андроид в роли системы для ЧПУ.. был сейчас в отделении местного банка, который недавно появился на Казахстанском рынке. Ну так вот, на мониторе, который показывает позиции электронной очереди стоит самый бюджетный андроид ТВ Бокс - X96. На АЛИ цена таких - до 30$. Как грицца, а почему, собсна, и нет?
Уже с десяток людей у меня спрашивали про готовую и недорогую систему ЧПУ безо всякой фигни. А мне до сих пор, было нечего ответить. LinuxCNC, к слову, не относится к лёгким для понимания системам. А советовать даже самый хороший контроллер без, собсна, простой и удобной системы ЧПУ, смысла нет.
Надо вплотную заняться этой связкой из ТВ бокса и Ethernet контроллера. Вайфай на таких боксах есть из коробки, Ethernet порт там всегда свободен.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 14:35
alex_sar
Идея отличная. Нужно иметь в виду что планировщик Андроид довольно таки жёстко обращается с приложениями. Поэтому сразу надо закладываться на кастомную прошивку (то есть придётся рутовать).
Если доступного рута нет, хорошего результата не выйдет.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 16:27
MX_Master
alex_sar писал(а): ↑03 авг 2022, 14:35
Идея отличная. Нужно иметь в виду что планировщик Андроид довольно таки жёстко обращается с приложениями. Поэтому сразу надо закладываться на кастомную прошивку (то есть придётся рутовать).
Если доступного рута нет, хорошего результата не выйдет.
Соль идеи не только в самом андроиде, а в свободе выбора железа и в мультиплатформе. Вариант с андройдом это не сама цель, это бонус для удешевления железа. Вся цепочка получается практически такая же как на настольных системах. На андройде мы точь также подымаем веб-, вебсокет- и прочие ЧПУ серверы, причём, без root'a (но с ним будет веселей). А итоговое приложение (без root прав) нам, просто, показывает веб страницы локального веб-сервера в качестве интерфейса управления. Даже если приложение закроется, работа серверов не остановится. Плюс, при таком варианте углубляться в Java кодинг приложений практически не нужно. Можно, канеш, своё приложение и не писать, открывать всё в приложении стандартного (или другого) браузера. Но вариант своего приложения с
WebView смотрится чуть лучше.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 21:40
antoxa-kylibin
Приладить nvem к linuxcnc это хорошая идея, а вот сделать из тв бокса как то не верится мне..... Не зря же они 30$ стоят.... Есть у меня Х96 коробочка, валяется в углу..... Че с ней делать хз, ибо она даже по инету нормально каналы показывать не может, какие то тормоза вечные.... Потому и валяется в углу.... Почему то яндекс станция по тому же Wi-Fi так не тормозит, видать железки то разные у эти двух коробочке.....
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 21:42
antoxa-kylibin
Михаил, ну если вы конечно затеетесь с этой темой, у меня еси че есть такая коробочка. В качестве тестировщика могу помочь)))
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 авг 2022, 21:58
ebragim
Проблема в том, что на ведроиде точно так же могут упасть и сервера, к которым ваше итоговое приложение или вебвью имеет доступ. И это бывает, я пробовал пару проектов 3дпечатных мозгов на андроиде, когда траектории генерирует в спокойном режиме недосервер, а в импульсы преобразует уже плата в принтере. Адекватной оказалась только пара клиппер+октопринт, но там сервер был в малинке на линуксе.
В принципе, если бы к вашему коду шёл нормальный конфигуратор как в голом линцнц, чтобы оператору не надо было бы писать хал и конфиги ручками, это было бы не хуже, в обёртке вебсервера...
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 04 авг 2022, 00:25
antoxa-kylibin
Ну да, если бы в lcnc был бы законченный gui с встроенным конфигуратором, то и не нужно изобретать ничего.... А так, на каждый пук надо искать решение в виде дописывания чего то в hal, ini и т. д. Тот же qtdragon, уже нормальный gui в принципе, ещё бы конфигурирование станка как то внедрили бы в этот gui и было бы счастье..... Но те, кто разобрался с hal, ini и др. им уже проще руками доделать конфиг.... Эта проблема походу системная, кому это надо, те не алё в linuxcnc, а кто алё тем уже это не надо....
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 04 авг 2022, 06:25
MX_Master
В тв боксе должен быть конфиг железа не ниже, чем у нормального смартфона. Проц 1.8ГГц, 4Гб ОЗУ, 64ГБ ПЗУ. Вот тогда со скоростью проблем практически не будет. А на приставках с медленным процем в 1,2 ГГц, 1Гб ОЗУ И 8Гб ПЗУ (сам пробовал) можно все нервы растерять, пока доберёшься до желаемого.
Недосервер должен быть настоящим сервером, который крутится под капотом андроида, т.е. в юзер зоне ядра Linux андроида, или в Linux эмуляторе, типа Termux. Ясен перец, что под чистым Linux на минипк серверы робят стабильнее, но скорость GUI в такой системе может взбесить юзера так, что он не захочет дальше с этим работать.
Конфигуратор для NVEM будет только при достаточном количестве пользователей. Пока их мало. Конфигуратор для моего контроллера будет обязательно. А новая система ЧПУ (так уж вышло, обсуждаем тут), работу которой я хочу протестировать под андроидом, будет иметь вместо конфигуратора страницу настроек в интерфейсе.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 04 авг 2022, 11:19
Prav
Так китайцы их миллионами на весь мир производят, вот и цена поэтому низкая.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 07 авг 2022, 15:51
a321
MX_Master писал(а): ↑
Добавил в первый пост инструкцию
Я думаю, в составе общих слов можно добавить фразу о разнице в подходе езернет и лпт, мол де по лпт сигнал передается "как есть", а по езернет по протоколу, например, tcp (судя по картинке с роутером), каковой обеспечивает на уровне алгоритма, стандарта и пр. контроль целостности доставки пакетов, что имеет большое значение в смысле пропуска шагов.
Для меня прикладной вопрос - я размышляю над заменой имеющегося контроллера (6 моторов - это по мне). Но опять провода... Гипотеза - вместо обычного lan кабеля сомнительной гибкости использовать уже проложенные кабели (распаяв нужным образом). Сам контроллер разместить на портале станка и уже от него короткими проводами к исполнительным элементам.
НИчего магического в попарной закрутке, актуальной на момент изобретения в докопьютерной эпохе, с учетом особенностей протокола tcp, я не вижу - если ошибаюсь, пожалуйста поправьте.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 07 авг 2022, 23:07
MX_Master
Одна малюсенькая поправка - там нет TCP/UDP. Свой простой протокол на Ethernet уровне 2.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 07 авг 2022, 23:15
a321
MX_Master писал(а): ↑07 авг 2022, 23:07
Одна малюсенькая поправка - там нет TCP/UDP. Свой простой протокол на Ethernet уровне 2.
т.е. контроля целостности нет. Но через роутер работает - судя по картинке.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 07 авг 2022, 23:27
MX_Master
У меня есть вариант протокола, при котором каждый пакет проверяется даже на подлинность. Целостность - это на порядок легче. Но я эти проверки пока в сторону отложил. При прямом подключении к ПК ваще ничего не теряется и не бьётся. Но если кому-то будет нужно позарез, включим все проверки
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 07 авг 2022, 23:33
a321
MX_Master писал(а): ↑
При прямом подключении к ПК ваще ничего не теряется и не бьётся.
Это, как правило, в теории. В моем гипотетическом случае кабель от компа к плате, которая на портале (будет) - это 7.5 метров. С вытекающими наводками и пр. Лучше предусмотреть "избыточность" при передаче сигналов.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 07 авг 2022, 23:42
MX_Master
Одна галочка в настройке проекта и целостность будет проверяться аппаратно. Я ж грю, всё в этом плане уже написано, придумано и сделано.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 14 авг 2022, 21:46
MX_Master
Проект открытого софта для NVEM потихоньку продвигается, но есть свои трудности -
https://forum.linuxcnc.org/18-computer/ ... 310#249560. Автору проекта я подсказал, куда двигаться, будем следить за развитием проекта.
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 сен 2022, 19:24
MX_Master
Автор открытого проекта немного притормозил эксперимент с высокоскоростным выводом шагов. Задача непростая, сам проходил. Пожелаем дальнейших успехов и терпения.
А я, тем временем, добавил в прошивку программные энкодерные счётчики. Пока что опрос ведётся на частоте
100КГц. Код счётчика довольно простой. Если кто-то желает подчерпнуть что-то для себя или улучшить мой вариант, милости просим
Код: Выделить всё
volatile uint32_t encoder_states[4] = {0b01, 0b11, 0b00, 0b10};
void encoder_main_loop() {
static uint32_t state, c;
for ( c = ENCODER_CH_CNT; c--; ) {
if ( !encoder[c].en ) continue;
if ( encoder[c].find_z ) {
if ( (encoder[c].Z_port->IDR & encoder[c].Z_pin_msk) ) {
encoder[c].find_z = 0;
encoder[c].pos = 0;
}
}
state = (encoder[c].A_port->IDR & encoder[c].A_pin_msk) ? 0b10 : 0x00;
state |= (encoder[c].B_port->IDR & encoder[c].B_pin_msk) ? 0b01 : 0x00;
if ( state == encoder[c].state ) continue;
encoder[c].pos += encoder_states[encoder[c].state] == state ? 1 : -1;
encoder[c].state = state;
}
}
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Добавлено: 03 сен 2022, 20:37
wldev
MX_Master писал(а): ↑
Код счётчика довольно простой. Если кто-то желает подчерпнуть что-то для себя или улучшить мой вариант, милости просим
Код: Выделить всё
void encoder_main_loop() {
static uint32_t stateA, stateB, c;
for ( c = ENCODER_CH_CNT; c--; ) {
stateA=encoder[c].A_port->IDR & encoder[c].A_pin_msk;
stateB=encoder[c].B_port->IDR & encoder[c].B_pin_msk;
if(stateA!=encoder[c].stateA
&&stateB!=encoder[c].stateB) //если оба канала изменились то значит не успели
{
//Error
}
if(encoder[c].stateA!=stateA){ //считаем фронт A
encoder[c].stateA=stateA;
if(satateA){
encoder[c].pos + = stateB ? -1:1;
}else{
encoder[c].pos + = stateB ? 1:-1;
}
}else if(encoder[c].stateB!=stateB){ //считаем фронт B
encoder[c].stateB=stateB;
if(satateB){
encoder[c].pos + = stateA ? 1:-1;
}else{
encoder[c].pos + = stateA ? -1:1;
}
}
}
}
Код: Выделить всё
if ( state == encoder[c].state ) continue; //дальше пройдём только если неравно
encoder[c].pos += encoder_states[encoder[c].state] == state ? 1 : -1; // и здесь всегда будет только -1?
encoder[c].state = state;