LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Duhas
Мастер
Сообщения: 1949
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 284
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение Duhas »

MX_Master писал(а): 03 авг 2022, 11:05 До каких высот и скоростей мы докатились :hehehe: Осталось только, чтобы контроллеры всё это дело аппаратно поддерживали

ЗЫ указанные в заголовке не могут
а чего там поддерживать? на входе оптики TTL и на выходе..
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение antoxa-kylibin »

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

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

И снова про андроид в роли системы для ЧПУ.. был сейчас в отделении местного банка, который недавно появился на Казахстанском рынке. Ну так вот, на мониторе, который показывает позиции электронной очереди стоит самый бюджетный андроид ТВ Бокс - X96. На АЛИ цена таких - до 30$. Как грицца, а почему, собсна, и нет?

Уже с десяток людей у меня спрашивали про готовую и недорогую систему ЧПУ безо всякой фигни. А мне до сих пор, было нечего ответить. LinuxCNC, к слову, не относится к лёгким для понимания системам. А советовать даже самый хороший контроллер без, собсна, простой и удобной системы ЧПУ, смысла нет.

Надо вплотную заняться этой связкой из ТВ бокса и Ethernet контроллера. Вайфай на таких боксах есть из коробки, Ethernet порт там всегда свободен.
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение alex_sar »

Идея отличная. Нужно иметь в виду что планировщик Андроид довольно таки жёстко обращается с приложениями. Поэтому сразу надо закладываться на кастомную прошивку (то есть придётся рутовать).

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

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

alex_sar писал(а): 03 авг 2022, 14:35 Идея отличная. Нужно иметь в виду что планировщик Андроид довольно таки жёстко обращается с приложениями. Поэтому сразу надо закладываться на кастомную прошивку (то есть придётся рутовать).

Если доступного рута нет, хорошего результата не выйдет.
Соль идеи не только в самом андроиде, а в свободе выбора железа и в мультиплатформе. Вариант с андройдом это не сама цель, это бонус для удешевления железа. Вся цепочка получается практически такая же как на настольных системах. На андройде мы точь также подымаем веб-, вебсокет- и прочие ЧПУ серверы, причём, без root'a (но с ним будет веселей). А итоговое приложение (без root прав) нам, просто, показывает веб страницы локального веб-сервера в качестве интерфейса управления. Даже если приложение закроется, работа серверов не остановится. Плюс, при таком варианте углубляться в Java кодинг приложений практически не нужно. Можно, канеш, своё приложение и не писать, открывать всё в приложении стандартного (или другого) браузера. Но вариант своего приложения с WebView смотрится чуть лучше.
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение antoxa-kylibin »

Приладить nvem к linuxcnc это хорошая идея, а вот сделать из тв бокса как то не верится мне..... Не зря же они 30$ стоят.... Есть у меня Х96 коробочка, валяется в углу..... Че с ней делать хз, ибо она даже по инету нормально каналы показывать не может, какие то тормоза вечные.... Потому и валяется в углу.... Почему то яндекс станция по тому же Wi-Fi так не тормозит, видать железки то разные у эти двух коробочке.....
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение antoxa-kylibin »

Михаил, ну если вы конечно затеетесь с этой темой, у меня еси че есть такая коробочка. В качестве тестировщика могу помочь)))
ebragim
Кандидат
Сообщения: 51
Зарегистрирован: 12 окт 2016, 22:24
Репутация: 4
Настоящее имя: Денис
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение ebragim »

Проблема в том, что на ведроиде точно так же могут упасть и сервера, к которым ваше итоговое приложение или вебвью имеет доступ. И это бывает, я пробовал пару проектов 3дпечатных мозгов на андроиде, когда траектории генерирует в спокойном режиме недосервер, а в импульсы преобразует уже плата в принтере. Адекватной оказалась только пара клиппер+октопринт, но там сервер был в малинке на линуксе.
В принципе, если бы к вашему коду шёл нормальный конфигуратор как в голом линцнц, чтобы оператору не надо было бы писать хал и конфиги ручками, это было бы не хуже, в обёртке вебсервера...
Аватара пользователя
antoxa-kylibin
Мастер
Сообщения: 786
Зарегистрирован: 22 июн 2017, 13:18
Репутация: 107
Настоящее имя: Антон
Откуда: г. Воронеж
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение antoxa-kylibin »

Ну да, если бы в lcnc был бы законченный gui с встроенным конфигуратором, то и не нужно изобретать ничего.... А так, на каждый пук надо искать решение в виде дописывания чего то в hal, ini и т. д. Тот же qtdragon, уже нормальный gui в принципе, ещё бы конфигурирование станка как то внедрили бы в этот gui и было бы счастье..... Но те, кто разобрался с hal, ini и др. им уже проще руками доделать конфиг.... Эта проблема походу системная, кому это надо, те не алё в linuxcnc, а кто алё тем уже это не надо....
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

В тв боксе должен быть конфиг железа не ниже, чем у нормального смартфона. Проц 1.8ГГц, 4Гб ОЗУ, 64ГБ ПЗУ. Вот тогда со скоростью проблем практически не будет. А на приставках с медленным процем в 1,2 ГГц, 1Гб ОЗУ И 8Гб ПЗУ (сам пробовал) можно все нервы растерять, пока доберёшься до желаемого.

Недосервер должен быть настоящим сервером, который крутится под капотом андроида, т.е. в юзер зоне ядра Linux андроида, или в Linux эмуляторе, типа Termux. Ясен перец, что под чистым Linux на минипк серверы робят стабильнее, но скорость GUI в такой системе может взбесить юзера так, что он не захочет дальше с этим работать.

Конфигуратор для NVEM будет только при достаточном количестве пользователей. Пока их мало. Конфигуратор для моего контроллера будет обязательно. А новая система ЧПУ (так уж вышло, обсуждаем тут), работу которой я хочу протестировать под андроидом, будет иметь вместо конфигуратора страницу настроек в интерфейсе.
Аватара пользователя
Prav
Мастер
Сообщения: 827
Зарегистрирован: 14 июл 2015, 05:10
Репутация: 138
Настоящее имя: Петр Раввинский
Откуда: Москва
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение Prav »

antoxa-kylibin писал(а): Не зря же они 30$ стоят....
Так китайцы их миллионами на весь мир производят, вот и цена поэтому низкая.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение a321 »

MX_Master писал(а): Добавил в первый пост инструкцию
Я думаю, в составе общих слов можно добавить фразу о разнице в подходе езернет и лпт, мол де по лпт сигнал передается "как есть", а по езернет по протоколу, например, tcp (судя по картинке с роутером), каковой обеспечивает на уровне алгоритма, стандарта и пр. контроль целостности доставки пакетов, что имеет большое значение в смысле пропуска шагов.
Для меня прикладной вопрос - я размышляю над заменой имеющегося контроллера (6 моторов - это по мне). Но опять провода... Гипотеза - вместо обычного lan кабеля сомнительной гибкости использовать уже проложенные кабели (распаяв нужным образом). Сам контроллер разместить на портале станка и уже от него короткими проводами к исполнительным элементам.
НИчего магического в попарной закрутке, актуальной на момент изобретения в докопьютерной эпохе, с учетом особенностей протокола tcp, я не вижу - если ошибаюсь, пожалуйста поправьте.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

Одна малюсенькая поправка - там нет TCP/UDP. Свой простой протокол на Ethernet уровне 2.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение a321 »

MX_Master писал(а): 07 авг 2022, 23:07 Одна малюсенькая поправка - там нет TCP/UDP. Свой простой протокол на Ethernet уровне 2.
т.е. контроля целостности нет. Но через роутер работает - судя по картинке.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

У меня есть вариант протокола, при котором каждый пакет проверяется даже на подлинность. Целостность - это на порядок легче. Но я эти проверки пока в сторону отложил. При прямом подключении к ПК ваще ничего не теряется и не бьётся. Но если кому-то будет нужно позарез, включим все проверки ;)
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение a321 »

MX_Master писал(а): При прямом подключении к ПК ваще ничего не теряется и не бьётся.
Это, как правило, в теории. В моем гипотетическом случае кабель от компа к плате, которая на портале (будет) - это 7.5 метров. С вытекающими наводками и пр. Лучше предусмотреть "избыточность" при передаче сигналов.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

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

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

Проект открытого софта для NVEM потихоньку продвигается, но есть свои трудности - https://forum.linuxcnc.org/18-computer/ ... 310#249560. Автору проекта я подсказал, куда двигаться, будем следить за развитием проекта.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение MX_Master »

MX_Master писал(а): 14 авг 2022, 21:46 Проект открытого софта для NVEM потихоньку продвигается, но есть свои трудности - https://forum.linuxcnc.org/18-computer/ ... 310#249560. Автору проекта я подсказал, куда двигаться, будем следить за развитием проекта.
Автор открытого проекта немного притормозил эксперимент с высокоскоростным выводом шагов. Задача непростая, сам проходил. Пожелаем дальнейших успехов и терпения.

А я, тем временем, добавил в прошивку программные энкодерные счётчики. Пока что опрос ведётся на частоте 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;
  }
}
Последний раз редактировалось MX_Master 04 сен 2022, 17:14, всего редактировалось 1 раз.
Аватара пользователя
wldev
Мастер
Сообщения: 1639
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500

Сообщение 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;
    
    
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Ответить

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