Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение mikehv »

Fivist писал(а): 29 мар 2021, 22:18 Всем добра! если написал не в тему, то извиняюсь!
Вопрос собственно вот в чем, не могу сообразить как правильно настроить в ХАЛ вот такую клавиатуру
MUX4.jpg.
Мне как раз на 3 свободных входа надо повесить 6 кнопок. Может кто уже делал?
А mux8 не получится использовать?
А потом bitslice на биты полученное число разобьёт. А дальше все просто.
Fivist
Кандидат
Сообщения: 57
Зарегистрирован: 27 авг 2020, 16:40
Репутация: 5
Настоящее имя: Виталий
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Fivist »

так вроде mux4(8) настроить можно только на числа. как к нему привязать кнопку? я таких примеров не встречал. например для инкремента числа для маховика пульта делал через mux4. выбор осей через галетник (по похожей схеме с диодами) реализовал через and2. но там было 2 входа. а кнопки уже с тремя...
Fivist
Кандидат
Сообщения: 57
Зарегистрирован: 27 авг 2020, 16:40
Репутация: 5
Настоящее имя: Виталий
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Fivist »

..е мае!!! если схему внимательнее посмотреть, то мне последняя (седьмая) кнопка там ни к чему, а 3 пина как раз для нее. в основном используется 1 или 2. так что реализую логику так же - через and2!!!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Serg »

Fivist писал(а): Мне как раз на 3 свободных входа надо повесить 6 кнопок.
http://linuxcnc.org/docs/2.8/html/man/man9/demux.9.html
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение nkp »

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

/* sudo halcompile --install btn3x6.comp */
component btn3x6 "btn3x6";
description "";

//Input 
pin in bit PB0;
pin in bit PB2;
pin in bit PB4;


//Output

pin out bit S1;
pin out bit S2;
pin out bit S3;
pin out bit S4;
pin out bit S5;
pin out bit S6;
pin out bit S7;

function _;
license "GPL"; 
;;
FUNCTION(_){
    if ( PB4 && PB2 && PB0 ) {
	S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
    }
    
    else  if ( PB4 && PB2 && !PB0 ) {
	S1 = 1; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
    }
    
    else  if ( PB4 && !PB2 && PB0 ) {
	S1 = 0; S2 = 1; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
    }
    
    else  if ( PB4 && !PB2 && !PB0 ) {
	S1 = 0; S2 = 0; S3 = 1; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
    }

    else  if ( !PB4 && PB2 && PB0 ) {
	S1 = 0; S2 = 0; S3 = 0; S4 = 1; S5 = 0; S6 = 0; S7 = 0;
    }

    else  if ( !PB4 && PB2 && !PB0 ) {
	S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 1; S6 = 0; S7 = 0;
    }
    
    else  if ( !PB4 && !PB2 && PB0 ) {
	S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 1; S7 = 0;
    }
    
    else  if ( !PB4 && !PB2 && !PB0 ) {
	S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 1;
    }
}



Fivist
Кандидат
Сообщения: 57
Зарегистрирован: 27 авг 2020, 16:40
Репутация: 5
Настоящее имя: Виталий
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Fivist »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение nkp »

Fivist писал(а): 30 мар 2021, 22:33 и как использовать...
это готовый компонент именно с твоей логикой работы
сохраняешь этот код в файл btn3x6.comp в домашнюю папку
потом в терминале
sudo halcompile --install btn3x6.comp
и всё
для проверки правильности работы в хал пишешь

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

loadrt btn3x6
addf btn3x6.0 servo-thread

net pb0 btn3x6.0.PB0
net pb2 btn3x6.0.PB2
net pb4 btn3x6.0.PB4

loadusr sim_pin  pb0  pb2  pb4
Fivist
Кандидат
Сообщения: 57
Зарегистрирован: 27 авг 2020, 16:40
Репутация: 5
Настоящее имя: Виталий
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Fivist »

nkp писал(а): это готовый компонент
спасибо, не знал что так можно свой компонент создать.
я так понял что сюда:
net pb0 btn3x6.0.PB0
net pb2 btn3x6.0.PB2
net pb4 btn3x6.0.PB4
цепляем входы контроллера. а вот дальше я не могу понять логики, надо глубже изучить ХАЛ. я в теории понимаю что на каждый из семи выходов (out pin bit) надо подцепить действие (например установить 0 оси, или начать выполнение программы...) но как оно вызывается при нажатии?

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Serg »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение nkp »

для примера

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

net brun    btn3x6.0.S1  halui.program.run
net bstop   btn3x6.0.S2  halui.program.stop
net bhome   btn3x6.0.S3  halui.home-all
net bmdi0   btn3x6.0.S4  halui.mdi-command-00
net bmdi1   btn3x6.0.S5  halui.mdi-command-01
net bmdi2   btn3x6.0.S6  halui.mdi-command-02 
в ini свои MDI команды

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

[HALUI]
MDI_COMMAND = G28
MDI_COMMAND = G0 G53 X0 Y0
MDI_COMMAND = G0 G54 X12
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Сергей Саныч »

Есть спецкомпонент для клавиатур. matrix_kb называется http://linuxcnc.org/docs/2.8/html/man/m ... _kb.9.html
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Сергей Саныч »

И это, такая клавиатура может принести неприятные сюрпризы.
Подумайте, что будет, если одновременно нажать две кнопки?
Для кодирования галетника такую схему применить можно, а для кнопок я бы ее применить не рискнул.
Чудес не бывает. Бывают фокусы.
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Nikomas »

После работы на "взрослых" станках (стойка Sinumerik) для меня полной неожиданностью стало то, что ползунок подачи в LinuxCNC работает только с рабочими подачами, а с G0 не работает. На стойках оооочень удобно обкатывать программу именно этой крутилкой, а вот линукс со всей дури может и въехать в заготовку/стол.
Аватара пользователя
mikehv
Мастер
Сообщения: 2101
Зарегистрирован: 14 авг 2013, 10:10
Репутация: 1170
Откуда: Иваново
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение mikehv »

Для ускоренной в gmoccapy есть свой ползунок. На фануке у меня тоже отдельно регулируется ускоренные и рабочие.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение steals_y2k »

Nikomas писал(а): G0 не работает
для G0,емнип, свой, несколько ниже.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение MX_Master »

А кто знает, как и для чего применяются пины
  • encoder.N.latch-input bit in
  • encoder.N.latch-falling bit in (default: TRUE)
  • encoder.N.latch-rising bit in (default: TRUE)
  • encoder.N.counts-latched s32 out
  • encoder.N.position-latched float out
у компонента encoder? http://linuxcnc.org/docs/2.8/html/man/m ... der.9.html

Есть ли какие-то реальные примеры их применения?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Сергей Саныч »

Судя по названиям, эти пины позволяют запоминать значение счетчика энкодера по фронту и/или спаду соответствующего сигнала в определенный момент.
А потом не спеша и со вкусом это значение обрабатывать.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение MX_Master »

5 раз перечитал описание этих пинов. Глянул в исходники. Что-то примерное понял. Это, типа, ещё один (но отдельный) счётчик внутри каждого канала, чтобы считать импульсы одного пина с заданными условиями по фронту/спаду. Используется сие, просто, как доп. функционал для каких-то частных случаев.

https://github.com/LinuxCNC/linuxcnc/bl ... /encoder.c
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Serg »

Просто некий регистр, который умеет запоминать текущую позицию по приходу дискретного сигнала. Эдакий аналог index-enable.
Например если в качестве сигнала использовать пробник, то по идее можно не заморачиваться с повторным касанием на малой скорости. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение a321 »

Есть файл задания ngc, даже не один. Стоит задача сделать так, чтобы в одном файле организовать вызов двух таких заданий последовательно. Суть? - видеть в Аксис раскладку деталей на заготовке (без дублирования кода или без сборки кода в единый файл). Вариант o<kkk> sub с вызовом известен и неприемлем - внутри каждого ngc свой набор вызываемых подпрограмм, а объявление подпрограммы внутри подпрограммы не работает. В bash я могу задать cat file1 & ping ya.ru и выполнятся. В Lcnc то-то подобное есть? - очень не хочется микроподпрограммы выводить в отдельные файлы (дае еще и их стандартизировать).
Ответить

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