А Вы сами пробовали этот алгоритм? Или как всегда теория?Сергей Саныч писал(а): не преобразуя их в вектора и не пользуясь "тяжелыми" операциями типа умножения и деления.
АВТОНОМНЫЙ КОНТРОЛЛЕР
Правила форума
Разрешается публиковать предложения по покупке/продаже как физическим лицам так и коммерческим организациям, при соблюдении следующих условий:
1. должны присутствовать характеристики товаров
2. должна присутствовать стоимость товара или услуги
3. должно присутствовать описание способов оплаты и доставки
4. один продавец - одна тема
Фотографии товаров приветствуются (фотографии должны быть вложениями к сообщениям).
Возможно размещение ссылки на свой сайт, с описанием товара, при обязательном соблюдении пунктов 1-3.
Администрация форума может удалить тему или сообщения из данного раздела, без объяснения причин!
Внимание, общий раздел закрыт для создания новых тем! Создавайте темы в профильных разделах (Куплю, Продам, Услуги)!
Разрешается публиковать предложения по покупке/продаже как физическим лицам так и коммерческим организациям, при соблюдении следующих условий:
1. должны присутствовать характеристики товаров
2. должна присутствовать стоимость товара или услуги
3. должно присутствовать описание способов оплаты и доставки
4. один продавец - одна тема
Фотографии товаров приветствуются (фотографии должны быть вложениями к сообщениям).
Возможно размещение ссылки на свой сайт, с описанием товара, при обязательном соблюдении пунктов 1-3.
Администрация форума может удалить тему или сообщения из данного раздела, без объяснения причин!
Внимание, общий раздел закрыт для создания новых тем! Создавайте темы в профильных разделах (Куплю, Продам, Услуги)!
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Да.grakun писал(а):А Вы сами пробовали этот алгоритм?
Это тот самый случай, про который сказано: "Нет ничего практичнее хорошей теории".grakun писал(а):Или как всегда теория?
Чудес не бывает. Бывают фокусы.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Вот кусок кода из моего ЧПУ контроллера: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
}
}
Так-как в то время когда я писал код, я перелазил с ассемблера, там много комменрариев с вычислением количества тактов расходуемых на выполнение команды (лень удалять)
п.с. ещё забыл добавить описание типа данных
Код: Выделить всё
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/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Спасибо за код, попробую разобраться.selenur писал(а):ещё забыл добавить описание типа данных
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Алгоритм простой: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/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Здесь понятно для x и y, выбирается максимальное значение, но причем здесь z ? Фрезу ломать? Или это для принтера. Ось z должна включаться при отсутствии импульсов x и y. Какой смысл такой сортировки?selenur писал(а):1) По убыванию, сортируется количество импульсов для выполнения, например нужно сделать по оси X=150 импульсов, Y=70, Z =90 импульсов. Выполняется сортировка 150,90,70 (и запоминается порядок осей X,Z,Y)
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Вот первое нагугленное видео https://www.youtube.com/watch?v=pFsYVuvgFVk
Если делать рельефную обработку.
Если делать рельефную обработку.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Так-же, бывают разные методики обработки, например врезка в материал, движение по спирали с углублением, там движение происходит сразу по 3-м осям.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Зачем вычислять ошибку при каждой итерации, на это уходит драгоценное время. У меня просчитывается алгоритм цикла до его выполнения, после сортировки. Например для Вашего примера, 90 импульсов накладываются на 150. Это каждый второй и каждый десятый. Это вычисляется до цикла.selenur писал(а):2) Запускается цикл который повторятся 150 раз, и при каждой итерации цикла вычисляется "ошибка" благодаря которой выполнение 90 и 70 импульсов растягиваются равномерно относительно 150 импульсов
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Ну это понятно, альтернативы нет.selenur писал(а):3) и при каждой итерации цикла в порту А, инвертируется нужный бит, соответствующий нужной оси.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Мне кажется программа подготовки кода Аркам это делает без интерполяции оси z, я делал алгоритм под нее. Там есть опция наклонное врезание. Прекрасно работает. Рельеф тоже прекрасно получается. Спираль не пробовал, попробую.selenur писал(а):Так-же, бывают разные методики обработки, например врезка в материал, движение по спирали с углублением, там движение происходит сразу по 3-м осям.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Я в то время позарился одновременно делать управляющий софт для компьютера, с 3d визуализацией и прочими бантиками, и разрабатывать контроллер, а для хобби было не так много времени, поэтому использовал уже готовый алгоритм, как лучше и оптимальнее сделать на тот момент не задумывался...grakun писал(а):Зачем вычислять ошибку при каждой итерации, на это уходит драгоценное время. У меня просчитывается алгоритм цикла до его выполнения, после сортировки. Например для Вашего примера, 90 импульсов накладываются на 150. Это каждый второй и каждый десятый. Это вычисляется до цикла.selenur писал(а):2) Запускается цикл который повторятся 150 раз, и при каждой итерации цикла вычисляется "ошибка" благодаря которой выполнение 90 и 70 импульсов растягиваются равномерно относительно 150 импульсов
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Понятно, я в был в такой же ситуации. Нужно сделать, а времени нет. Компьютер, миниатюрный чпу и контроллер, все на столе. Программируешь и сразу смотришь результат, потом думаешь что получилось.selenur писал(а):Я в то время позарился одновременно делать управляющий софт для компьютера, с 3d визуализацией и прочими бантиками, и разрабатывать контроллер, а для хобби было не так много времени, поэтому использовал уже готовый алгоритм, как лучше и оптимальнее сделать на тот момент не задумывался.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Попробовал движение по спирали, работает только режиме черновой обработки. Вообще в черновом режиме получаются все рельефы. В режиме чистовой обработки Арткам выдает уже совершенно другой код. Там нужна интерполяция z. Вы совершенно правы. Для 100 процентной функциональности буду добавлять интерполяцию оси z.selenur писал(а):Так-же, бывают разные методики обработки, например врезка в материал, движение по спирали с углублением, там движение происходит сразу по 3-м осям.
- michael-yurov
- Почётный участник
- Сообщения: 11631
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4642
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Я бы сказал для 1%.grakun писал(а):Для 100 процентной функциональности буду добавлять интерполяцию оси z.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Сказать можно все, нужны аргументы. Под 100 процентами я понимаю возможность, с помощью контроллера, изготовить любую модель для трехосного станка.michael-yurov писал(а):Я бы сказал для 1%.
- michael-yurov
- Почётный участник
- Сообщения: 11631
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4642
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Вообще под работоспособностью понимают работоспособность. (Материал из Википедии )Работоспособность-свойство элемента или системы непрерывно выполнять свои задачи при определённых условиях эксплуатации......michael-yurov писал(а):Это называется «работоспособность».
Так вот, работоспособность это возможность что то выполнять. С ограничениями или без них это зависит от набора функций. Если есть хотя бы один, но полный набор функции для работы почему это 1 процент? Что Вы имеете ввиду под 100 процентами? Все что уже придумано? А кто нибудь это знает?
- michael-yurov
- Почётный участник
- Сообщения: 11631
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4642
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
Не "что-то", а "выполнять свои задачи". Т.е. выполнять те функции, для которых предназначено данное устройство.grakun писал(а):Так вот, работоспособность это возможность что то выполнять.
Что значит «полный набор функций»?grakun писал(а):Если есть хотя бы один, но полный набор функции для работы
Я не хотел спорить и доказывать. Я лишь отметил, как я сам бы выразился в данной ситуации.grakun писал(а):почему это 1 процент?
То, что в принципе можно требовать / хотеть / ожидать от пульта ЧПУ.grakun писал(а):Что Вы имеете ввиду под 100 процентами? Все что уже придумано? А кто нибудь это знает?
Скажем, проигрывать mp3 файлы вовсе не обязательно, т.к. в этом нет никакой необходимости, а, например, учитывать компенсацию на износ фрезы вполне можно было бы.
(речь не про данный пульт)
Я прошу прощения, не хотел вступать в спор.
Но функциональность на самом деле более чем скромная, и заявлять о 100% функциональности довольно странно.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: АВТОНОМНЫЙ КОНТРОЛЛЕР
В принципе то спора и нет. Я во многом согласен. Под полным набором я имею ввиду лишь необходимые вещи.michael-yurov писал(а):Я прошу прощения, не хотел вступать в спор.
Но функциональность на самом деле более чем скромная, и заявлять о 100% функциональности довольно странно.
1.Возможность настройки в меню на любой трехосный станок.(кроме экзотики)
2.Возможность настройки в меню ускорения, торможения начальной скорости.
3.Возможность настройки в меню люфта по осям.
4. Возможность настройки в меню плоскости безопасности, возврат в ноль с любой точки, энергонезависимая память положения осей.
5. Коррекция положения и скорости во время паузы.
6. Работа со стандартным постпроцесором, без ограничений кода.
7.Аварийный стоп.
Этого хватит большинству самодельных и простеньких станков. Можно конечно добавить очень многое. Например несколько систем координат, клонирование, учет времени, несколько постпроцесоров, и далее... но это уже другая тема и другие затраты.