Что если G-коды зашить в контроллер?

Контроллеры, драйверы, датчики, управляющие устройства.
vastok
Новичок
Сообщения: 6
Зарегистрирован: 29 авг 2011, 19:57
Репутация: 0
Контактная информация:

Что если G-коды зашить в контроллер?

Сообщение vastok »

Собственно с этой темой я столкнулся недавно.
Умею программировать AVR. Хочу на основании AVR собрать свой станочек CNC. Хочу обсудить идею. Вопрос собственно в выбранном подходе.

Вся логика работы разбита на два уровня:

Первый уровень - контроллер получает G-команды (в виде текста с COM порта) расшифровывает и расшифрованные по шагам и добавляет в очередь на выполнение контроллерами двигателялей.

Второй уровень - контроллеры двигателей. Получает команды вида (шаг вправо/влево), выполняет его, и докладывает о готовности выполнить следующую команду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение Nick »

Идея хорошая, но не простая.
С интерпретацией Gкода есть много трудностей. Да, простой код интерпретировать можно, но и та не обойдется без большой кучи параметров (скорости по осям, ускорения, скругления углов, look ahead, и заметь я даже не говорю об отступах, системах координат и прочей экзотике).

ИМХО было бы гораздо эффективнее начать с простого контроллера, который мог бы искать нули осей, и выполнять "процессированный Gкод". Т.е. прогоняем Gкод через EMC2 и на выходе записываем состояние управляющих выходов. А лучше даже такой формат: (состояние выходов, время до следующего изменения). И потом просто повторяем все эти состояния на контроллере.

Насколько это реально?
И сколько будет занимать такая управляющая программа места на карте памяти?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение aftaev »

vastok писал(а):Умею программировать AVR. Хочу на основании AVR собрать свой станочек CNC. Хочу обсудить идею. Вопрос собственно в выбранном подходе.
Такое умеешь программировать STM32F103ZET6:
http://www.ebay.com/itm/STM32-STM32F103 ... 2c5ac79979
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение aftaev »

На ARM пытаются что то сорудить http://forums.reprap.org/read.php?12,23458,page=2
и чт т полчается http://forums.reprap.org/file.php?12,fi ... NC_LCD.jpg
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
vastok
Новичок
Сообщения: 6
Зарегистрирован: 29 авг 2011, 19:57
Репутация: 0
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение vastok »

Nick писал(а):Идея хорошая, но не простая.
С интерпретацией Gкода есть много трудностей. Да, простой код интерпретировать можно, но и та не обойдется без большой кучи параметров (скорости по осям, ускорения, скругления углов, look ahead, и заметь я даже не говорю об отступах, системах координат и прочей экзотике).

ИМХО было бы гораздо эффективнее начать с простого контроллера, который мог бы искать нули осей, и выполнять "процессированный Gкод". Т.е. прогоняем Gкод через EMC2 и на выходе записываем состояние управляющих выходов. А лучше даже такой формат: (состояние выходов, время до следующего изменения). И потом просто повторяем все эти состояния на контроллере.

Насколько это реально?
И сколько будет занимать такая управляющая программа места на карте памяти?
Не знаю что там на выходе от EMC2 получается (где бы это можно было бы прочесть?). Предполагаю, что управляющие сигналы. Соответственно, если управляющие сигнал байт (или два). Сколько их может придти в секунду? (где-то встречал цифру, но не факт, в 60к). Соответственно имеем ~3,6/7 мегабайта в минуту. Теоретически при скорости 60к. их можно читать с ком порта, забивать в очередь и выполнять.

Вопрос где взять описание "простого процессированного кода", которые EMC2 посылает на контроллер? А там можно было бы и посмотреть как его обработать.
vastok
Новичок
Сообщения: 6
Зарегистрирован: 29 авг 2011, 19:57
Репутация: 0
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение vastok »

aftaev писал(а):
vastok писал(а):Умею программировать AVR. Хочу на основании AVR собрать свой станочек CNC. Хочу обсудить идею. Вопрос собственно в выбранном подходе.
Такое умеешь программировать STM32F103ZET6:
http://www.ebay.com/itm/STM32-STM32F103 ... 2c5ac79979
Это отладочная плата. К тому же для АRM, а не AVR.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение Nick »

vastok писал(а):Вопрос где взять описание "простого процессированного кода", которые EMC2 посылает на контроллер? А там можно было бы и посмотреть как его обработать.
Его можно сделать любым. Самое просто решение - в EMC2 есть компонент sampler, он может записывать состояния выходов с заданной частотой. Потом прогоняем файл через простенький скрипт, который пакует его, удаляя лишние интервалы времени.
Да на выходе скорее всего будет что-то около байта. Да, частота может быть до 60К, но на средних компьютерах она не превышает 30К, плюс далеко не факт, что двигатели будут работать с такой частотой постоянно. Обычно есть рабочих ход, который медленнее холостого.
vastok писал(а):Теоретически при скорости 60к. их можно читать с ком порта, забивать в очередь и выполнять.
Тогда смысла нет делать отдельный контроллер, можно прямо на станок пихать :). Основная идея, иметь маленький контроллер, который сможет работать автономно от компьютера. Втыкаем в него флешку/карту памяти, нажимаем старт и поехали!


Как вариант, можно в контроллере реализовать функции stepgen, pwmgen, pid и encoder, как в hostmot2 на MESA (их можно взять прямо из ее прошивки). А программу записывать в виде управляющих сигналов на эти компоненты. При этом частота этих управляющих сигналов гораздо меньше, обычно 1кГц. В самом EMC2 все происходит точно также, компонент stepgen 1000 (servo period) раз в секунду получает команду на перемещение в заданное положение. И потом на основе заданных заранее параметров оси генерирует сигналы step/dir.

В простейшем случае будет нужен только stepgen.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение aftaev »

Nick меня тут недавно в типографию позвали станочек запустить. Стоит значит там китайский пульт в котором нстройки только степ на мм и ускорение. Станок может ездитьсразу только по ОДНОЙ оси. Втыкаешь флешку, выбираешь файлик и поехал он работать. Нетникаких скруглений,ШИМ ипрочих наворотов. Этого вполне хватает. Эт я все к тому что тебя на сложности тянет.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение Nick »

Одно дело для типографии, на плоттере резать, другое, узоры гравировать, третье железяку резать. А решение хочется универсальное. Один фиг, программу готовить специально придется - только G0 и G1, никакой лишней ерунды, и прочее. Так почему бы сразу не сделать все очень хорошо ;)? Я думаю, пропустить через EMC2 и дополнительный скриптик этот код можно будет одной кнопкой.
vastok
Новичок
Сообщения: 6
Зарегистрирован: 29 авг 2011, 19:57
Репутация: 0
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение vastok »

Nick писал(а): Его можно сделать любым. Самое просто решение - в EMC2 есть компонент sampler, он может записывать состояния выходов с заданной частотой.
Нужно не только записывать изменения выходов, но и знать как его интерпритировать. Допустим на выходе (LPT) появился сигнал 0b00011001. Что должен делать станок? Шагнуть вправо, влево, включить инструмент?
Nick писал(а): Да на выходе скорее всего будет что-то около байта.
Где прочесть как понимать эти байты? Нужен формат.
Nick писал(а): Да, частота может быть до 60К, но на средних компьютерах она не превышает 30К, плюс далеко не факт, что двигатели будут работать с такой частотой постоянно. Обычно есть рабочих ход, который медленнее холостого.
Тогда изменения на порте будут реже. Достаточно считать эти изменения и вставить между ними "пустые команды". Опять же вопрос тот же: какие это команды и как их интерпритировать?
Nick писал(а): Тогда смысла нет делать отдельный контроллер, можно прямо на станок пихать :). Основная идея, иметь маленький контроллер, который сможет работать автономно от компьютера. Втыкаем в него флешку/карту памяти, нажимаем старт и поехали!
Если получится принять команды с порта, то считать их с флешки эти же команды не намного сложнее. Нужно понять как должен реагировать контроллер на ту или иную команду.
Nick писал(а): Как вариант, можно в контроллере реализовать функции stepgen, pwmgen, pid и encoder, как в hostmot2 на MESA (их можно взять прямо из ее прошивки).
Не знаком с этой темой. Для меня это новые слова. Нужно читать, искать рыть.
Nick писал(а): В простейшем случае будет нужен только stepgen.
А что на выходе?

Наверно, мне придется сначала изучить тему EMC2, чтоб понять что эта программа дает на выходе и как ее использовать.
vastok
Новичок
Сообщения: 6
Зарегистрирован: 29 авг 2011, 19:57
Репутация: 0
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение vastok »

Nick писал(а):Одно дело для типографии, на плоттере резать, другое, узоры гравировать, третье железяку резать. А решение хочется универсальное. Один фиг, программу готовить специально придется - только G0 и G1, никакой лишней ерунды, и прочее. Так почему бы сразу не сделать все очень хорошо ;)? Я думаю, пропустить через EMC2 и дополнительный скриптик этот код можно будет одной кнопкой.
На G00, G01, G02, G03 в интернете есть алгоритмы. Их не сложно зашить в контроллер. Действительно пугает многообразие этих Gxx. Поэтому набор команд для станка получится урезанный. Кроме того G-команды придется где-то получать. Видимо это какой-то постпроцессор, который не знает, что на моем станке поддерживаются только эти команды.
vastok
Новичок
Сообщения: 6
Зарегистрирован: 29 авг 2011, 19:57
Репутация: 0
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение vastok »

Достаточно просто выдумать свой набор простых команд. Например:
0b00000001 - шаг вправо по оси Х.
0b00000010 - шаг влево по оси Х.
... и т.д.
Но ведь замучаешься программировать. Проще использовать уже готовый продукт, чтоб генерировать команды. Но для этого нужно знать набор этих команд. Чтоб научить свой контроллер этим командам. G-коды описаны, но их слишком много. К тому же они как бы на "высоком уровне" для контроллера. А другого описания команд я не встречал.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение Nick »

vastok писал(а):Да на выходе скорее всего будет что-то около байта.
Где прочесть как понимать эти байты? Нужен формат.
Из EMC2 голый формат будет "выход1 выход2 ... выходn", из нее простейшим скриптом делаем любой необходимый формат. Например в двоичке состояние выходов 010100101 + задержка в нс до следующего изменения. Контроллер должен просто выводить все построчно на свои выводы через определенные промежутки времени. тогда всю настройку станка нужно делать только внутри EMC2, а контроллер будет чем-то вроде транслятора/удлинителя (в пространстве и главное во времени :) ).
vastok писал(а):Не знаком с этой темой. Для меня это новые слова. Нужно читать, искать рыть.
Это простые схемы (программки) реализующие управление простыми устройствами.
stepgen - управляет шаговым двигателем. При инициализации задаются параметры оси (скорость, ускорение) и двигателя и контроллера. Получает на вход заданное положение. На выходе выдает сигналы step/dir.
pid - реализует PID регулятор, на вход получает требуемое положение и обратную связь от оси, на выходе команда скорости или усилия для драйвера.
encoder - обрабатывает сигналы квадратурного энкодера.
pwmgen - генерирует ШИМ. На входе float на выходном пине ШИМ.
vastok писал(а):А что на выходе?
Сигналы step/dir.
Достаточно просто выдумать свой набор простых команд. Например:
0b00000001 - шаг вправо по оси Х.
0b00000010 - шаг влево по оси Х.
Это не очень хорошо, т.к. не будет синхронизации по осям. Лучше одной командой описывать сразу все выходы.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Что если G-коды зашить в контроллер?

Сообщение aftaev »

Nick писал(а):Так почему бы сразу не сделать все очень хорошо ?
Почти на каждом форуме "делают" такие пультики и дальше разговоров не пошло. Если бы начил с прстого, уже сделали и поом доробатываи, а так аппетит возрасат и никто еще не сделал чтоб хоть одна ось ездила
vastok писал(а):Где прочесть как понимать эти байты? Нужен формат.
Нет никакого формата. vastok ты понимаешь как шаговики ездят?
Шаговики приимают 2 сигнала step (шаги -вращение) и Dir - направление.
В программе ЕМС или Мач конфигурирутся на каком выводе LPT будет step. а где Dir. Куды мне удобно туды и прикручу сигналы.

Вот пример:
LPT.JPG (4831 просмотр) <a class='original' href='./download/file.php?id=2042&sid=b36f5fe5208104d3cafec0fb8bc12b77&mode=view' target=_blank>Загрузить оригинал (53.44 КБ)</a>
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Гость

Re: Что если G-коды зашить в контроллер?

Сообщение Гость »

Вот тут посмотрите http://radiokot.ru/circuit/digital/automat/25/ + на их форуме активно обсуждается эта статья
Ответить

Вернуться в «Электроника»