Укрощение "штурвала".

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Одессит
Новичок
Сообщения: 37
Зарегистрирован: 09 сен 2013, 11:29
Репутация: 4
Откуда: Одесса
Контактная информация:

Укрощение "штурвала".

Сообщение Одессит »

Пришла в затуманенную парами СОЖ голову мысль: мышка не совместима с металлообработкой. Иди знай, куда она упадёт и кто на неё нападёт.
Лишняя сущность.
Поскольку к станку прилажен внешний агрегатЪ висящий на проводке (под общим названием ШТУРВАЛ) с запасными кнопками по бортам,
EUG_2842.JPG (2329 просмотров) <a class='original' href='./download/file.php?id=27538&sid=06087506eed955e69b3668a23f7a2f83&mode=view' target=_blank>Загрузить оригинал (4.11 МБ)</a>
то, решено было использовать его ещё и в качестве регулятора скорости подач (для режима ручного управления). Это когда нужно «пропылить» плоскость и т.п.
Маленькая ремарка.
Свой фрезерный станок я доработал из 67К25ПФ20. С условием соблюсти варианты работы в ручном, автоматическом (ЧПУ) и полуавтоматическом (работа с предустановленными скоростями подач «по прямой». Для таких действий используются обычные «джойстики».
EUG_2841.JPG (2329 просмотров) <a class='original' href='./download/file.php?id=27537&sid=06087506eed955e69b3668a23f7a2f83&mode=view' target=_blank>Загрузить оригинал (4.32 МБ)</a>
Т.е., по сути, выключатели, с фиксацией положения. Как на классических станках: включил – поехали с заданной ранее скоростью.
Перед этим я успел наиграться возможностями ЕМС2. Только вот мышка постоянно соскальзывает…
Т.е., регулировать скорость подачи мышкой - неудобно. Опять же отрывать руку от энкодера, дергать мышку с нажатой кнопкой обратно к энкодеру – жуть и мрак…


Итак.
При нажатии одной (выбираем сами) из боковых кнопок на корпусе «штурвала» происходит блокировка всех ранее назначенных этому узлу действий и (удерживая кнопу) осуществляется регулирование скорости подачи.

В результате трёх неспешных весенних вечеров родилось-таки.

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

#Входы "ручного джойстика"
net go_x_plus  halui.jog.0.plus  <= parport.2.pin-03-in-not
net go_x_minus halui.jog.0.minus <= parport.2.pin-02-in-not
net go_y_plus  halui.jog.1.plus  <= parport.2.pin-04-in-not
net go_y_minus halui.jog.1.minus <= parport.2.pin-05-in-not
net go_z_plus  halui.jog.2.plus  <= parport.2.pin-06-in-not
net go_z_minus halui.jog.2.minus <= parport.2.pin-07-in-not

#Логика, необходимая для управления с энкодера
loadrt and2 count=3
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread

loadrt sample_hold count=1
addf sample-hold.0 servo-thread

loadrt sum2 count=2
addf sum2.0 servo-thread
addf sum2.1 servo-thread
loadrt limit1 count=1
addf limit1.0 servo-thread
loadrt not count=1
addf not.0 servo-thread
loadrt tristate_float count=2
addf tristate-float.0 servo-thread
addf tristate-float.1 servo-thread

loadrt conv_s32_float count=3
loadrt conv_float_s32 count=1
loadrt mult2 count=1
addf conv-s32-float.0 servo-thread
addf conv-s32-float.1 servo-thread
addf conv-s32-float.2 servo-thread
addf conv-float-s32.0 servo-thread
addf mult2.0 servo-thread

#Штурвал
loadrt mux4 count=1
addf mux4.0 servo-thread

#Тип энкодера 1-квадратурный, 0-импульсный
setp encoder.3.x4-mode 1

#Vel. mode - 1, pos. mode - 0
setp axis.0.jog-vel-mode 0
setp axis.1.jog-vel-mode 0
setp axis.2.jog-vel-mode 0

#Селектор шага энкодера (множитель) мм.
setp mux4.0.in0 0.00125
setp mux4.0.in1 0.0025
setp mux4.0.in2 0.025

#Пины селектора шага
net scale1 mux4.0.sel0 <= parport.2.pin-10-in-not
net scale2 mux4.0.sel1 <= parport.2.pin-11-in-not

#Передача из mux4 к оси
net mpg-scale <= mux4.0.out
net mpg-scale => axis.0.jog-scale
net mpg-scale => axis.1.jog-scale
net mpg-scale => axis.2.jog-scale

#Пины входа энкодера
net mpg-a encoder.3.phase-A <= parport.2.pin-08-in
net mpg-b encoder.3.phase-B <= parport.2.pin-09-in

#Кнопка режима работы штурвала - когда нажата оси блокируются и вращение штурвала регулирует скорость
net sw-mode parport.1.pin-08-in => and2.0.in0 and2.1.in0 and2.2.in0 not.0.in tristate-float.1.enable
#Инвертированный сигнал кнопки - на устройство выборки и хранения и tristate-float.0
net NOT2 not.0.out => sample-hold.0.hold tristate-float.0.enable

#Блокировка осей
net AND1 and2.0.in1 <= parport.2.pin-12-in-not
net mpg-x axis.0.jog-enable <= and2.0.out

net AND2 and2.1.in1 <= parport.2.pin-13-in-not
net mpg-y axis.1.jog-enable <= and2.1.out

net AND3 and2.2.in1 <= parport.2.pin-15-in-not
net mpg-z axis.2.jog-enable <= and2.2.out

#Выход 4 энкодера (штурвал) направляется на входы jog-counts осей, устройство выборки и хранения и на сумматор. У оси Z попутно корректируется направление - см. далее
net ENC_OUT encoder.3.counts => conv-s32-float.0.in axis.0.jog-counts axis.1.jog-counts sample-hold.0.in conv-s32-float.2.in
#Кожффициенты и смещения сумматоров. Нулевой вычитает из счетчика энкодера значение, сохраненное при нажатии кнопки. Первый - складывает с предыдущей 
#выставленной скоростью, запомненной опять же в момент нажатия кнопки. Также выполняются промежуточные преобразования s32-float
setp sum2.0.gain0 -1.0
setp sum2.0.gain1 1.0
setp sum2.0.offset 0.0
setp sum2.1.gain0 1.0
setp sum2.1.gain1 1.0
setp sum2.1.offset 0.0
net SUM1 conv-s32-float.1.in <= sample-hold.0.out
net SUM2 sum2.0.in0 <= conv-s32-float.1.out
net SUM3 sum2.0.in1 <= conv-s32-float.2.out
net SUM30 sum2.1.in0 <= sum2.0.out
net SUM31 sum2.1.in1 <= tristate-float.1.out
#Ограничитель скорости
setp limit1.0.min 0
setp limit1.0.max 1800
#
net SUM4 tristate-float.0.in <= sum2.1.out
net SUM5 limit1.0.in <= tristate-float.0.out
#Выход ограничителя направляется в halui и устройство tristate-float.1. Кроме этого сигнал encoder-jog может быть выведен в pyvcp панель или другой GUI
net encoder-jog limit1.0.out => tristate-float.1.in halui.jog-speed
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Укрощение "штурвала".

Сообщение nkp »

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

#Тип энкодера 1-квадратурный, 0-импульсный
setp encoder.3.x4-mode 1
True - дефолтное значение
поэтому строку можно исключить...
Аватара пользователя
Одессит
Новичок
Сообщения: 37
Зарегистрирован: 09 сен 2013, 11:29
Репутация: 4
Откуда: Одесса
Контактная информация:

Re: Укрощение "штурвала".

Сообщение Одессит »

nkp писал(а):поэтому строку можно исключить...
Пусть болтается. Так нагляднее.

И ещё. В данной конфигурации приращение кратно 4-м за один "щелчок" энкодера. Т.к. энкодер таки квадратурный. Кому надо шагать по одной единице - нужен делитель.
Ответить

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