Maho 400p фрезерный станок по металлу (400x250x375)

Тяжелые фрезерные станки по металлу.
tpolimer2000
Мастер
Сообщения: 311
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 35
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Для моего станка есть 2 способа установки нуля, первый основан на управлении серводрайвером, но там больше минусов чем плюсов (хотя повторяемость превосходная) и второй вариант установка нуля с помощью LinuxCnc.

Хочу реализовать второй вариант, завести датчик Home и индексную метку энкодера в LinuxCnc. Есть описание вариантов поиска нуля в LinuxCnc - https://linuxcnc.org/docs/html/config/ini-homing.html. Один из возможных вариантов, как раз то что мне нужно.

Нужно завести Z метку с серводрайвера в мой контролер Mesa 7i96. У моего серводрайвера есть выходы OZ и /OZ (у версии L есть еще выход OCZ, который можно подключать на прямую к входу контролеру, но у меня версия M), как их подключать пока не понял, появится время буду вникать.

После подключения к контролеру можно использовать HOME_USE_INDEX. Из описания:
HOME_USE_INDEX requires connections in your hal file to joint.n.index-enable from the encoder.n.index-enable.
Если правильно понимаю, нужно создать объект encoder и связать joint.n.index-enable с encoder.n.index-enable для каждой оси. Не знаю можно ли создать encoder только с индексной меткой без подключения сигналов A и B, если нет понадобиться уйму входов. Поэтому задумался о том чтобы просто завести индексную метку в котролер, объединить его с датчиком Home через AND2. А сам LinuxCnc настроить с параметром HOME_USE_INDEX = NO, но чтобы он смотрел не на датчик Home, а на AND2 к которому подключен датчик Home и индексная метка.

Вот такой план.
tpolimer2000
Мастер
Сообщения: 311
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 35
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Получил первую стружку :) .
Обрабатывали тиски (180 просмотров) <a class='original' href='./download/file.php?id=204379&sid=d3cc357280ad1b36ab4d8d5a90826545&mode=view' target=_blank>Загрузить оригинал (330.14 КБ)</a>
Обрабатывали тиски
Сама стружка:) (180 просмотров) <a class='original' href='./download/file.php?id=204380&sid=d3cc357280ad1b36ab4d8d5a90826545&mode=view' target=_blank>Загрузить оригинал (482.66 КБ)</a>
Сама стружка:)
Фреза которой делали обработку (180 просмотров) <a class='original' href='./download/file.php?id=204381&sid=d3cc357280ad1b36ab4d8d5a90826545&mode=view' target=_blank>Загрузить оригинал (277.45 КБ)</a>
Фреза которой делали обработку
tpolimer2000 писал(а): Планирую использовать датчики Home и индексную метку энкодера, которую можно вывести с серводрайвера. Пока завис с подключением индексной метки к контролеру.
Разобрался с выходными сигналами индексных меток на серводрайвере (выходы OZ и /OZ на фишке CNC1), они повторят сигналы TTL энкодеров с уровнем сигнала 5 вольт (Z и инвертированный Z сигнал, на Mesa 7i96 его называют IDX+ и IDX- соответственно).

У меня все датчики и сигналы которые идут в Mesa 7i96 запитаны от 24 вольт, временно подключу через реле для теста (просто буду подавать 1 или 0, если брать сигнал с индексной метки, боюсь скорости чтения входов не хватит).

Возникло много вопросов :), как часто опрашиваются входы на Mesa 7i96 в связке с LinuxCnc?
Или он проверяет выходы в цикле servo thread? И чтобы получить более менее адекватную скорость нужно подымать base thread?
Вообще реально получить приемлемую скорость чтения индексной метки, без специальных скоростных энкодерных входов на самой Mesa?

Так же из документации на Mesa 7i96, на плате есть выход расширения P1 EXPANSION CONNECTOR
The 7I96 has a 26 pin header to allow I/O expansion beyond the built in I/O on the
7I96 card. This I/O can include more step/dir channels, encoders, etc. This header has a
pin-out that matches standard parallel port breakout cards and Mesa’s 25 pin FPGA
daughtercards, when terminated with a DB25 connector.
Может эти индексные метки нужно подключать к P1 EXPANSION CONNECTOR, чтобы получить приемлемую скорость чтения этих входов?
tpolimer2000
Мастер
Сообщения: 311
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 35
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

tpolimer2000 писал(а): Возникло много вопросов , как часто опрашиваются входы на Mesa 7i96 в связке с LinuxCnc?
Или он проверяет выходы в цикле servo thread? И чтобы получить более менее адекватную скорость нужно подымать base thread?
Вообще реально получить приемлемую скорость чтения индексной метки, без специальных скоростных энкодерных входов на самой Mesa?
Не правильные вопросы, из-за не правильного подхода.

Хотел сделать так:
tpolimer2000 писал(а): Поэтому задумался о том чтобы просто завести индексную метку в котролер, объединить его с датчиком Home через AND2. А сам LinuxCnc настроить с параметром HOME_USE_INDEX = NO, но чтобы он смотрел не на датчик Home, а на AND2 к которому подключен датчик Home и индексная метка.
Объединить датчик Home и индексную метку, через компонент AND2. Если использовать такой подход, то действительно нужен скоростной вход для индексной метки.

Нужно делать по классической схеме, сначала находим Home на большой скорости, потом уменьшаем скорость до минимумам для поиска индексной метки. При таком подходе, скорость опроса индексной метки уже не так критична.
tpolimer2000
Мастер
Сообщения: 311
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 35
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Возник вопрос по настройки индексной метки энкодера в Hal. В Mesa 7i96 есть только 1 канал энкодера, соответственно придется подключать индексную метку к обычному входу. С этим разобрался, а как настроить этот вход в hal, чтобы он работал?

Мой hal

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

net y-index-enable  <=  hm2_7i96.0.gpio.002.in
net y-index-enable  <=> pid.y.index-enable
net y-index-enable  <=>  joint.1.index-enable
В итоге получаю ошибку при загрузке из-за последней строки net y-index-enable <=> joint.1.index-enable. Сама ошибка
./7I96_GMOC.hal:156: Signal 'y-index-enable' can not add I/O pin 'joint.1.index-enable', it already has OUT pin 'hm2_7i96.0.gpio.002.in'
7364
Судя из описания joint.N.index-enable IO BIT (http://linuxcnc.org/docs/ja/html/man/man9/motion.9.html), этот пин имеет направление типа IO, как понимаю он одновременно и INT и OUT (он может как принимать значение IN, так и назначать его OUT). А hm2_7i96.0.gpio.002.in может только назначать, так как имеет направление OUT. А два OUT не возможно подключить между собой, подробнее тут - https://www.cnc-club.ru/wiki/index.php/ ... %D1%8B_hal.

Цитата из той же ссылки
Если надо соединить два пина типа out - то нужно использовать дополнительные компоненты, например компонент and2.
В описании, мы берем 2 OUT делаем их анализ и получаем 3-тий OUT, а не изменение одного из первый двух.

Есть еще какой-то вариант, он описан тут - https://forum.linuxcnc.org/24-hal-compo ... an-out-pin.

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

component io_connect;
pin io float out;
pin in float in;
function _;
license "GPLv2 or later";
;;
FUNCTION(_) { out = in; }
Его описание тут - http://www.linuxcnc.org/docs/2.8/html/hal/comp.html, похоже на программирование.

Мне кажется, что забрел не туда. Поэтому возвращаюсь к вопросу как настроить в hal индексную метку энкодера на обычный вход, чтобы она работала?
tpolimer2000
Мастер
Сообщения: 311
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 35
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

Добрый человек сделал подробное видео о Halcompile. Оставлю тут, чтобы не забыть.
Halcompile или написание собственного компонента
https://www.youtube.com/watch?v=KWyZAslu-_c

Возможно мне поможет еще и это - viewtopic.php?p=419333#p419333, https://linuxcnc.org/docs/2.8/html/man/ ... bit.9.html, viewtopic.php?p=50997#p50997. Это уже готовый компонент, чтобы не писать свой, так как c Си знаком очень плохо.
tpolimer2000
Мастер
Сообщения: 311
Зарегистрирован: 07 ноя 2018, 19:03
Репутация: 35
Настоящее имя: Александр
Откуда: Беларусь
Контактная информация:

Re: Maho 400p фрезерный станок по металлу (400x250x375)

Сообщение tpolimer2000 »

От написания своего компонента в Halcompile отказался, после просмотра кода tristate_bit, он будет идентичен - https://github.com/LinuxCNC/linuxcnc/bl ... e_bit.comp , за исключением проверки enable.

На виртуальной машине с той же версией LinuxCnc получилось менять состояние index-enable. По крайней мере он копирует значение из tristate-bit.0.in в tristate-bit.0.out.

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

loadrt tristate_bit 	count=1
addf tristate-bit.0 	servo-thread
net set.index-y.in     	tristate-bit.0.in            	parport.0.pin-11-in-not  
net set.index-y.out    	tristate-bit.0.out           	joint.1.index-enable    
net set.index-y.enb   	tristate-bit.0.enable        	joint.1.homing
Чуть позже попробую на реальном станке.
Ответить

Вернуться в «Фрезерные станки по металлам»