EMC2 LinuxCNC и Joystick

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение dinkata »

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

Re: EMC2 LinuxCNC и Joystick

Сообщение Nick »

А не проще гашетку привязать к axis...jog-enable?
Аватара пользователя
verser
Мастер
Сообщения: 1875
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1275
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение verser »

Nick писал(а):А не проще гашетку привязать к axis...jog-enable?
Это действительно проще.
Я сделал по-своему чтобы при ненажатой гашетке джойстик тоже двигал, только микрошагами: один наклон - один микрошаг.
-Serj-
Новичок
Сообщения: 3
Зарегистрирован: 08 янв 2015, 22:15
Репутация: 0
Настоящее имя: Сергей
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение -Serj- »

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

Re: EMC2 LinuxCNC и Joystick

Сообщение Nick »

-Serj- писал(а):Как я могу завести аналоговые сигналы в LinuxCNC?
Нужен АЦП, с драйвером. Можно, например, через ардуину.
-Serj- писал(а):Или проще выковырять контроллер из какого-нибудь донора?
или да :)
-Serj-
Новичок
Сообщения: 3
Зарегистрирован: 08 янв 2015, 22:15
Репутация: 0
Настоящее имя: Сергей
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение -Serj- »

Я планирую использовать для станка связку плат MESA, может тогда логичнее купить ещё и 7i73? Хотя для одного джойстика наверно смысла нет.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение Serg »

На платах 7i76 и 7i77 есть по 4 аналоговых входа.
Правда с дискретностью 8 бит на диапазон 0-36V.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение dinkata »

UAVpilot писал(а):На платах 7i76 и 7i77 есть по 4 аналоговых входа.
А нам подскажите где они и как пользуете ?
Вложения
7i77.jpg (5376 просмотров) <a class='original' href='./download/file.php?id=40644&sid=122ef35bc463bb7005e26fee39597eae&mode=view' target=_blank>Загрузить оригинал (281.47 КБ)</a>
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение nkp »

dinkata писал(а):А нам подскажите где они и как пользуете ?
http://www.cnc-club.ru/forum/viewtopic. ... 480#p45689
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение dinkata »

nkp писал(а):http://www.cnc-club.ru/forum/viewtopic. ... 480#p45689
и ето :
ANALOG INPUTS
All field input pins are capable of reading the input voltage. These are not highly
accurate or high resolution but can be useful for things like potentiometer inputs. Input
resolution is 8 bits and input full scale value is 36.3V. Accuracy is +-5%
Software process data modes 1 and 2 allow reading the analog voltage on inputs
0 through 3, in addition to the 32 digital bit inputs.

спасибо опят nkp ,да-а-а надо не только смотрет ,а и видет :D
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение Serg »

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

$ halcmd loadrt hm2_pci config="sserial_port_0=20xxxxxx"
$ halcmd show pin *.analogin*
Component Pins:
Owner   Type  Dir         Value  Name
     7  float OUT             0  hm2_5i25.0.7i77.0.0.analogin0
     7  float OUT             0  hm2_5i25.0.7i77.0.0.analogin1
     7  float OUT             0  hm2_5i25.0.7i77.0.0.analogin2
     7  float OUT             0  hm2_5i25.0.7i77.0.0.analogin3
7i77.jpg (5338 просмотров) <a class='original' href='./download/file.php?id=40684&sid=122ef35bc463bb7005e26fee39597eae&mode=view' target=_blank>Загрузить оригинал (229.39 КБ)</a>
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение odekolon »

вернемся к началу - подключение джойстика
в ini- файле в секции HAL
HALUI = halui

создал файл custom.hal

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

 loadusr hal_input -W -KRAL +THRUSTMASTER Top Gun Afterburner


    # включаем управление от джойстика
    #net joystick_enable <= input.0.btn-joystick => axis.0.jog-enable
    #net joystick_enable => axis.1.jog-enable
    #net joystick_enable => axis.2.jog-enable

   поскипано...

    # устанавливаем скорость
    #net jog_scale <= input.0.abs-throttle-position => axis.0.jog-scale
    #net jog_scale => axis.1.jog-scale
    #net jog_scale => axis.2.jog-scale
программа грузится, пины все работают (отзываются на нажатия кнопок и движение осей
но как только снимаю комментарий с любой строки - получаю сообщение типа:

Рin "input.0.btn-joystick" does not exist

название пина копипастил из терминала после команды halcmd show и вручную набивал, и копипастил из hal-конфигуратора
вот выдержка из halcmd show

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

Loaded HAL Components:
ID      Type  Name                                      PID   State
    20  User  halcmd6957                                 6957 ready
    18  User  halcmd6944                                 6944 ready
    16  User  axisui                                     6938 ready
    14  User  inihal                                     6937 ready
     3  User  hal_input                                  6931 ready
    11  RT    pwmgen                                          ready
    10  RT    stepgen                                         ready
     9  RT    hal_parport                                     ready
     8  RT    probe_parport                                   ready
     7  RT    motmod                                          ready
     6  RT    trivkins                                        ready
     5  User  iocontrol                                  6914 ready
.... поскипано...
     3  bit   OUT          TRUE  input.0.btn-joystick
     3  bit   OUT         FALSE  input.0.btn-joystick-not
     3  bit   OUT         FALSE  input.0.btn-pinkie
     3  bit   OUT          TRUE  input.0.btn-pinkie-not
     3  bit   OUT          TRUE  input.0.btn-thumb
     3  bit   OUT         FALSE  input.0.btn-thumb-not
     3  bit   OUT         FALSE  input.0.btn-thumb2
     3  bit   OUT          TRUE  input.0.btn-thumb2-not
     3  bit   OUT          TRUE  input.0.btn-top
     3  bit   OUT         FALSE  input.0.btn-top-not
     3  bit   OUT         FALSE  input.0.btn-top2
где еще покопаться можно?
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение Nick »

Вот тут по идее надобы дождаться ready от компонента

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

loadusr hal_input -W -KRAL +THRUSTMASTER Top Gun Afterburner
Но компонент у тебя называется input, а не hal_input...
может надо:

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

loadusr hal_input -Wn input   (....)
Т.е. мы ждем, чтобы компонент загрузился и создал все свои пины. Возможно он это не успевает сделать, и соответственно появляется ошибка, что пина нет.
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение odekolon »

оК , попробую
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение odekolon »

-Serj- писал(а):Прошу прощения, я новичёк, станок пока в мыслях. Потихоньку собираю деталюхи да обдумываю разные моменты. Вот попался мне хороший промышленный джойстик, в нём нет контроллера, только три потенциомметра. Как я могу завести аналоговые сигналы в LinuxCNC? Или проще выковырять контроллер из какого-нибудь донора?
посмотри какие потенциометры
если на 100 к или около того, то можно прикрутить любой usb джойстик или геймпад оторвав родные резисторы.
если номнал переменных резисторов сильно отличается, то ничего хорошего не получится, управление будет слишком "грубым".
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение solo »

а подскажите пж
пытаю реализовать в джойстике следующее
при нажатии кнопки пин (input.0.btn-base) хочу чтобы оси перемешались с скорость 300
а при нажатии кнопки с пином (input.0.btn-base2) оси должны ехать с скорость 900
насколько я понял надо присвоить соответствующее значение setp halui.jog-speed
а как это сделать в хел файле
сейчас у меня так оси просто ездят на постоянной скорости

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

loadusr -W hal_input -KRAL DragonRise Inc.   Generic   USB  Joystick
#loadusr hal_joystick -d /dev/input/js0 -p joypad
#net joystick_enable <= input.0.btn-trigger => axis.0.jog-enable

setp axis.0.jog-vel-mode 1
setp axis.1.jog-vel-mode 1
setp axis.2.jog-vel-mode 1
setp halui.jog-speed 500

#net joispid1 input.0.btn-base halui.jog-speed 500
#net joispid2 input.0.btn-base2 halui.mdi-command-10

net jog_scale input.0.abs-x-position => halui.jog.0.analog
net jog_scale1 input.0.abs-y-position => halui.jog.1.analog
net jog_scale2 input.0.abs-z-position => halui.jog.2.analog
 
Аватара пользователя
verser
Мастер
Сообщения: 1875
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1275
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение verser »

solo писал(а): а как это сделать в хел файле
Вот пример как у меня (кнопки и скорости чуть другие)

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

#----------------------------------------------------------------------------------------------------------
# Scale button - Set jog speed
#----------------------------------------------------------------------------------------------------------
# Painted button	function		mapping
#	5		set jog scale: 1/1000	input.0.btn-thumb2
#	7		set jog scale: 4/10000	input.0.btn-top

# First, we select the two buttons for speed selection. We'll use 5 and 7 for 1/1000 and 4/10000, respectively.
net button5 input.0.btn-thumb2 => flipflop.0.reset
net button7 input.0.btn-top => flipflop.0.set
net button5 input.0.btn-thumb2 => flipflop.1.reset
net button7 input.0.btn-top => flipflop.1.set

#Add the control for the mux by mapping it to the flip-flop. Thus, it will stay in the last state until it is 
#changed.
net chosenJogSpeed flipflop.0.out => mux2.6.sel
net chosenJogDuration flipflop.1.out => mux2.7.sel

#Now, map the jog scale values to the axes.
net jogscale mux2.6.out => axis.0.jog-scale
net jogscale mux2.6.out => axis.1.jog-scale
net jogscale mux2.6.out => axis.2.jog-scale
net jogscale mux2.6.out => axis.4.jog-scale

# Set parameters values 3750 3609
setp flipflop.0.tmax          	3750
setp mux2.6.tmax         	3609

# Set the two scale values. The output will equal in0 when FALSE and in1 when TRUE.
setp mux2.6.in0          	0.1
setp mux2.6.in1          	0.01
...
# Now we can update the speed values. They aren't that critical in terms of calculation order, since the user will have to 
# look down, press the button, then resume. The computer will react millions of times faster than even the twitchiest 
# gamer / machinist.
addf flipflop.0 servo-thread
addf mux2.6 servo-thread
addf flipflop.1 servo-thread
addf mux2.7 servo-thread

Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение torvn77 »

solo писал(а):пытаю реализовать в джойстике следующее
при нажатии кнопки пин (input.0.btn-base) хочу чтобы оси перемешались с скорость 300
а при нажатии кнопки с пином (input.0.btn-base2) оси должны ехать с скорость 900
Если не изменяет память, то то что тебе надо тут Re: JoyHandle - компонент для построения нелинейного джойсти #5
На худой конец смотри последнею версию здесь https://github.com/torvn77/LinuxCNC_SUD ... epad.hal-v (эта ссылка после перепада настроения может стать не рабочей, но конфиг скорее всего никуда не денется, просто я перегоню его в другое место, ну или если денется, то значит я его переписал на С)

П.С. Хорошо бы чтобы кто ни будь хотя бы демультиплексор на С оформил.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение nkp »

torvn77 писал(а):П.С. Хорошо бы чтобы кто ни будь хотя бы демультиплексор на С оформил.

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

component demux2 "A demultiplexer to select from one of two outputs to connect to the input";


description " This component allows you to connect a single input to one of several outputs. \

This version will connect only one of two outputs." ; 

author "Marius D. Liebenberg";


//option singleton yes;

//option default_count = 1;

//option userspace yes;


// Input Pins

pin in bit in0  "Any float input value";

pin in bit sel  "If HIGH the out1 will be connect to in0, else the out 0 will be connected ";


// Output Pins

pin out bit out0  "Follows the value of in0 if sel is FALSE";

pin out bit out1  "Follows the value of in0 if sel is TRUE";


// Parameters

// Global Variables


function _;

license "GPL";

;;

#include "rtapi_math.h"

FUNCTION(_) {

if(sel) out1 = in0;

else out0 = in0;

}
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: EMC2 LinuxCNC и Joystick

Сообщение torvn77 »

nkp, У меня демультиплексор на четыре состояния,
1.Блокировка клавиатуры(Off)
2-3.Режимы
4.Блокировка клавиатуры(Error). Хотя раньше там был ещё один режим, но по факту он оказался не нужен.
По этому как минимум в предложенный тобой мультиплексор надо добавить третье состояние Off, а этот компонет не реализует даже логику одного канала.

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

#----------------Логика блокировки и переключения analog/continue режима кнопок
# Задание клавиш выбора через подключение к соответствующему сигналу
net gamepad.analog_jog-enable   <= input.0.btn-base2
net gamepad.continue_jog-enable <= input.0.btn-pinkie


net gamepad.analog_jog-enable       => not.0.in
net gamepad.analog_jog-enable-not   <= not.0.out
net gamepad.continue_jog-enable     => not.1.in
net gamepad.continue_jog-enable-not <= not.1.out

# Если не нажата ни одна клавиша выбора или нажаты обе клавиши,то выполняется блокировка кнопок
# Если нажата только одна из клавиша выбора то выбирается соответствующий режим 
net gamepad.analog_jog-enable        => and2.0.in0
net gamepad.continue_jog-enable-not  => and2.0.in1
net gamepad.sel_button_mode_analog   <= and2.0.out
net gamepad.continue_jog-enable      => and2.25.in0
net gamepad.analog_jog-enable-not    => and2.25.in1
net gamepad.sel_button_mode_continue <= and2.25.out

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

#----------------Button 1-------
net gamepad.func_button_1 => and2.1.in0
net gamepad.sel_button_mode_analog => and2.1.in1
net gamepad.func_button_1-analog-mode <= and2.1.out

net gamepad.func_button_1 => and2.2.in0
net gamepad.sel_button_mode_continue => and2.2.in1
net gamepad.func_button_1-continue_mode <= and2.2.out
Потом в нём есть один аналоговый канал, задающий максимальную скорость.
По этому всего каналов получается больше 12, а у тебя только один бинарный.
Ответить

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