AG250CNC

Тяжелые фрезерные станки по металлу.
Аватара пользователя
frezeryga
Почётный участник
Почётный участник
Сообщения: 13712
Зарегистрирован: 18 авг 2013, 16:08
Репутация: 5069
Откуда: Жуковский
Контактная информация:

Re: AG250CNC

Сообщение frezeryga »

Ну на хорошем жестком станке линейка это хорошо. Но народ часто на станок из профилей линейки желает пихать.
Аватара пользователя
Lafayette
Мастер
Сообщения: 3514
Зарегистрирован: 11 фев 2017, 21:25
Репутация: 445
Настоящее имя: Михаил
Контактная информация:

Re: AG250CNC

Сообщение Lafayette »

frezeryga писал(а):Ну на хорошем жестком станке линейка это хорошо. Но народ часто на станок из профилей линейки желает пихать.
Да ладно, можно и запихнуть китайскую за 4к деревянных :D
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Вот, накропал немного. Запускаю Линукс ЦНЦ- ругается.

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

# ################################################
# THREADS
# ################################################

addf to_pci.1.update		       	servo-thread

addf motion-command-handler             servo-thread
addf motion-controller                  servo-thread
addf pid.x.do-pid-calcs 		servo-thread  
addf pid.z.do-pid-calcs 		servo-thread  
addf pid.y.do-pid-calcs 		servo-thread
addf ag250-lubricator.processing        servo-thread   



#   -------E-STOP--------
net estop-ext iocontrol.0.emc-enable-in    <=  iocontrol.0.user-enable-out


#  ---motion control signals---

net in-position                               <=  motion.in-position
net machine-is-enabled                        <=  motion.motion-enabled

# external output signals

net machine-is-enabled                            to_pci.1.pins.pin-00-out
net lubrication-spindle-head-enable               to_pci.1.pins.pin-08-out
net lubrication-rail-enable                       to_pci.1.pins.pin-09-out

# external input signals

# --- MAX-X ---
#net max-x     <=  to_pci.1.pins.pin-00-in-n

# --- MIN-X ---
#net min-x     <=  to_pci.1.pins.pin-01-in-n

# --- HOME-X ---
net home-x     <=  to_pci.1.pins.pin-02-in-n

# --- MAX-Y ---
#net max-y     <=  to_pci.1.pins.pin-03-in-n

# --- MIN-Y ---
#net min-y     <=  to_pci.1.pins.pin-04-in-n

# --- HOME-Y ---
net home-y     <=  to_pci.1.pins.pin-05-in-n

# --- MAX-Z ---
#net max-z     <=  to_pci.1.pins.pin-06-in-n

# --- MIN-Z ---
#net min-z     <=  to_pci.1.pins.pin-07-in-n

# --- HOME-Z ---
net home-z     <=  to_pci.1.pins.pin-08-in-n

net spindle-inverter-at-speed          <=  to_pci.1.pins.pin-09-in

net lubrication-rail-oil-level         <=  to_pci.1.pins.pin-10-in
net lubrication-rail-pressure  	       <=  to_pci.1.pins.pin-11-in
net lubrication-activate-request       <=  to_pci.1.pins.pin-12-in


#--------------------------------


net spindle-on => ag250-lubricator.s-spindle-on

# in sec
setp ag250-lubricator.s-lub-interval 800
setp ag250-lubricator.s-lub-work-time 15

# in sec
setp ag250-lubricator.r-lub-interval 900
# in ms
setp ag250-lubricator.r-lub-overtime 1000
setp ag250-lubricator.r-lub-etimeout 5000

net machine-is-on => ag250-lubricator.r-lub-enable
net lubrication-activate-request => ag250-lubricator.lub-request
net lubrication-rail-pressure  =>  ag250-lubricator.r-lub-pressure-sensor
net lubrication-rail-enable <= ag250-lubricator.r-lub-control
net lubrication-spindle-head-enable <= ag250-lubricator.s-lub-control



#*******************
#  AXIS X
#*******************

setp   pid.x.Pgain     [AXIS_0]P
setp   pid.x.Igain     [AXIS_0]I
setp   pid.x.Dgain     [AXIS_0]D
setp   pid.x.bias      [AXIS_0]BIAS
setp   pid.x.FF0       [AXIS_0]FF0
setp   pid.x.FF1       [AXIS_0]FF1
setp   pid.x.FF2       [AXIS_0]FF2
setp   pid.x.deadband  [AXIS_0]DEADBAND
setp   pid.x.maxoutput [AXIS_0]MAX_OUTPUT


net x-enable       => pid.x.enable
net x-output       => pid.x.output
net x-pos-cmd      => pid.x.command
net x-pos-fb       => pid.x.feedback

# --------fb--------------
setp  to_pci.1.feedback.enc_scale0 [AXIS_0]ENCODER_SCALE
net x-pos-fb       <=  to_pci.1.feedback.encoder0
net x-pos-fb       =>  axis.0.motor-pos-fb


# ------PWM Generator signals/setup--------

net x-enable     axis.0.amp-enable-out
net x-enable => to_pci.1.enable_drive


setp  to_pci.1.out_scale0 [AXIS_0]OUTPUT_SCALE

net x-output => to_pci.1.dcontrol0

net x-pos-cmd  <=  axis.0.motor-pos-cmd

# ---setup home / limit switch signals---

#net home-x     =>  axis.0.home-sw-in
#net min-x     =>  axis.0.neg-lim-sw-in
#net max-x     =>  axis.0.pos-lim-sw-in



#*******************
#  AXIS Y
#*******************

setp   pid.y.Pgain     [AXIS_1]P
setp   pid.y.Igain     [AXIS_1]I
setp   pid.y.Dgain     [AXIS_1]D
setp   pid.y.bias      [AXIS_1]BIAS
setp   pid.y.FF0       [AXIS_1]FF0
setp   pid.y.FF1       [AXIS_1]FF1
setp   pid.y.FF2       [AXIS_1]FF2
setp   pid.y.deadband  [AXIS_1]DEADBAND
setp   pid.y.maxoutput [AXIS_1]MAX_OUTPUT


net y-enable       => pid.y.enable
net y-output       => pid.y.output
net y-pos-cmd      => pid.y.command
net y-pos-fb       => pid.y.feedback

# --------fb--------------
setp  to_pci.1.feedback.enc_scale1 [AXIS_1]ENCODER_SCALE
net y-pos-fb       <=  to_pci.1.feedback.encoder1
net y-pos-fb       =>  axis.1.motor-pos-fb


# ------PWM Generator signals/setup--------


net y-enable     axis.1.amp-enable-out

setp  to_pci.1.out_scale1 [AXIS_1]OUTPUT_SCALE

net y-output => to_pci.1.dcontrol1

net y-pos-cmd  <=  axis.1.motor-pos-cmd


# ---setup home / limit switch signals---

#net home-y     =>  axis.1.home-sw-in
#net min-y     =>  axis.1.neg-lim-sw-in
#net max-y     =>  axis.1.pos-lim-sw-in



#*******************
#  AXIS Z
#*******************

setp   pid.z.Pgain     [AXIS_2]P
setp   pid.z.Igain     [AXIS_2]I
setp   pid.z.Dgain     [AXIS_2]D
setp   pid.z.bias      [AXIS_2]BIAS
setp   pid.z.FF0       [AXIS_2]FF0
setp   pid.z.FF1       [AXIS_2]FF1
setp   pid.z.FF2       [AXIS_2]FF2
setp   pid.z.deadband  [AXIS_2]DEADBAND
setp   pid.z.maxoutput [AXIS_2]MAX_OUTPUT


net z-enable       => pid.z.enable
net z-output       => pid.z.output
net z-pos-cmd      => pid.z.command
net z-pos-fb       => pid.z.feedback

# --------fb--------------
setp  to_pci.1.feedback.enc_scale2 [AXIS_2]ENCODER_SCALE
net z-pos-fb       <=  to_pci.1.feedback.encoder2
net z-pos-fb       =>  axis.2.motor-pos-fb


# ------PWM Generator signals/setup--------

net z-enable     axis.2.amp-enable-out
setp  to_pci.1.out_scale2 [AXIS_2]OUTPUT_SCALE
net z-output => to_pci.1.dcontrol2
net z-pos-cmd  <=  axis.2.motor-pos-cmd

# ---setup home / limit switch signals---

#net home-z     =>  axis.2.home-sw-in
#net min-z     =>  axis.2.neg-lim-sw-in
#net max-z     =>  axis.2.pos-lim-sw-in




#----------- SIGNALS ---------------
#net buton_test => to_pci.1.feedback.index_en0
net buton_test => to_pci.1.pins.pin-01-out[code]
[/code]
Последний раз редактировалось botcman 19 мар 2017, 17:57, всего редактировалось 2 раза.
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Части файла, касающиеся смазки брал из Хал файла аналогичного станка. Там есть еще компоненты смазки, переключения КПП. Подскажите, как эти компоненты привязать к моему Хал файлу. Компонент смазки лежит в той же папке, что и Хал и Ини файлы.
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Вот, ругается.
Вложения
фото14.png (2040 просмотров) <a class='original' href='./download/file.php?id=106486&mode=view' target=_blank>Загрузить оригинал (202.37 КБ)</a>
Фрост
Мастер
Сообщения: 393
Зарегистрирован: 28 окт 2013, 00:18
Репутация: 23
Настоящее имя: Сергей
Контактная информация:

Re: AG250CNC

Сообщение Фрост »

а что это за модуль? ag250-lubricator
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Модуль смазки направляющих и шпиндельной бабки.
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Вот

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

component ag250_lubricator "AG 250 lubricator";

description """
   Usage: loadrt ag250_lubricator >
""";

pin in bit s_spindle_on = 0 "Spindle on signal";
pin in bit r_lub_enable = 0 "Rail lubrication enable";

pin in bit lub_request = 0 "Manual request lubrication";
pin in bit r_lub_pressure_sensor = 0 "Pressure sensor input";

pin out bit r_lub_control = 0 "Pump control out rail";
pin out bit s_lub_control = 0 "Pump control out spindle";

param rw u32 r_lub_interval = 1000  "Rail lubricant interval (sec)";
param rw u32 r_lub_overtime = 1000  "Rail lubricant overtime (ms)";
param rw u32 r_lub_etimeout = 5000  "Rail error timeout (ms)";

param rw u32 s_lub_interval = 600  "Spindle lubricant interval (sec)";
param rw u32 s_lub_work_time = 15  "Spindle lubricant work time (sec)";


option singleton;
option extra_setup;
option extra_cleanup;

function processing "Main function";

license "GPL";
author "Artsemi Veras";

;;



EXTRA_SETUP()
{
    return 0;
}

EXTRA_CLEANUP()
{
}

int s_lub_state=0;
int s_lub_time=0;

int r_lub_state=0;
int r_lub_time=0;


int r_error=0;
int r_overtime=0;
//int r_time1=0;

FUNCTION(processing)
{
    
/*SPINDLE LUBRICATOR*/


    if(s_spindle_on)
    {
	s_lub_time++;


    if (s_lub_state==0)
    {
	if ((s_lub_time/1000>s_lub_interval) || (lub_request))
	{
	    s_lub_time=0;
	    s_lub_state=1;
	    s_lub_control=1;
	}

    }else
    {
	if (s_lub_time/1000>s_lub_work_time)
	{
	    s_lub_time=0;
	    s_lub_state=0;
	    s_lub_control=0;
	}
    }




    }else
    {
	s_lub_control=0;
	s_lub_state=0;
    }

/*RAIL   LUBRICATOR*/

    if (r_lub_enable==0)
    {
	r_lub_control=0;
	r_lub_state=0;
	r_overtime=0;
	r_lub_time=0;
	return ;
    }

    r_lub_time++;

    if (r_lub_state==0)
    {
	if ((r_lub_time/1000>r_lub_interval) || (lub_request))
	{
	    r_lub_state=1;
	    r_lub_time=0;
	    r_lub_control=1;
	}

    }else
    {
	
	if (r_lub_pressure_sensor) 
	{
	    r_overtime++;
	    if (r_overtime>r_lub_overtime)
	    {
		r_lub_control=0;
		r_lub_state=0;
		r_overtime=0;
		r_lub_time=0;
	    }
	}
	if (r_lub_time>r_lub_etimeout)
	{
	    r_lub_control=0;
	    r_lub_state=0;
	    r_error=1;
	    r_lub_time=0;
	    r_overtime=0;
	}

    }

}
Фрост
Мастер
Сообщения: 393
Зарегистрирован: 28 окт 2013, 00:18
Репутация: 23
Настоящее имя: Сергей
Контактная информация:

Re: AG250CNC

Сообщение Фрост »

Нет такой буквы в этом слове :D проверил у себя
т.е. нет такого стандартного модуля в Linuxcnc, это наверно самопал и его надо как-то подключать сначала, очень может быть только в dev-версии
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Черт! Что делать-то? Как по-простому запилить смазку шпиндельной бабки и направляющих? За это отвечают 2 разных масляных насоса.
Смазка шпиндельной бабки активируется с интервалом в 15минут, активируется на 10 секунд, со смазкой направляющих сложнее. Читал тут, что можно считать пробег осей и отталкиваться от этого.
Фрост
Мастер
Сообщения: 393
Зарегистрирован: 28 окт 2013, 00:18
Репутация: 23
Настоящее имя: Сергей
Контактная информация:

Re: AG250CNC

Сообщение Фрост »

А стоит считать пробег? А если например деталь мелкая и сложная, так станок и раз в 5 часов не смажется? Может лучше по таймеру тоже раз в Х минут после machine.is-on сделать и не париться с доп.модулями?
Аватара пользователя
Lafayette
Мастер
Сообщения: 3514
Зарегистрирован: 11 фев 2017, 21:25
Репутация: 445
Настоящее имя: Михаил
Контактная информация:

Re: AG250CNC

Сообщение Lafayette »

botcman писал(а):Черт! Что делать-то? Как по-простому запилить смазку шпиндельной бабки и направляющих? За это отвечают 2 разных масляных насоса.
Смазка шпиндельной бабки активируется с интервалом в 15минут, активируется на 10 секунд, со смазкой направляющих сложнее. Читал тут, что можно считать пробег осей и отталкиваться от этого.
Недавно разбирал ГФ, там смазка направляющих по паспорту при включении станка и каждый час работы, насос включается на время около 6 секунд
Фрост
Мастер
Сообщения: 393
Зарегистрирован: 28 окт 2013, 00:18
Репутация: 23
Настоящее имя: Сергей
Контактная информация:

Re: AG250CNC

Сообщение Фрост »

Мне тоже кажется так правильнее.
Использовал пример отсюда, вроде 7 страница
Вложения
Разработка_ИТ_42_на_основе_Mesa_5i20_версия_3.pdf
(172.28 КБ) 272 скачивания
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: AG250CNC

Сообщение Serg »

http://www.cnc-club.ru/forum/viewtopic.php?f=146&t=3369
Как я понимаю всё растёт из этой древней темы...
Тут вроде всё давно и подробно расписано, но никто ж не пользуется поиском... :)

Смазка шпиндельной бабки (шестерёнок и подшипников) включается одновременно со шпинделем. Какие-либо паузы и алгоритмы там не имеют смысла, ибо механически реализована подача нужного количества масла ко всем узлам, излишки тупо сливаются в исходную ёмкость.
Смазка направляющих в оригинале сделана по таймеру - раз в 15 минут, я сделал в зависимости от количества смены направлений движения по каждой оси. По пробегу не годится - можно "протереть дырку" при большом количестве коротких перемещений туда-сюда...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

По поводу смазки шпиндельной бабки- она включается периодически. Если включать ее на постоянную вместе со шпинделем, то масла просто не хватит и насос будет качать воздух. Штатный маслобак насос выкачивает секунд за 10-15.
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Вот на Чипмейкере нашел. http://www.chipmaker.ru/topic/156225/
Как его переделать , чтоб по времени включалась?
Фрост
Мастер
Сообщения: 393
Зарегистрирован: 28 окт 2013, 00:18
Репутация: 23
Настоящее имя: Сергей
Контактная информация:

Re: AG250CNC

Сообщение Фрост »

а это не смущает? :cheesy:
надо добавить в систему пакет linuxcnc-dev
чем такое решение не понравилось?

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

# --- Смазка направляющих импульсная ---
# смазка при включении длительностью 10 секунд
setp oneshot.0.width 10
net machine-is-on oneshot.0.in
net delay oneshot.0.out => or2.1.in0
net timer-delay => or2.1.in1
net bed-lube => or2.1.out
net bed-lube => to_pci.1.pins.pin-12-out

# интервал смазки 600 секунд длительностью 5 секунд
setp timedelay.0.on-delay 600
setp timedelay.0.off-delay 5
net machine-is-on => and2.4.in0
net timer-in => and2.4.in1
net timer-in-1 => and2.4.out
net timer-in-1 => timedelay.0.in
net timer-delay => timedelay.0.out
net timer-delay => not.0.in
net timer-in <= not.0.out
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Чет не видел этого решения...Подскажите теперь как его вставить в мой Хал. И можно ли на этой основе сделать компонент для смазки шпиндельной бабки?
Фрост
Мастер
Сообщения: 393
Зарегистрирован: 28 окт 2013, 00:18
Репутация: 23
Настоящее имя: Сергей
Контактная информация:

Re: AG250CNC

Сообщение Фрост »

73 сообщение, не поленись открыть pdf
если надо 2 разных процесса смазки, делать timedelay.0 и timedelay.1, ну и соответственно для них разные or2, and2 и т.д.
botcman
Мастер
Сообщения: 557
Зарегистрирован: 04 мар 2016, 20:22
Репутация: 1
Настоящее имя: Андрей
Контактная информация:

Re: AG250CNC

Сообщение botcman »

Вроде открывал, невнимательно смотрел. Завтра попробую сварганить сначала для направляющих. А можете прокомментировать как этот компонент работает? Не пойму, откуда там взялась цифра 4. Спасибо!
Ответить

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