Страница 15 из 19

Re: Смена инструмента на токарнике

Добавлено: 09 окт 2020, 00:56
Maxekb77
Я бы с 500 начал, а то факторов много

Re: Смена инструмента на токарнике

Добавлено: 09 окт 2020, 01:05
alex_sar
в какой thread добавили функцию через addf, с такой частотой и выполняется.

halcmd show покажет инфу по threads (чтобы по конфигам не лазить).

Re: Смена инструмента на токарнике

Добавлено: 09 окт 2020, 11:50
tokarka63
alex_sar писал(а): halcmd show покажет инфу по threads (чтобы по конфигам не лазить).
Во!, точно!)
Спасибо!!!)

Re: Смена инструмента на токарнике

Добавлено: 09 окт 2020, 13:08
tokarka63
В ini файле установлено SERVO_PERIOD = 1000000
через halcmd show показывает 998955
это под 1Мгц получается?
т.е. чтоб подождать секунду надо посчитать 1 000 000 попугаев!?)

Re: Смена инструмента на токарнике

Добавлено: 09 окт 2020, 15:34
Serg
это не попугаи, а наносекунды.

Re: Смена инструмента на токарнике

Добавлено: 09 окт 2020, 18:08
tokarka63
Serg писал(а): это не попугаи, а наносекунды.
Я уже понял!)
Есть ли возможность, запустить несколько таких счетчиков, с разным временем ?

loadrt timedelay count=1
addf timedelay.0 servo-thread
setp timedelay.0.on-delay 0.5 #~0.5 сек
net delaystart timedelay.0.in <= xxx.delaystart
net delaydone timedelay.0.out => xxx.delaydone

Re: Смена инструмента на токарнике

Добавлено: 14 окт 2020, 12:32
tokarka63
Можно считать, что револьверку победил!)
Тест в несколько часов, не выявил глюков!)
СИ_шный код
(для просмотра содержимого нажмите на ссылку)
component revolverka;

pin out bit delaystart = 0; //0,15сек
pin in bit delaydone = 0;
pin out bit delaystart2 = 0; //1сек
pin in bit delaydone2 = 0;
pin out bit delaystart3 = 0; //2сек
pin in bit delaydone3 = 0;

pin in bit toolchange ; // смена инструмент tool-change команда на смену инстркмента 1 или 0 >> от чпу
pin in s32 toolnumber ; // установленный инструмент tool-number >> от чпу
pin out bit toolchanged ; // окончание смены инструмента tool-changed << в чпу
pin in s32 old; // установленный инструмент tool-oldnumber >> от чпу
pin out s32 position = 0; // инструмент по датчикам
pin out s32 tool = 0;
pin out float e = 0;
pin out float a = 0;



pin out bit moto=0; //out02 крутим назад, если 1 крутим вперед

pin in bit opto1 = 0; // датчик1 in10
pin in bit opto2 = 0; // датчик2 in11
pin in bit opto3 = 0; // датчик3 in12
pin in bit metka = 0; // датчик4 in13


option singleton yes;
function _;
author "WV";
license "GPL";
;;

// rtapi_print_msg(RTAPI_MSG_ERR, "Error - opto inputs do not match truth table");

FUNCTION(_)
{



if(!opto1 && !opto2 && opto3 && metka==0)
position = 1;
else if(!opto1 && opto2 && !opto3 && metka==0)
position = 2;
else if(!opto1 && opto2 && opto3 && metka==0)
position = 3;
else if(opto1 && !opto2 && !opto3 && metka==0)
position = 4;
else if(opto1 && !opto2 && opto3 && metka==0)
position = 5;
else if(opto1 && opto2 && !opto3 && metka==0)
position = 6;


if (toolchange)
{tool=toolnumber;}

switch ( tool )
{

case 1:

if(position !=1 )
{
moto = 1; toolchanged = 0; //вперед
}


if (position==1 && metka==1 && e==0) //реверс
{
delaystart = 1; //0,15 sec антидребезг
if(delaydone==1)
{
delaystart = 0;
if (position==1 && metka==1)
{ moto = 0; e=1; }

}
}

if (e==1)
{
if (position==1 && metka==0 ) //проверка после реверса
{
if (a==0)
{
delaystart2 = 1; //1sec
a=1;
}
if(delaydone2)
{
delaystart2 = 0;
}
if (position==1 && metka==0 && delaydone2==0 )
{
delaystart3 = 1; //2sec

if(delaydone3)
{
delaystart3 = 0;
toolchanged = 1; //инструмент готов на чпу
e=0;
a=0;
}
}
}
}


break;

case 2:

if(position !=2 )
{
moto = 1; toolchanged = 0; //вперед
}


if (position==2 && metka==1 && e==0) //реверс
{
delaystart = 1; //0,15 sec антидребезг
if(delaydone==1)
{
delaystart = 0;
if (position==2 && metka==1)
{ moto = 0; e=1; }

}
}

if (e==1)
{
if (position==2 && metka==0 ) //проверка после реверса
{
if (a==0)
{
delaystart2 = 1; //1sec
a=1;
}
if(delaydone2)
{
delaystart2 = 0;
}
if (position==2 && metka==0 && delaydone2==0 )
{
delaystart3 = 1; //2sec

if(delaydone3)
{
delaystart3 = 0;
toolchanged = 1; //инструмент готов на чпу
e=0;
a=0;
}
}
}
}


break;

case 3:

if(position !=3 )
{
moto = 1; toolchanged = 0; //вперед
}


if (position==3 && metka==1 && e==0) //реверс
{
delaystart = 1; //0,15 sec антидребезг
if(delaydone==1)
{
delaystart = 0;
if (position==3 && metka==1)
{ moto = 0; e=1; }

}
}

if (e==1)
{
if (position==3 && metka==0 ) //проверка после реверса
{
if (a==0)
{
delaystart2 = 1; //1sec
a=1;
}
if(delaydone2)
{
delaystart2 = 0;
}
if (position==3 && metka==0 && delaydone2==0 )
{
delaystart3 = 1; //2sec

if(delaydone3)
{
delaystart3 = 0;
toolchanged = 1; //инструмент готов на чпу
e=0;
a=0;
}
}
}
}


break;

case 4:

if(position !=4 )
{
moto = 1; toolchanged = 0; //вперед
}


if (position==4 && metka==1 && e==0) //реверс
{
delaystart = 1; //0,15 sec антидребезг
if(delaydone==1)
{
delaystart = 0;
if (position==4 && metka==1)
{ moto = 0; e=1; }

}
}

if (e==1)
{
if (position==4 && metka==0 ) //проверка после реверса
{
if (a==0)
{
delaystart2 = 1; //1sec
a=1;
}
if(delaydone2)
{
delaystart2 = 0;
}
if (position==4 && metka==0 && delaydone2==0 )
{
delaystart3 = 1; //2sec

if(delaydone3)
{
delaystart3 = 0;
toolchanged = 1; //инструмент готов на чпу
e=0;
a=0;
}
}
}
}


break;

case 5:

if(position !=5 )
{
moto = 1; toolchanged = 0; //вперед
}


if (position==5 && metka==1 && e==0) //реверс
{
delaystart = 1; //0,15 sec антидребезг
if(delaydone==1)
{
delaystart = 0;
if (position==5 && metka==1)
{ moto = 0; e=1; }

}
}

if (e==1)
{
if (position==5 && metka==0 ) //проверка после реверса
{
if (a==0)
{
delaystart2 = 1; //1sec
a=1;
}
if(delaydone2)
{
delaystart2 = 0;
}
if (position==5 && metka==0 && delaydone2==0 )
{
delaystart3 = 1; //2sec

if(delaydone3)
{
delaystart3 = 0;
toolchanged = 1; //инструмент готов на чпу
e=0;
a=0;
}
}
}
}


break;

case 6:

if(position !=6 )
{
moto = 1; toolchanged = 0; //вперед
}


if (position==6 && metka==1 && e==0) //реверс
{
delaystart = 1; //0,15 sec антидребезг
if(delaydone==1)
{
delaystart = 0;
if (position==6 && metka==1)
{ moto = 0; e=1; }

}
}

if (e==1)
{
if (position==6 && metka==0 ) //проверка после реверса
{
if (a==0)
{
delaystart2 = 1; //1sec
a=1;
}
if(delaydone2)
{
delaystart2 = 0;
}
if (position==6 && metka==0 && delaydone2==0 )
{
delaystart3 = 1; //2sec

if(delaydone3)
{
delaystart3 = 0;
toolchanged = 1; //инструмент готов на чпу
e=0;
a=0;
}
}
}
}


break;

}
}
custom.hal
(для просмотра содержимого нажмите на ссылку)
loadrt revolverka
addf revolverka servo-thread

loadrt timedelay count=4
addf timedelay.0 servo-thread
setp timedelay.0.on-delay 0.15

net delaystart timedelay.0.in <= revolverka.delaystart
net delaydone timedelay.0.out => revolverka.delaydone


addf timedelay.2 servo-thread
setp timedelay.2.on-delay 1

net delaystart2 timedelay.2.in <= revolverka.delaystart2
net delaydone2 timedelay.2.out => revolverka.delaydone2

addf timedelay.3 servo-thread
setp timedelay.3.on-delay 2

net delaystart3 timedelay.3.in <= revolverka.delaystart3
net delaydone3 timedelay.3.out => revolverka.delaydone3







net tool-change iocontrol.0.tool-change => revolverka.toolchange
net tool-changed iocontrol.0.tool-changed <= revolverka.toolchanged
net tool-number iocontrol.0.tool-prep-number => revolverka.toolnumber
net tool-oldnumber iocontrol.0.tool-number => revolverka.old
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared

net moto revolverka.moto => parport.0.pin-06-out

net opto1 revolverka.opto1 <= parport.0.pin-11-in
net opto2 revolverka.opto2 <= parport.0.pin-12-in
net opto3 revolverka.opto3 <= parport.0.pin-13-in
net metka revolverka.metka <= parport.0.pin-15-in
Диск позиции
Изображение
Изображение
Изображение
Изображение
Испытательный стенд)
Изображение
Изображение

Re: Смена инструмента на токарнике

Добавлено: 10 ноя 2020, 22:33
aftaev
Выявилась проблемка. Иногда револьверка зажимает не тот инструмент
Револьверная головка уг9326 может перещелкнуться на другой инструмент, или магнит своим магнитным полем включит рядом стоящий геркон, или дребезг контактов геркона.... или луна повлияет.
:attention: Что приводит к неправильному установленному инструменту в револьверке.
В ладдере нужно добавить проверку инструмента после зажима барабана.

Так Ладер выглядит сейчас.
Снимок.png (1928 просмотров) <a class='original' href='./download/file.php?id=188590&sid=86b4947849f3960dd54a5d2f1e03973b&mode=view' target=_blank>Загрузить оригинал (49.98 КБ)</a>
Такая схема будет рабочей?
01.png (1928 просмотров) <a class='original' href='./download/file.php?id=188591&sid=86b4947849f3960dd54a5d2f1e03973b&mode=view' target=_blank>Загрузить оригинал (59.96 КБ)</a>
custom.rar
(1.63 КБ) 132 скачивания

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 10:58
aftaev
Сегодня поймал проблему.
Стоял 5й инструмент. При смене на 7й, барабан дернулся не провернулся, сразу же затянулся. В револьверке остался стоять 5й инструмент.
В строке состояния внизу LinuxCNC, написано Инструмент 7, по факту в револьверке 5й.

Если откинуть разъем у револьверки для проверки на помехи, то никаких сигналов нет. Проблема похоже механическая. Происходит это когда револьверка уг9326 какое то время(ночь) постояла. Тогда барабан как бы с большим усилием сдергивается.
Если правильно понимаю, то при срывании барабана геркон дребезжит, срабатывает. Ладер это принимает как нашли нужный инструмент, тут же включает реверс и затягивает барабан.

:attention: В Ладере должна быть проверка на нужный инструмент в конце всей логики.
tool7.png (1887 просмотров) <a class='original' href='./download/file.php?id=188593&sid=86b4947849f3960dd54a5d2f1e03973b&mode=view' target=_blank>Загрузить оригинал (71.7 КБ)</a>

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 12:47
Maxekb77
А denounce прописать ?

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 13:04
aftaev
Maxekb77 писал(а): А denounce прописать ?
Это шо такое? search.php?keywords=denounce*

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 13:11
alex_sar
http://linuxcnc.org/docs/html/man/man9/debounce.9.html

геркон в него завести
а с выхода debouncе дальше.

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 13:22
Maxekb77
aftaev писал(а): 11 ноя 2020, 13:04 Это шо такое? search.php?keywords=denounce*
iPhone умничает ;)
Мне на дупломатике помогло, главно не перебрать а то неплохой шпиндель получается ;)

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 15:26
tokarka63
aftaev писал(а): 10 ноя 2020, 22:33 Выявилась проблемка. Иногда револьверка зажимает не тот инструмент
Револьверная головка уг9326 может перещелкнуться на другой инструмент, или магнит своим магнитным полем включит рядом стоящий геркон, или дребезг контактов геркона.... или луна повлияет.
:attention: Что приводит к неправильному установленному инструменту в револьверке.
В ладдере нужно добавить проверку инструмента после зажима барабана.

Так Ладер выглядит сейчас.
Снимок.png

Такая схема будет рабочей?
01.png

custom.rar
А почему "Останов" а не повторный запуск процедуры?

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 18:15
aftaev
tokarka63 писал(а): А почему "Останов" а не повторный запуск процедуры?
Можно и повтор раза два, потом останов. В моем случае дребезг контактов геркона, хоть сколько раз делай ставило не тот инструмент ;)
Геркон поменял, все пучком заработало.

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 19:14
tokarka63
Антидребезг все равно нужен, история может повториться, как обычно в самый не подходящий момент.

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 19:20
aftaev
tokarka63 писал(а): Антидребезг все равно нужен, история может повториться, как обычно в самый не подходящий момент.
Не нужен антидребезг. Есть куча вариантов когда револьверка может поймать не тот инструмент.
Нужна проверка в конце цикла, что стоит нужный инструмент.

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 20:11
tokarka63
aftaev писал(а): Есть куча вариантов когда револьверка может поймать не тот инструмент.
А с этого места по подробнее!!!)
С револьверкой никогда прежде не работал, так что, очень интересны возможные проблемы)

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 20:27
aftaev
tokarka63 писал(а): А с этого места по подробнее!!!)
С револьверкой никогда прежде не работал, так что, очень интересны возможные проблемы)
У каждой модели свой принцип.
Работал много с уг9326, другие настраивал. У уг9326 принцип: при вращении она щелкает на каждом инструменте, как храповик. При реверсе затягиветя. Если быстро реверс не сработал, может перескочить на другой инструмент и зажмет не верный. Датчиком номера инструмента служит магнит + 8 герконов. Магнит в пластмастке может разболтаться. В моей сдох геркон.

Re: Смена инструмента на токарнике

Добавлено: 11 ноя 2020, 21:23
Maxekb77
aftaev писал(а): Не нужен антидребезг. Есть куча вариантов когда револьверка может поймать не тот инструмент.
Нужна проверка в конце цикла, что стоит нужный инструмент.
Одно другого не исключает , а по хорошему оба надо делать.