Подключение револьверки - как реализовать?

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
maxim
Кандидат
Сообщения: 53
Зарегистрирован: 29 мар 2012, 09:12
Репутация: 1
Откуда: Гатчина, Ленинградская обл.
Контактная информация:

Подключение револьверки - как реализовать?

Сообщение maxim »

Всем доброго дня.

Имеется револьверка от ТПК-125, на стенде уже все вертится (приблизительно), имею огромное желание ее подключить к EMC2.
Подключать хочу тремя проводами к LPT( out), тремя проводами к COM (in).
Внутри револьверки стоит атмега, она и рулит ей.
Управлятся будет так: по тем трем проводам что out бинарным кодом я передаю атмеге какой нужно установить инструмент, по тем трем проводам что к COM атмега в конце установки передает номер выставленного инструмента.

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

числовое значение       двоичный код
0	                               000 - к примеру идет смена инструмена
1	                               001-  инструмент 1
2	                               010-  инструмент 2
3	                               011-  инструмент 3
4	                               100-  инструмент 4
5	                               101-  инструмент 5
6	                               110-  инструмент 6
7	                               111-  ошибка
Внимание вопрос - как это навертеть в hal?

если переработать http://www.cnc-club.ru/forum/viewtopic. ... 12#p282012, то начало вроди такое (касательно COM):
(для просмотра содержимого нажмите на ссылку)
loadrt serport io=0x3f8

addf serport.0.read base-thread
addf serport.0.write base-thread

loadrt not
addf not.0 base-thread

loadrt matrix_kb config=3x4s
addf matrix_kb.0 servo-thread
setp matrix_kb.0.negative-logic 0

net col0 serport.0.pin-9-in-not => matrix_kb.0.col-00-in
net col1 serport.0.pin-8-in-not => matrix_kb.0.col-01-in
net col2 serport.0.pin-6-in-not => matrix_kb.0.col-02-in
net col3n serport.0.pin-1-in => not.0.in
net col3 not.0.out => matrix_kb.0.col-03-in

net row0 matrix_kb.0.row-00-out => serport.0.pin-4-out
net row1 matrix_kb.0.row-01-out => serport.0.pin-3-out
net row2 matrix_kb.0.row-02-out => serport.0.pin-7-out

net pin0 matrix_kb.0.key.r0c0
net pin1 matrix_kb.0.key.r0c1 => comkbd.led1
net pin2 matrix_kb.0.key.r0c2 => comkbd.led2

Спасибо.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Подключение револьверки - как реализовать?

Сообщение nkp »

кмк - мк в этой системе лишний...
ну или пересмотреть алгоритм его работы(оставить только выдачу
бинарного сигнала "Номер_установленного_инструмента"
-------------
напомню,что в емс "запрашивая" смену инструмента(в виде команды T Gкода) он выдает номер
этого инструмента на пин УЖЕ в виде целого числа(s32)
если нам следовать твоему алгоритму ,что нам нужно это число преобразовать в бинарный код
для упрощения - можно мк "заставить" выполнять вращение-сравнение-остановку , а выдавать наружу только
битовое значение "Установлен_запрашиваемый_инструмент.Поехали_дальше_пилить"
---------------
можно было бы использовать готовый компонент carousel
он принимает от емс запрашиваемый номер инструмента,выдает команду(на пин) вращать голову вперед (или назад,куда скажем,или куда ближе))
и когда слышит на трех входный пинах нужный код - останавливает вращение и командует емс продолжать программу...
maxim
Кандидат
Сообщения: 53
Зарегистрирован: 29 мар 2012, 09:12
Репутация: 1
Откуда: Гатчина, Ленинградская обл.
Контактная информация:

Re: Подключение револьверки - как реализовать?

Сообщение maxim »

Всем доброго дня.

На пока конфиг стал выглядеть вот таким образом:

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

net tool-turret-changed  => parport.0.pin-13-in
net tool-turret-bit-0    => parport.0.pin-14-out
net tool-turret-bit-1    => parport.0.pin-16-out
net tool-turret-bit-2    => parport.0.pin-17-out


loadrt threads

loadrt bitslice personality=5
addf bitslice.0 thread1

loadrt conv_s32_u32
addf conv-s32-u32.0 thread1

net tool_num.s <= iocontrol.0.tool-prep-number => conv-s32-u32.0.in
net tool_num.u <= conv-s32-u32.0.out bitslice.0.in

net tool-turret-bit-0 <= bitslice.0.out-00
net tool-turret-bit-1 <= bitslice.0.out-01
net tool-turret-bit-2 <= bitslice.0.out-02

net tool-turret-changed => iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Алгоритм работы такой:
1) задаем нужный нам инструмент, раскладываем его в бинарный вид, передаем по трем проводам (tool-turret-bit-0, tool-turret-bit-1, tool-turret-bit-2 ) в резцедержку.
2) Она там сама крутит, вертит, пшикает воздухом в нужные отверстия
3) Как только нужный инструмент выбран она мыргает проводочком tool-turret-changed

Все. Конец истории.

из минусов - нет ошибки, но пока и не сильно она и нужна.
Ответить

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