а чего там поддерживать? на входе оптики TTL и на выходе..
LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
- antoxa-kylibin
 - Мастер
 - Сообщения: 786
 - Зарегистрирован: 22 июн 2017, 13:18
 - Репутация: 107
 - Настоящее имя: Антон
 - Откуда: г. Воронеж
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Инструкция это хорошо)
			
			
									
									
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
И снова про андроид в роли системы для ЧПУ.. был сейчас в отделении местного банка, который недавно появился на Казахстанском рынке. Ну так вот, на мониторе, который показывает позиции электронной очереди стоит самый бюджетный андроид ТВ Бокс - X96. На АЛИ цена таких - до 30$. Как грицца, а почему, собсна, и нет? 
Уже с десяток людей у меня спрашивали про готовую и недорогую систему ЧПУ безо всякой фигни. А мне до сих пор, было нечего ответить. LinuxCNC, к слову, не относится к лёгким для понимания системам. А советовать даже самый хороший контроллер без, собсна, простой и удобной системы ЧПУ, смысла нет.
Надо вплотную заняться этой связкой из ТВ бокса и Ethernet контроллера. Вайфай на таких боксах есть из коробки, Ethernet порт там всегда свободен.
			
			
									
									
						Уже с десяток людей у меня спрашивали про готовую и недорогую систему ЧПУ безо всякой фигни. А мне до сих пор, было нечего ответить. LinuxCNC, к слову, не относится к лёгким для понимания системам. А советовать даже самый хороший контроллер без, собсна, простой и удобной системы ЧПУ, смысла нет.
Надо вплотную заняться этой связкой из ТВ бокса и Ethernet контроллера. Вайфай на таких боксах есть из коробки, Ethernet порт там всегда свободен.
- 
				alex_sar
 - Мастер
 - Сообщения: 1863
 - Зарегистрирован: 28 авг 2018, 17:13
 - Репутация: 315
 - Настоящее имя: Алексей
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Идея отличная. Нужно иметь в виду что планировщик Андроид довольно таки жёстко обращается с приложениями. Поэтому сразу надо закладываться на кастомную прошивку (то есть придётся рутовать).
Если доступного рута нет, хорошего результата не выйдет.
			
			
									
									
						Если доступного рута нет, хорошего результата не выйдет.
- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Соль идеи не только в самом андроиде, а в свободе выбора железа и в мультиплатформе. Вариант с андройдом это не сама цель, это бонус для удешевления железа. Вся цепочка получается практически такая же как на настольных системах. На андройде мы точь также подымаем веб-, вебсокет- и прочие ЧПУ серверы, причём, без root'a (но с ним будет веселей). А итоговое приложение (без root прав) нам, просто, показывает веб страницы локального веб-сервера в качестве интерфейса управления. Даже если приложение закроется, работа серверов не остановится. Плюс, при таком варианте углубляться в Java кодинг приложений практически не нужно. Можно, канеш, своё приложение и не писать, открывать всё в приложении стандартного (или другого) браузера. Но вариант своего приложения с WebView смотрится чуть лучше.
- antoxa-kylibin
 - Мастер
 - Сообщения: 786
 - Зарегистрирован: 22 июн 2017, 13:18
 - Репутация: 107
 - Настоящее имя: Антон
 - Откуда: г. Воронеж
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Приладить nvem к linuxcnc это хорошая идея, а вот сделать из тв бокса как то не верится мне..... Не зря же они 30$ стоят.... Есть у меня Х96 коробочка, валяется в углу..... Че с ней делать хз, ибо она даже по инету нормально каналы показывать не может, какие то тормоза вечные.... Потому и валяется в углу.... Почему то яндекс станция по тому же Wi-Fi так не тормозит, видать железки то разные у эти двух коробочке.....
			
			
									
									
						- antoxa-kylibin
 - Мастер
 - Сообщения: 786
 - Зарегистрирован: 22 июн 2017, 13:18
 - Репутация: 107
 - Настоящее имя: Антон
 - Откуда: г. Воронеж
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Михаил, ну если вы конечно затеетесь с этой темой, у меня еси че есть такая коробочка. В качестве тестировщика могу помочь)))
			
			
									
									
						- 
				ebragim
 - Кандидат
 - Сообщения: 51
 - Зарегистрирован: 12 окт 2016, 22:24
 - Репутация: 4
 - Настоящее имя: Денис
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Проблема в том, что на ведроиде точно так же могут упасть и сервера, к которым ваше итоговое приложение или вебвью имеет доступ. И это бывает, я пробовал пару проектов 3дпечатных мозгов на андроиде, когда траектории генерирует в спокойном режиме недосервер, а в импульсы преобразует уже плата в принтере. Адекватной оказалась только пара клиппер+октопринт, но там сервер был в малинке на линуксе.
В принципе, если бы к вашему коду шёл нормальный конфигуратор как в голом линцнц, чтобы оператору не надо было бы писать хал и конфиги ручками, это было бы не хуже, в обёртке вебсервера...
			
			
									
									
						В принципе, если бы к вашему коду шёл нормальный конфигуратор как в голом линцнц, чтобы оператору не надо было бы писать хал и конфиги ручками, это было бы не хуже, в обёртке вебсервера...
- antoxa-kylibin
 - Мастер
 - Сообщения: 786
 - Зарегистрирован: 22 июн 2017, 13:18
 - Репутация: 107
 - Настоящее имя: Антон
 - Откуда: г. Воронеж
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Ну да, если бы в lcnc был бы законченный gui с встроенным конфигуратором, то и не нужно изобретать ничего.... А так, на каждый пук надо искать решение в виде дописывания чего то в hal, ini и т. д. Тот же qtdragon, уже нормальный gui в принципе, ещё бы конфигурирование станка как то внедрили бы в этот gui и было бы счастье..... Но те, кто разобрался с hal, ini и др. им уже проще руками доделать конфиг.... Эта проблема походу системная, кому это надо, те не алё в linuxcnc, а кто алё тем уже это не надо....
			
			
									
									
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
В тв боксе должен быть конфиг железа не ниже, чем у нормального смартфона. Проц 1.8ГГц, 4Гб ОЗУ, 64ГБ ПЗУ. Вот тогда со скоростью проблем практически не будет. А на приставках с медленным процем в 1,2 ГГц, 1Гб ОЗУ И 8Гб ПЗУ (сам пробовал) можно все нервы растерять, пока доберёшься до желаемого.
Недосервер должен быть настоящим сервером, который крутится под капотом андроида, т.е. в юзер зоне ядра Linux андроида, или в Linux эмуляторе, типа Termux. Ясен перец, что под чистым Linux на минипк серверы робят стабильнее, но скорость GUI в такой системе может взбесить юзера так, что он не захочет дальше с этим работать.
Конфигуратор для NVEM будет только при достаточном количестве пользователей. Пока их мало. Конфигуратор для моего контроллера будет обязательно. А новая система ЧПУ (так уж вышло, обсуждаем тут), работу которой я хочу протестировать под андроидом, будет иметь вместо конфигуратора страницу настроек в интерфейсе.
			
			
									
									
						Недосервер должен быть настоящим сервером, который крутится под капотом андроида, т.е. в юзер зоне ядра Linux андроида, или в Linux эмуляторе, типа Termux. Ясен перец, что под чистым Linux на минипк серверы робят стабильнее, но скорость GUI в такой системе может взбесить юзера так, что он не захочет дальше с этим работать.
Конфигуратор для NVEM будет только при достаточном количестве пользователей. Пока их мало. Конфигуратор для моего контроллера будет обязательно. А новая система ЧПУ (так уж вышло, обсуждаем тут), работу которой я хочу протестировать под андроидом, будет иметь вместо конфигуратора страницу настроек в интерфейсе.
- Prav
 - Мастер
 - Сообщения: 834
 - Зарегистрирован: 14 июл 2015, 05:10
 - Репутация: 138
 - Настоящее имя: Петр Раввинский
 - Откуда: Москва
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Так китайцы их миллионами на весь мир производят, вот и цена поэтому низкая.antoxa-kylibin писал(а): ↑ Не зря же они 30$ стоят....
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Я думаю, в составе общих слов можно добавить фразу о разнице в подходе езернет и лпт, мол де по лпт сигнал передается "как есть", а по езернет по протоколу, например, tcp (судя по картинке с роутером), каковой обеспечивает на уровне алгоритма, стандарта и пр. контроль целостности доставки пакетов, что имеет большое значение в смысле пропуска шагов.
Для меня прикладной вопрос - я размышляю над заменой имеющегося контроллера (6 моторов - это по мне). Но опять провода... Гипотеза - вместо обычного lan кабеля сомнительной гибкости использовать уже проложенные кабели (распаяв нужным образом). Сам контроллер разместить на портале станка и уже от него короткими проводами к исполнительным элементам.
НИчего магического в попарной закрутке, актуальной на момент изобретения в докопьютерной эпохе, с учетом особенностей протокола tcp, я не вижу - если ошибаюсь, пожалуйста поправьте.
- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Одна малюсенькая поправка - там нет TCP/UDP. Свой простой протокол на Ethernet уровне 2.
			
			
									
									
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
У меня есть вариант протокола, при котором каждый пакет проверяется даже на подлинность. Целостность - это на порядок легче. Но я эти проверки пока в сторону отложил. При прямом подключении к ПК ваще ничего не теряется и не бьётся. Но если кому-то будет нужно позарез, включим все проверки 
			
			
									
									
						Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Это, как правило, в теории. В моем гипотетическом случае кабель от компа к плате, которая на портале (будет) - это 7.5 метров. С вытекающими наводками и пр. Лучше предусмотреть "избыточность" при передаче сигналов.
- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Одна галочка в настройке проекта и целостность будет проверяться аппаратно. Я ж грю, всё в этом плане уже написано, придумано и сделано.
			
			
									
									
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Проект открытого софта для NVEM потихоньку продвигается, но есть свои трудности - https://forum.linuxcnc.org/18-computer/ ... 310#249560. Автору проекта я подсказал, куда двигаться, будем следить за развитием проекта.
			
			
									
									
						- MX_Master
 - Мастер
 - Сообщения: 7488
 - Зарегистрирован: 27 июн 2015, 19:45
 - Репутация: 3113
 - Настоящее имя: Михаил
 - Откуда: Алматы
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Автор открытого проекта немного притормозил эксперимент с высокоскоростным выводом шагов. Задача непростая, сам проходил. Пожелаем дальнейших успехов и терпения.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
 - Мастер
 - Сообщения: 1650
 - Зарегистрирован: 24 янв 2012, 16:04
 - Репутация: 510
 - Настоящее имя: Сергей Бочаров
 - Откуда: Новосибирск
 - Контактная информация:
 
Re: LinuxCNC + Ethernet контроллеры NVEM/EC300/EC500
Код: Выделить всё
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;