Страница 1 из 1
Homing по индексу. Сброс сигнала index-enable [РЕШЕНО]
Добавлено: 03 дек 2023, 10:04
kharpost
Постановка задачи такая: есть линейки с индексом, есть плата LinuxCNC MB-1. Требуется сделать хоминг по индексу.
Особенностью платы является наличие входов A и B энкодера, отсутствие входа для индекса Z.
Хочется подключить индекс к свободной ноге и с помощью этой ноги сбрасывать index-enable.
Какой компонент HAL может по входному сигналу сбрасывать index-enable?
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 03 дек 2023, 21:14
alex_sar
готового наверное нет, свой написать нетрудно и недолго, если знаете C
строчек 10-15 получится.
хотя....
а что мешает взять cтандартный encoder, подключить только z и взять с него только index-enable ?
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 04 дек 2023, 13:05
kharpost
alex_sar писал(а): ↑
а что мешает взять cтандартный encoder, подключить только z и взять с него только index-enable ?
Не хочется для хранения одной сосиски брать морской контейнер. Да ещё в этом компоненте используется плавающая точка - будет вставать в очередь к сопроцессору.
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 04 дек 2023, 13:20
alex_sar
kharpost писал(а): ↑04 дек 2023, 13:05
alex_sar писал(а): ↑
а что мешает взять cтандартный encoder, подключить только z и взять с него только index-enable ?
Не хочется для хранения одной сосиски брать морской контейнер. Да ещё в этом компоненте используется плавающая точка - будет вставать в очередь к сопроцессору.
Для отладки пойдёт, а так если прям захочется, то написать и правда несложно.
Вот здесь куча примеров
https://github.com/LinuxCNC/linuxcnc/tr ... components
пишете .comp файл, какой нибудь простенький взять как шаблон, например вот этот
Код: Выделить всё
component myand2 "My Two-input AND gate";
pin in bit in0;
pin in bit in1;
pin out bit out;
function _ nofp;
;;
FUNCTION(_) { out = in0 && in1; }
потом
halcompile --compile --install yourfilename.comp
и всё, у вас получился компонент ничем не хуже стандартного
доки здесь
https://linuxcnc.org/docs/html/hal/comp.html
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 04 дек 2023, 21:59
kharpost
alex_sar писал(а): ↑
и всё, у вас получился компонент ничем не хуже стандартного
Так просто не получится. Там нужен выход io. Собственно компонент я уже написал. Просто думал, что есть что-то стандартное. Как-то странно получается объекты io есть, а работать с ними нечем.
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 04 дек 2023, 23:04
D.L.
kharpost писал(а): ↑
Постановка задачи такая: есть линейки с индексом, есть плата LinuxCNC MB-1. Требуется сделать хоминг по индексу.
Особенностью платы является наличие входов A и B энкодера, отсутствие входа для индекса Z.
Хочется подключить индекс к свободной ноге и с помощью этой ноги сбрасывать index-enable.
Какой компонент HAL может по входному сигналу сбрасывать index-enable?
Нужно обратиться к производителю платы и попросить чтоб собрал прошивку с входами индексов на свободных входах платы.
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 04 дек 2023, 23:22
kharpost
D.L. писал(а): ↑
Нужно обратиться к производителю платы и попросить чтоб собрал прошивку с входами индексов на свободных входах платы.
Долго это...
Re: Homing по индексу. Сброс сигнала index-enable
Добавлено: 05 дек 2023, 00:10
kharpost
alex_sar писал(а): ↑
и всё, у вас получился компонент ничем не хуже стандартного
Получилось так:
Код: Выделить всё
component signal_set "Sets io signal";
pin in bit in "Input (see in-invert).";
pin in bit in_invert "If set to True, the rising edge of the input pin triggers the event. If set to False, the falling edge triggers.";
pin in bit out_invert "If set to True, the input pin event sets the output to True. If set to False, sets to False.";
pin io bit out "Output (see out-invert).";
option data _data;
function _ nofp;
license "GPL";
author "Dmitry Kharitonov";
;;
typedef struct {
int pre_in;
} _data;
FUNCTION(_) {
int b=0;
b=in;
if(data.pre_in != b) {
data.pre_in = b;
if(in_invert) b=!b;
if(b) out=out_invert;
}
}