Страница 35 из 39

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

Добавлено: 29 мар 2021, 22:58
mikehv
Fivist писал(а): 29 мар 2021, 22:18 Всем добра! если написал не в тему, то извиняюсь!
Вопрос собственно вот в чем, не могу сообразить как правильно настроить в ХАЛ вот такую клавиатуру
MUX4.jpg.
Мне как раз на 3 свободных входа надо повесить 6 кнопок. Может кто уже делал?
А mux8 не получится использовать?
А потом bitslice на биты полученное число разобьёт. А дальше все просто.

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

Добавлено: 29 мар 2021, 23:26
Fivist
так вроде mux4(8) настроить можно только на числа. как к нему привязать кнопку? я таких примеров не встречал. например для инкремента числа для маховика пульта делал через mux4. выбор осей через галетник (по похожей схеме с диодами) реализовал через and2. но там было 2 входа. а кнопки уже с тремя...

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

Добавлено: 29 мар 2021, 23:47
Fivist
..е мае!!! если схему внимательнее посмотреть, то мне последняя (седьмая) кнопка там ни к чему, а 3 пина как раз для нее. в основном используется 1 или 2. так что реализую логику так же - через and2!!!

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

Добавлено: 30 мар 2021, 00:35
Serg
Fivist писал(а): Мне как раз на 3 свободных входа надо повесить 6 кнопок.
http://linuxcnc.org/docs/2.8/html/man/man9/demux.9.html

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

Добавлено: 30 мар 2021, 09:08
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;
    }
}




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

Добавлено: 30 мар 2021, 22:33
Fivist
Serg и NKP посибо, погуглю про это, и как использовать...

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

Добавлено: 31 мар 2021, 11:53
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

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

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

...на выходных буду пробовать...

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

Добавлено: 31 мар 2021, 23:03
Serg
nkp любитель создавать свои компоненты при наличии штатных с таким-же функционалом... ;)

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

Добавлено: 01 апр 2021, 12:16
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

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

Добавлено: 01 апр 2021, 21:33
Сергей Саныч
Есть спецкомпонент для клавиатур. matrix_kb называется http://linuxcnc.org/docs/2.8/html/man/m ... _kb.9.html

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

Добавлено: 01 апр 2021, 22:15
Сергей Саныч
И это, такая клавиатура может принести неприятные сюрпризы.
Подумайте, что будет, если одновременно нажать две кнопки?
Для кодирования галетника такую схему применить можно, а для кнопок я бы ее применить не рискнул.

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

Добавлено: 07 апр 2021, 10:27
Nikomas
После работы на "взрослых" станках (стойка Sinumerik) для меня полной неожиданностью стало то, что ползунок подачи в LinuxCNC работает только с рабочими подачами, а с G0 не работает. На стойках оооочень удобно обкатывать программу именно этой крутилкой, а вот линукс со всей дури может и въехать в заготовку/стол.

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

Добавлено: 07 апр 2021, 10:29
mikehv
Для ускоренной в gmoccapy есть свой ползунок. На фануке у меня тоже отдельно регулируется ускоренные и рабочие.

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

Добавлено: 07 апр 2021, 17:21
steals_y2k
Nikomas писал(а): G0 не работает
для G0,емнип, свой, несколько ниже.

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

Добавлено: 09 апр 2021, 18:54
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

Есть ли какие-то реальные примеры их применения?

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

Добавлено: 09 апр 2021, 20:17
Сергей Саныч
Судя по названиям, эти пины позволяют запоминать значение счетчика энкодера по фронту и/или спаду соответствующего сигнала в определенный момент.
А потом не спеша и со вкусом это значение обрабатывать.

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

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

https://github.com/LinuxCNC/linuxcnc/bl ... /encoder.c

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

Добавлено: 09 апр 2021, 23:17
Serg
Просто некий регистр, который умеет запоминать текущую позицию по приходу дискретного сигнала. Эдакий аналог index-enable.
Например если в качестве сигнала использовать пробник, то по идее можно не заморачиваться с повторным касанием на малой скорости. :)

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

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