выполнение g-кода шаговиками

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Alamy
Новичок
Сообщения: 3
Зарегистрирован: 29 июн 2013, 22:34
Репутация: 0
Контактная информация:

выполнение g-кода шаговиками

Сообщение Alamy »

Помогите разобраться! Хотелось бы услышать мнение, как нужно делать по-уму.
Допустим есть команда g01, осуществляющая переход из точки с координатами (x0, y0) в точку (x1, y1) (рассмотрим плоский случай). Для перемещения используются шаговые двигатели. Данный переход можно осуществить по-разному:
первый - дискретизовать отрезок с помощью алгоритма Брезенхэма например, задать какой-то тик по времени, и в каждый тик решать, делать шаг по каждой оси или нет. Т.е. отрезок под 45 градусов к осям, будут делаться шаги по обоим осям каждый тик... для примера из вики http://commons.wikimedia.org/wiki/File: ... uselang=ru шаги по оси X будут делаться каждый тик, по Y 3, 5, 8, 10...
второй - сделать переменным интервал между шагами. То есть вычислить проекции вектора (х1 - х0, у1 - у0). Далее выбрать бОльшую проекцию (пусть это будет проекция на ось Х). Время всего процесса - Т. Время шага по Х равно dt_x = Т*dx/(х1 - х0), где dx - перемещение, соотвествтвующее одному шагу по х, время шага по У dt_y = Т*dу/(у1 - у0). Далее следует просто сформировать два ШИМ-сигнала с соответствующей периодичностью dt_x и dt_y и подать их на драйвер.
Какие плюсы и минусы у этих способов? Существуют ли альтернативы?
Мне второй способ кажется как минимум менее трудозатратным в плане вычислений, однако, первый работает с гарантированной точностью.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: выполнение g-кода шаговиками

Сообщение aftaev »

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

Re: выполнение g-кода шаговиками

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

С шаговиками такой номер проходит только в теории.
На практике - их плавно разгонять и останавливать нужно.
Alamy
Новичок
Сообщения: 3
Зарегистрирован: 29 июн 2013, 22:34
Репутация: 0
Контактная информация:

Re: выполнение g-кода шаговиками

Сообщение Alamy »

aftaev писал(а):
Alamy писал(а):Мне второй способ кажется как минимум менее трудозатратным в плане вычислений, однако, первый работает с гарантированной точностью.
для чего это нужно? Программу пишешь или диплом?
Пока не пишу, а просто хочу понять...
Alamy
Новичок
Сообщения: 3
Зарегистрирован: 29 июн 2013, 22:34
Репутация: 0
Контактная информация:

Re: выполнение g-кода шаговиками

Сообщение Alamy »

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

Re: выполнение g-кода шаговиками

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

И еще - в реальности шаговиками управляют не по шагам, а дробят их на микрошаги.
Ошибка в +/- несколько микрошагов большой роли, обычно не играет. Так что любой алгоритм допустим.
Хотя, с точки зрения разработчика систем управления - это некорректный подход, т.к. покупателю может потребоваться точность позиционирования не хуже одного шага.

Большинство систем работает по алгоритму Брезенхэма (если я правильно понимаю), они выбрасывают ненужные импулсы и несущей частоты.

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

Re: выполнение g-кода шаговиками

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

С ускорениями поступают не так.
Разбивают весь путь на маленькие участи (равные по времени), для каждого рассчитывают требуемую скорость.
А потом уже шаги генерируют по любому алгоритму.
Ответить

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