Токарный + автооператор

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Токарный + автооператор

Сообщение Remal »

Hi all!
Имеется токарный станок с автооператором(а/о). Станок и а/о имеют свой сервопривода. Настроил Linuxcnc на 5 осей, это S X Z и V W. А/о имеет два захвата один из которых поворотный(кантование). Сейчас управление всем этим хозяйством реализовано, примитивно, по следующему примеру:

%основная программа
...
...
G1x10z5
O103 call (подпрограмма с движениями а/о)
...
G1v15w15f100 - перемещение
M101 -> (halcmd setp parport.0.pin-14-out True) - разжим захвата
G1v10w10f100 - перемещение
...
...
M30

Но такая схема не устраивает. Нужно что бы а/о мог управляться от своих подпрограмм, не зависимо от хода выполнения основной программы. Т.е когда выполняется точение детали а/о мог спокойно уехать в точку разгрузки, взять другую заготовку и уехать в точку ожидания. Экономия вспомогательного времени! :)
Вложения
Сам автооператор с захватами (2234 просмотра) <a class='original' href='./download/file.php?id=10608&mode=view' target=_blank>Загрузить оригинал (3.06 МБ)</a>
Сам автооператор с захватами
токарный модуль (2234 просмотра) <a class='original' href='./download/file.php?id=10609&mode=view' target=_blank>Загрузить оригинал (572.12 КБ)</a>
токарный модуль
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Токарный + автооператор

Сообщение aftaev »

Remal писал(а): Но такая схема не устраивает. Нужно что бы а/о мог управляться от своих подпрограмм, не зависимо от хода выполнения основной программы.
Скорее все придется ставить отдельно ЧПУ для а/о
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Токарный + автооператор

Сообщение nkp »

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

Re: Токарный + автооператор

Сообщение Nick »

Remal писал(а):M101 -> (halcmd setp parport.0.pin-14-out True) - разжим захвата
Вот это лучше сделать через
motion.digital-out-NN OUT BIT
These pins are controlled by the M62 through M65 words.
и M62-65: http://linuxcnc.org/docs/html/gcode/m-c ... ec:M62-M65

А вообще, насколько сложные программы у автооператора? Может через ClassicLadder им управлять? Или вообще просто отдельный скрипт на питоне написать?

ЗЫ а что за станок? Железо все родное, или это кастомная работа???
Аватара пользователя
aegis
Мастер
Сообщения: 3171
Зарегистрирован: 22 мар 2012, 06:59
Репутация: 1810
Настоящее имя: Михайло
Откуда: Україна, Конотоп=>Запоріжжя=>Харьків

Re: Токарный + автооператор

Сообщение aegis »

кажется мне, что когда все стоит на одной чпу, то перемещение по 5 осям прописывается в коде и выйдет что при одновременном перемещении автооператора и, скажем, точении фаски все режимы будут подстраиваться под самый длинный период, тоесть перемещение резца будет неправильно и следующий кадр не будет выполняться пока оператор не доедет до нужного места. я бы наверно сделал так: поставил 2 системы, система автооператора запускается от сигнала станка, выполняет свой код независимо, потом когда уже деталь выточена основная система дает новый сигнал о выполнении и считывает сигнал с а/о об готовности... может замудренно, но вариантов других нет. у нас на заводе есть двухсупортовые станки, там программа управления своя и определенная синхронизация суппортов всеравно есть, но она не такая жесткая как в вашей реализации на базе емс2
нікому нічого не нав'язую.
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

Nick писал(а): ЗЫ а что за станок? Железо все родное, или это кастомная работа???
Станок ТМ500Ф3, железки все родные, до модернизаций стояла чпу МАЯК-223М.
Nick писал(а): А вообще, насколько сложные программы у автооператора? Может через ClassicLadder им управлять? Или вообще просто отдельный скрипт на питоне написать?
Последовательность примерно такая:
Загрузка с накопителя в оба захвата -> установка первой заготовки(захват1) в патрон и поджим центром -> обработка первой стороны -> зажим заготовки(захват1) кантование -> зажим в патроне и обработка второй стороны -> готовую деталь берем захватом1 -> установка следующей заготовки из захвата2(не поворотный) -> а/о едет к накопителю и выгружает деталь из захвата1 а, захватом2 берет следующую заготовку -> а/о едет в точку ожидания конца программы -> захватом1 кантует заготовку -> обработка второй стороны -> зажим захватом1 -> установка заготовки из захвата2.......и так по кругу)

-установка еще одной системы для а/о тоже вариант, но это только если ничего не получиться(
Я побовал так:
на pid.v заводим два сигнала один c axis.7.motor-pos-cmd другой с mux.N через SUM.2, но после команды с mux.N вылетает по follow error. Надо каим то образом посылать команду через axis из hal)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Токарный + автооператор

Сообщение nkp »

aegis писал(а): все режимы будут подстраиваться под самый длинный период,
вот я и предлагал "распределять" движения а\о ,подстраивая их под движения основной уп
это все будет делать пп (что несравнимо дешевле чем вторая управляющая система)
примерно это должно выглядеть так:
допустим у нас есть некая программа обработки детали

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

g1 f100
x2 
z2
x3
z3
m2
и есть код для а\о конечно если прописать сразу в одном кадре

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

g1 f100
x2 v3 w3
z2
x3
z3
m2
то будем ждать завершения движения по v,w
а вот если постпроцессор "распишет" примерно так:

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

g1 f100
x2 v1 w1
z2 v2 w2
x3 v3 w3
z3
m2
то ждать а\о не надо
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

nkp писал(а):то ждать а\о не надо
Получается следующее:
-если в программе точения используются кадры с дугами, циклами, и тп то вставить в них перемещение vw не получиться
-скорость хода осей vw значительно выше подачи по xz. примерно в 10 раз
и это тоже вариант)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Токарный + автооператор

Сообщение nkp »

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

Re: Токарный + автооператор

Сообщение Nick »

Не, модифицировать Gкод - не вариант, точнее вариант, но плохой.

А процедура авто оператора всегда такая?
Лучше всего Classic Ladder или сторонний скрипт.

При этом Оси автооператора не надо заводить в самом LinuxCNC, просто загружаем их отдельными компонентами (pid, pwmgen или stepgen) и управляем отдельной программой через пины hal.

У тебя есть пример Gкода, на котором оно работает сейчас?
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

Nick писал(а):У тебя есть пример Gкода, на котором оно работает сейчас?
кода нет(
Nick писал(а):При этом Оси автооператора не надо заводить в самом LinuxCNC, просто загружаем их отдельными компонентами (pid, pwmgen или stepgen) и управляем отдельной программой через пины hal.
Тогда нужно каким то образом производить выход в ноль через hal?
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

Remal писал(а):Тогда нужно каким то образом производить выход в ноль через hal?
может так:
кнопка V0 -> на пид команда на перемещение в минус -> наезд на концевик -> реверс -> ищем индекс?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Токарный + автооператор

Сообщение nkp »

Nick писал(а):При этом Оси автооператора не надо заводить в самом LinuxCNC, просто загружаем их отдельными компонентами (pid, pwmgen или stepgen) и управляем отдельной программой через пины hal.
если я правильно понял - home в классическом виде нам и не понадобиться
то есть ноль а\о мы определяем ,но "для себя"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Токарный + автооператор

Сообщение Nick »

Remal писал(а):Тогда нужно каким то образом производить выход в ноль через hal?
И это можно.
Все правильно, сначала едем до концевика, потом выставляем пин index-enable на энкодере и при следующем индексе у нас будет точный 0.
Remal писал(а):кода нет(
А как он тогда работает? :)
Тот код который ты вверху написал - это просто из головы?
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

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

Re: Токарный + автооператор

Сообщение Nick »

Надо добавить какую-то управлялку.
Ты с ClassicLadder знаком?
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

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

Re: Токарный + автооператор

Сообщение Nick »

Все зависит от сложности алгоритма, необходимости реалтайма, и от того есть ли опыт программирования на других языках :).
Аватара пользователя
Remal
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2013, 22:14
Репутация: 0
Откуда: УР. Ижевск
Контактная информация:

Re: Токарный + автооператор

Сообщение Remal »

Столкнулся с проблемой:
-каким образом менять скорость подачи через pid.N? Есть такой пин, pid.N.command-deriv,я так понимаю это задание скорости перемещения, но какие значения я бы туда не заводил, он всегда отрабатывает с одной скоростью(
Nick писал(а):потом выставляем пин index-enable на энкодере
-пин, encoder.N.index-enable bit i/o , на него с начала нужно подать TRUE, а когда появиться index на энкодере, index-enable станет FALSE. Как правильно соединить in/out к encoder.N.index-enable? :problem:

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

net v-index   =>  encoder.0.index-enable  => classicladder.0.in-01
net v-index   <=  classicladder.0.out-00
не работает, ошибка(
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Токарный + автооператор

Сообщение Nick »

А как у тебя привод управляется? По +-10? Можешь просто пид настроить таким образом, чтобы он плавно разгонялся и останавливался...

Что-то не понимаю зачем тебе и in и out к index-enable подключать?
Ответить

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