АВТОНОМНЫЙ КОНТРОЛЛЕР

Правила форума
Разрешается публиковать предложения по покупке/продаже как физическим лицам так и коммерческим организациям, при соблюдении следующих условий:
1. должны присутствовать характеристики товаров
2. должна присутствовать стоимость товара или услуги
3. должно присутствовать описание способов оплаты и доставки
4. один продавец - одна тема

Фотографии товаров приветствуются (фотографии должны быть вложениями к сообщениям).

Возможно размещение ссылки на свой сайт, с описанием товара, при обязательном соблюдении пунктов 1-3.

Администрация форума может удалить тему или сообщения из данного раздела, без объяснения причин!

Внимание, общий раздел закрыт для создания новых тем! Создавайте темы в профильных разделах (Куплю, Продам, Услуги)!
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

Сергей Саныч писал(а): не преобразуя их в вектора и не пользуясь "тяжелыми" операциями типа умножения и деления.
А Вы сами пробовали этот алгоритм? Или как всегда теория?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение Сергей Саныч »

grakun писал(а):А Вы сами пробовали этот алгоритм?
Да.
grakun писал(а):Или как всегда теория?
Это тот самый случай, про который сказано: "Нет ничего практичнее хорошей теории".
Чудес не бывает. Бывают фокусы.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение selenur »

grakun писал(а):
Сергей Саныч писал(а): не преобразуя их в вектора и не пользуясь "тяжелыми" операциями типа умножения и деления.
А Вы сами пробовали этот алгоритм? Или как всегда теория?
Вот кусок кода из моего ЧПУ контроллера:

Код: Выделить всё

void RunTaskPulse(int32_t countX,int32_t countY,int32_t countZ)
{
	//подготовим данные для сортировки
	tChanels chA = {countX, 0,0};        // 26 тактов
	tChanels chB = {countY, 2,0};        // 31 такт
	tChanels chC = {countZ, 4,0};        // 31 такт
	
	//теперь ABC сортировка
	tChanels chTemp = {0,0,0};          // 18 тактов
	
	//сортировка между AB
	if (chB.pulse > chA.pulse)          // 20 тактов
	{
		chTemp = chA;                   // 69
		chA = chB;                      // 69
		chB = chTemp;                	// 69
	}
	
	//сортировка между AC
	if (chC.pulse > chA.pulse)          // 22
	{
		chTemp = chA;                   // 69
		chA = chC;                      // 69
		chC = chTemp;	                // 69
	}
	
	//сортировка между BC
	if (chC.pulse > chB.pulse)          // 22
	{
		chTemp = chB;                   // 69
		chB = chC;                      // 69
		chC = chTemp;                   // 69
	}
	
	//вот теперь запускаем алгоритм Брезенхема
	int32_t errorAB = chA.pulse - chB.pulse; //вычисляем разницу между парой AB  32 импульса
	int32_t errorAC = chA.pulse - chC.pulse; //вычисляем разницу между парой AC  32 импульса	
	
	//получим текущие данные
	CNCdata = PINA; //7		
	
	//а теперь собственно сам цикл выполнения	
	for (int32_t i=0; i<chA.pulse; i++) //33-первая итерация,                               43 импульса последующие итерации
	{		
		const int32_t cErrorAB = errorAB * 2;  //так-же добавим переменные доп. ошибки         20 импульсов
		const int32_t cErrorAC = errorAC * 2;  //так-же добавим переменные доп. ошибки        20 импульсов

		//Первый канал выполняется всегда
		errorAB -= chB.pulse; //32
		errorAC -= chC.pulse; //32
		chA.pulseNow += 1;		//20
		CNCdata ^=   (1<<chA.numAxes);//16
		
		//второй канал выполнятся реже
		if (cErrorAB < chA.pulse) //22
		{
			errorAB += chA.pulse; //28
			chB.pulseNow +=1;	//20
			CNCdata ^=   (1<<chB.numAxes);//31			
		}
		
		//а этот ещё реже :-)
		if (cErrorAC < chA.pulse) //22
		{
			errorAC += chA.pulse; //28
			chC.pulseNow +=1;		//20
			CNCdata ^=   (1<<chC.numAxes);	//46		
		}		
		//выполним Шаг там где нужно
		PORTA = CNCdata;//7					
	}
}
В данном примере в функцию передается сколько импульсов нужно послать в каждую из 3-х осей.
Так-как в то время когда я писал код, я перелазил с ассемблера, там много комменрариев с вычислением количества тактов расходуемых на выполнение команды (лень удалять)

п.с. ещё забыл добавить описание типа данных

Код: Выделить всё

typedef struct  // tChanels - Структура описания количества импульсов, и номер канала оси где это выполнять, и сколько уже выполнено
{
	int32_t pulse;      //количество импульсов нужно выполнить             
	uint8_t numAxes;    // номер оси: 1 - ось X, 2 - ось Y, 3 - ось Z     И номер бита у "порта А" 
	int32_t pulseNow;   //количество импульсов уже выполнено               
}tChanels;
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):ещё забыл добавить описание типа данных
Спасибо за код, попробую разобраться.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение selenur »

grakun писал(а):
selenur писал(а):ещё забыл добавить описание типа данных
Спасибо за код, попробую разобраться.
Алгоритм простой:
1) По убыванию, сортируется количество импульсов для выполнения, например нужно сделать по оси X=150 импульсов, Y=70, Z =90 импульсов. Выполняется сортировка 150,90,70 (и запоминается порядок осей X,Z,Y)
2) Запускается цикл который повторятся 150 раз, и при каждой итерации цикла вычисляется "ошибка" благодаря которой выполнение 90 и 70 импульсов растягиваются равномерно относительно 150 импульсов :-)
3) и при каждой итерации цикла в порту А, инвертируется нужный бит, соответствующий нужной оси.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):1) По убыванию, сортируется количество импульсов для выполнения, например нужно сделать по оси X=150 импульсов, Y=70, Z =90 импульсов. Выполняется сортировка 150,90,70 (и запоминается порядок осей X,Z,Y)
Здесь понятно для x и y, выбирается максимальное значение, но причем здесь z ? Фрезу ломать? Или это для принтера. Ось z должна включаться при отсутствии импульсов x и y. Какой смысл такой сортировки?
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение selenur »

Вот первое нагугленное видео https://www.youtube.com/watch?v=pFsYVuvgFVk
Если делать рельефную обработку.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение selenur »

Так-же, бывают разные методики обработки, например врезка в материал, движение по спирали с углублением, там движение происходит сразу по 3-м осям.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):2) Запускается цикл который повторятся 150 раз, и при каждой итерации цикла вычисляется "ошибка" благодаря которой выполнение 90 и 70 импульсов растягиваются равномерно относительно 150 импульсов :-)
Зачем вычислять ошибку при каждой итерации, на это уходит драгоценное время. У меня просчитывается алгоритм цикла до его выполнения, после сортировки. Например для Вашего примера, 90 импульсов накладываются на 150. Это каждый второй и каждый десятый. Это вычисляется до цикла.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):3) и при каждой итерации цикла в порту А, инвертируется нужный бит, соответствующий нужной оси.
Ну это понятно, альтернативы нет.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):Так-же, бывают разные методики обработки, например врезка в материал, движение по спирали с углублением, там движение происходит сразу по 3-м осям.
Мне кажется программа подготовки кода Аркам это делает без интерполяции оси z, я делал алгоритм под нее. Там есть опция наклонное врезание. Прекрасно работает. Рельеф тоже прекрасно получается. Спираль не пробовал, попробую.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение selenur »

grakun писал(а):
selenur писал(а):2) Запускается цикл который повторятся 150 раз, и при каждой итерации цикла вычисляется "ошибка" благодаря которой выполнение 90 и 70 импульсов растягиваются равномерно относительно 150 импульсов :-)
Зачем вычислять ошибку при каждой итерации, на это уходит драгоценное время. У меня просчитывается алгоритм цикла до его выполнения, после сортировки. Например для Вашего примера, 90 импульсов накладываются на 150. Это каждый второй и каждый десятый. Это вычисляется до цикла.
Я в то время позарился одновременно делать управляющий софт для компьютера, с 3d визуализацией и прочими бантиками, и разрабатывать контроллер, а для хобби было не так много времени, поэтому использовал уже готовый алгоритм, как лучше и оптимальнее сделать на тот момент не задумывался... :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):Я в то время позарился одновременно делать управляющий софт для компьютера, с 3d визуализацией и прочими бантиками, и разрабатывать контроллер, а для хобби было не так много времени, поэтому использовал уже готовый алгоритм, как лучше и оптимальнее сделать на тот момент не задумывался.
Понятно, я в был в такой же ситуации. Нужно сделать, а времени нет. Компьютер, миниатюрный чпу и контроллер, все на столе. Программируешь и сразу смотришь результат, потом думаешь что получилось.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

selenur писал(а):Так-же, бывают разные методики обработки, например врезка в материал, движение по спирали с углублением, там движение происходит сразу по 3-м осям.
Попробовал движение по спирали, работает только режиме черновой обработки. Вообще в черновом режиме получаются все рельефы. В режиме чистовой обработки Арткам выдает уже совершенно другой код. Там нужна интерполяция z. Вы совершенно правы. Для 100 процентной функциональности буду добавлять интерполяцию оси z.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение michael-yurov »

grakun писал(а):Для 100 процентной функциональности буду добавлять интерполяцию оси z.
Я бы сказал для 1%.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

michael-yurov писал(а):Я бы сказал для 1%.
Сказать можно все, нужны аргументы. Под 100 процентами я понимаю возможность, с помощью контроллера, изготовить любую модель для трехосного станка.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение michael-yurov »

Это называется «работоспособность».
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

michael-yurov писал(а):Это называется «работоспособность».
Вообще под работоспособностью понимают работоспособность. (Материал из Википедии )Работоспособность-свойство элемента или системы непрерывно выполнять свои задачи при определённых условиях эксплуатации......
Так вот, работоспособность это возможность что то выполнять. С ограничениями или без них это зависит от набора функций. Если есть хотя бы один, но полный набор функции для работы почему это 1 процент? Что Вы имеете ввиду под 100 процентами? Все что уже придумано? А кто нибудь это знает?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение michael-yurov »

grakun писал(а):Так вот, работоспособность это возможность что то выполнять.
Не "что-то", а "выполнять свои задачи". Т.е. выполнять те функции, для которых предназначено данное устройство.
grakun писал(а):Если есть хотя бы один, но полный набор функции для работы
Что значит «полный набор функций»?
grakun писал(а):почему это 1 процент?
Я не хотел спорить и доказывать. Я лишь отметил, как я сам бы выразился в данной ситуации.
grakun писал(а):Что Вы имеете ввиду под 100 процентами? Все что уже придумано? А кто нибудь это знает?
То, что в принципе можно требовать / хотеть / ожидать от пульта ЧПУ.
Скажем, проигрывать mp3 файлы вовсе не обязательно, т.к. в этом нет никакой необходимости, а, например, учитывать компенсацию на износ фрезы вполне можно было бы.
(речь не про данный пульт)

Я прошу прощения, не хотел вступать в спор.
Но функциональность на самом деле более чем скромная, и заявлять о 100% функциональности довольно странно.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: АВТОНОМНЫЙ КОНТРОЛЛЕР

Сообщение grakun »

michael-yurov писал(а):Я прошу прощения, не хотел вступать в спор.
Но функциональность на самом деле более чем скромная, и заявлять о 100% функциональности довольно странно.
В принципе то спора и нет. Я во многом согласен. Под полным набором я имею ввиду лишь необходимые вещи.
1.Возможность настройки в меню на любой трехосный станок.(кроме экзотики)
2.Возможность настройки в меню ускорения, торможения начальной скорости.
3.Возможность настройки в меню люфта по осям.
4. Возможность настройки в меню плоскости безопасности, возврат в ноль с любой точки, энергонезависимая память положения осей.
5. Коррекция положения и скорости во время паузы.
6. Работа со стандартным постпроцесором, без ограничений кода.
7.Аварийный стоп.
Этого хватит большинству самодельных и простеньких станков. Можно конечно добавить очень многое. Например несколько систем координат, клонирование, учет времени, несколько постпроцесоров, и далее... но это уже другая тема и другие затраты.
Ответить

Вернуться в «Предложения покупки/продажи/услуг»