Модернизация токарного станка

Токарные станки с ЧПУ.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

Итак.. что-то я создал. Вопромс номер раз, я так и не знаю какой Firmware для 5i20 выбрать..
выбрал это SVST8_4. теперь куда копать?

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

loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hostmot2
loadrt hm2_pci config="firmware=hm2/5i20/SVST8_4.BIT num_encoders=3 num_pwmgens=2 num_stepgens=0" 
setp     hm2_5i20.0.pwmgen.pwm_frequency 100000
setp     hm2_5i20.0.pwmgen.pdm_frequency 100000
setp     hm2_5i20.0.watchdog.timeout_ns 10000000
loadrt abs names=abs.0
loadrt lowpass names=
loadrt scale names=scale.0
loadrt near

addf hm2_5i20.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
loadrt pid num_chan=2
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
alias pin    pid.1.Pgain         pid.x.Pgain
alias pin    pid.1.Igain         pid.x.Igain
alias pin    pid.1.Dgain         pid.x.Dgain
alias pin    pid.1.bias          pid.x.bias
alias pin    pid.1.FF0           pid.x.FF0
alias pin    pid.1.FF1           pid.x.FF1
alias pin    pid.1.FF2           pid.x.FF2
alias pin    pid.1.deadband      pid.x.deadband
alias pin    pid.1.maxoutput     pid.x.maxoutput
alias pin    pid.1.enable        pid.x.enable
alias pin    pid.1.command       pid.x.command
alias pin    pid.1.feedback      pid.x.feedback
alias pin    pid.1.output        pid.x.output
alias pin    pid.1.index-enable  pid.x.index-enable

addf abs.0 servo-thread
addf scale.0 servo-thread
addf near.0                   servo-thread
addf hm2_5i20.0.write         servo-thread
addf hm2_5i20.0.pet_watchdog  servo-thread

# external output signals



# external input signals



#*******************
#  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-index-enable  <=>  pid.x.index-enable

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

setp   hm2_5i20.0.pwmgen.00.output-type 1
setp   hm2_5i20.0.pwmgen.00.scale  [AXIS_0]OUTPUT_SCALE

net xenable     => pid.x.enable
net xoutput     pid.x.output           => hm2_5i20.0.pwmgen.00.value
net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
net xenable     axis.0.amp-enable-out  => hm2_5i20.0.pwmgen.00.enable

# ---Encoder feedback signals/setup---

setp    hm2_5i20.0.encoder.02.counter-mode 0
setp    hm2_5i20.0.encoder.02.filter 1
setp    hm2_5i20.0.encoder.02.index-invert 0
setp    hm2_5i20.0.encoder.02.index-mask 0
setp    hm2_5i20.0.encoder.02.index-mask-invert 0
setp    hm2_5i20.0.encoder.02.scale  [AXIS_0]INPUT_SCALE

net xpos-fb               <=  hm2_5i20.0.encoder.02.position
net xpos-fb               =>  pid.x.feedback
net xpos-fb               =>  axis.0.motor-pos-fb
net x-index-enable    axis.0.index-enable  <=>  hm2_5i20.0.encoder.02.index-enable

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

net x-home-sw     =>  axis.0.home-sw-in
net x-neg-limit     =>  axis.0.neg-lim-sw-in
net x-pos-limit     =>  axis.0.pos-lim-sw-in

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

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

net z-home-sw     =>  axis.2.home-sw-in
net z-neg-limit     =>  axis.2.neg-lim-sw-in
net z-pos-limit     =>  axis.2.pos-lim-sw-in

#*******************
#  SPINDLE S
#*******************

# ---setup spindle control signals---

net spindle-vel-cmd-rps    <=  motion.spindle-speed-out-rps
net spindle-vel-cmd        <=  motion.spindle-speed-out
net spindle-enable         <=  motion.spindle-on
net spindle-cw             <=  motion.spindle-forward
net spindle-ccw            <=  motion.spindle-reverse
net spindle-brake          <=  motion.spindle-brake
net spindle-revs           =>  motion.spindle-revs
net spindle-at-speed       =>  motion.spindle-at-speed
net spindle-vel-fb         =>  motion.spindle-speed-in
net spindle-index-enable  <=>  motion.spindle-index-enable

# ---Setup spindle at speed signals---

sets spindle-at-speed true

#******************************
# connect miscellaneous signals
#******************************

#  ---coolant signals---

net coolant-mist      <=  iocontrol.0.coolant-mist
net coolant-flood     <=  iocontrol.0.coolant-flood

#  ---probe signal---

net probe-in     =>  motion.probe-input

# ---jog button signals---

net jog-speed            halui.jog-speed 
sets    jog-speed 1.000000
net joint-select-a         halui.joint.0.select
net joint-select-c         halui.joint.2.select
net jog-selected-pos     halui.jog.selected.plus
net jog-selected-neg     halui.jog.selected.minus
net spindle-manual-cw     halui.spindle.forward
net spindle-manual-ccw    halui.spindle.reverse
net spindle-manual-stop   halui.spindle.stop

#  ---digital in / out signals---

#  ---estop signals---

net estop-out     <=  iocontrol.0.user-enable-out
net estop-out     =>  iocontrol.0.emc-enable-in

#  ---manual tool change signals---

loadusr -W hal_manualtoolchange
net tool-change-request     iocontrol.0.tool-change       =>  hal_manualtoolchange.change
net tool-change-confirmed   iocontrol.0.tool-changed      <=  hal_manualtoolchange.changed
net tool-number             iocontrol.0.tool-prep-number  =>  hal_manualtoolchange.number
net tool-prepare-loopback   iocontrol.0.tool-prepare      =>  iocontrol.0.tool-prepared

И вот это

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

[EMC]
MACHINE = sp2
DEBUG = 0

[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/dmaster/emc2/nc_files
PYVCP = custompanel.xml
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
LATHE = 1
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.250000
MAX_LINEAR_VELOCITY = 1.000000
MIN_LINEAR_VELOCITY = 0.010000
DEFAULT_ANGULAR_VELOCITY = 0.250000
MAX_ANGULAR_VELOCITY = 1.000000
MIN_ANGULAR_VELOCITY = 0.010000
EDITOR = gedit
GEOMETRY = xyz

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = emc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000

# [HOSTMOT2]
# This is for info only
# DRIVER0=hm2_pci
# BOARD0=5i20
# CONFIG0="firmware=hm2/5i20/SVST8_4.BIT num_encoders=3 num_pwmgens=2 num_stepgens=0" 

[HAL]
HALUI = halui
HALFILE = sp2.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal

[HALUI]
MDI_COMMAND = G0 G53 Z0
MDI_COMMAND = G28
MDI_COMMAND = G92 X0
MDI_COMMAND = G92 Y0
MDI_COMMAND = G92 Z0
MDI_COMMAND = G92.1

[TRAJ]
AXES = 3
COORDINATES = X Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 0.17
MAX_LINEAR_VELOCITY = 1.67
POSITION_FILE = position.txt

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
TOOLCHANGE_WITH_SPINDLE_ON = 1

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.005
MIN_FERROR = 0.0005
MAX_VELOCITY = 1.667
MAX_ACCELERATION = 2.0
P = 1.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
OUTPUT_SCALE = 1.0
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 10.0
INPUT_SCALE = 800.0
MIN_LIMIT = -8.0
MAX_LIMIT = 8.0
HOME_OFFSET = 0.0

#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.005
MIN_FERROR = 0.0005
MAX_VELOCITY = 1.67
MAX_ACCELERATION = 2.0
P = 1.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
OUTPUT_SCALE = 1.0
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 10.0
INPUT_SCALE = 1000.0
MIN_LIMIT = -4.0
MAX_LIMIT = 4.0
HOME_OFFSET = 0.0

#********************
# Spindle 
#********************
[SPINDLE_9]
MAX_VELOCITY = 1.67
MAX_ACCELERATION = 2
OUTPUT_SCALE = 1
OUTPUT_OFFSET = 0
MAX_OUTPUT = 10
INPUT_SCALE = 0
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

А почему ось Z не настроена?
По прошивке, в этой прошивке можно управлять до 4 серв с энкодерами и 4 шаговиков. В принципе, подойдет, всеравно половину использовать не будем.

Лучше по-максимуму настроить через pncconf, а потом перейти к ручной правке, т.к. потом исправить через pncconf будет нельзя.
Настраивай ось Z и тестируй.
Да еще можешь настроить СОЖ и остальные пины, если они есть в списке.

И давай пиши по новой, что будем контролировать и как этим управлять (кнопками, Gкодом или вместе со шпинделем и прочим).
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

Итак. управляться будет :
1.X координата :
-привод
-энкодер
-концевих дом
- выход на 0 метку датчика при выходе в дом
-аварийный концевик
2. Z координата :
-привод
-энкодер
-концевих дом
- выход на 0 метку датчика при выходе в дом
-аварийный концевик
3 Шпиндель (как уже писалось, сам двигатель по скорости не управляется. Скорость задается выбором передачи с помошью гидромуфт) ... вращение задается из кода функцией S ( s1 = 100 об s2 = 180 итд)
-Управление гидромуфтами
-энкодер
-тормоз
-медленный реверс
4 зажатие, разжатие патрона
5 сож
6 смазка
7 смена инструмента
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Dmaster писал(а):- выход на 0 метку датчика при выходе в дом
Т.е. после поиска дома идем на определенное место?
Dmaster писал(а):-энкодер
-концевих дом
У энкодера нет третьего выхода? Или концевик точнее?

Dmaster писал(а):-Управление гидромуфтами
...
-тормоз
-медленный реверс
4 зажатие, разжатие патрона
...
6 смазка
Это все, управляется отдельными кнопками?
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

прошу прощения.. неясно выразился))
- выход на 0 метку датчика при выходе в дом .. это когда ось при движении наезжает на концевик Home ,
то после на низких оборотах ось вращается до того момента, как на датчике сработает 0 метка .. тот самый 3 выход)
-гидромуфтами придется рулить из программы

а вот зажатие, и разжатие патрона должгно быть и с кнопок и по программе
5 сож и с кнопки и по программе
6 смазка автоматически по времени
7 смена инструмента( если возможно, то и с пульта и по программе)
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Dmaster писал(а):прошу прощения.. неясно выразился))- выход на 0 метку датчика при выходе в дом .. это когда ось при движении наезжает на концевик Home , то после на низких оборотах ось вращается до того момента, как на датчике сработает 0 метка .. тот самый 3 выход)
А концевик обязательно использовать? Нельзя просто ехать до метки 0, а потом вернуться и медленно ее уточнить?
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

неа... пока он едет до концевика, он сотню другую раз проедет 0 метку на датчике... это не сложно настроить в pncconf.. там есть все настройки.. и в какую сторону крутиться после наезда на концевик Home и сколько 0 меток проехать после наезда ( обычно ниодной) и в какую сторону искать)

Вот что у меня получилось во второй раз

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

[EMC]
MACHINE = sp3
DEBUG = 0

[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/dmaster/emc2/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
LATHE = 1
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 0.250000
MAX_LINEAR_VELOCITY = 1.000000
MIN_LINEAR_VELOCITY = 0.010000
DEFAULT_ANGULAR_VELOCITY = 0.250000
MAX_ANGULAR_VELOCITY = 1.000000
MIN_ANGULAR_VELOCITY = 0.010000
EDITOR = gedit
GEOMETRY = xyz

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = emc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000

# [HOSTMOT2]
# This is for info only
# DRIVER0=hm2_pci
# BOARD0=5i20
# CONFIG0="firmware=hm2/5i20/SVST8_4.BIT num_encoders=3 num_pwmgens=2 num_stepgens=0" 

[HAL]
HALUI = halui
HALFILE = sp3.hal
SHUTDOWN = shutdown.hal

[HALUI]

[TRAJ]
AXES = 3
COORDINATES = X Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.33
MAX_LINEAR_VELOCITY = 33.33
POSITION_FILE = position.txt

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
TOOLCHANGE_WITH_SPINDLE_ON = 1

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.005
MIN_FERROR = 0.0005
MAX_VELOCITY = 33.3333333333
MAX_ACCELERATION = 2.0
P = 1.0
I = 1.0
D = 0.0
FF0 = 2.0
FF1 = 3.0
FF2 = 4.0
BIAS = 0.0
DEADBAND = 0.0004
OUTPUT_SCALE = 1.0
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 10.0
INPUT_SCALE = 1000.0
MIN_LIMIT = -0.001
MAX_LIMIT = 8.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.050000
HOME_LATCH_VEL = -0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = YES
HOME_SEQUENCE = 1

#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.005
MIN_FERROR = 0.0005
MAX_VELOCITY = 1.67
MAX_ACCELERATION = 2.0
P = 1.0
I = 0.0
D = 0.0
FF0 = 1.0
FF1 = 2.0
FF2 = 3.0
BIAS = 0.0
DEADBAND = 0.0
OUTPUT_SCALE = 1.0
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 10.0
INPUT_SCALE = 100.0
MIN_LIMIT = -4.0
MAX_LIMIT = 0.001
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.050000
HOME_LATCH_VEL = -0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0

#********************
# Spindle 
#********************
[SPINDLE_9]
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 2.0
OUTPUT_SCALE = 1.0
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 10.0
INPUT_SCALE = 200.0
и это

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

loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hostmot2
loadrt hm2_pci config="firmware=hm2/5i20/SVST8_4.BIT num_encoders=3 num_pwmgens=2 num_stepgens=0" 
setp     hm2_5i20.0.pwmgen.pwm_frequency 100000
setp     hm2_5i20.0.pwmgen.pdm_frequency 100000
setp     hm2_5i20.0.watchdog.timeout_ns 10000000
loadrt abs names=abs.0
loadrt charge_pump
loadrt near

addf charge-pump servo-thread
addf hm2_5i20.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
loadrt pid num_chan=3
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf pid.2.do-pid-calcs servo-thread
alias pin    pid.1.Pgain         pid.x.Pgain
alias pin    pid.1.Igain         pid.x.Igain
alias pin    pid.1.Dgain         pid.x.Dgain
alias pin    pid.1.bias          pid.x.bias
alias pin    pid.1.FF0           pid.x.FF0
alias pin    pid.1.FF1           pid.x.FF1
alias pin    pid.1.FF2           pid.x.FF2
alias pin    pid.1.deadband      pid.x.deadband
alias pin    pid.1.maxoutput     pid.x.maxoutput
alias pin    pid.1.enable        pid.x.enable
alias pin    pid.1.command       pid.x.command
alias pin    pid.1.feedback      pid.x.feedback
alias pin    pid.1.output        pid.x.output
alias pin    pid.1.index-enable  pid.x.index-enable

alias pin    pid.2.Pgain         pid.z.Pgain
alias pin    pid.2.Igain         pid.z.Igain
alias pin    pid.2.Dgain         pid.z.Dgain
alias pin    pid.2.bias          pid.z.bias
alias pin    pid.2.FF0           pid.z.FF0
alias pin    pid.2.FF1           pid.z.FF1
alias pin    pid.2.FF2           pid.z.FF2
alias pin    pid.2.deadband      pid.z.deadband
alias pin    pid.2.maxoutput     pid.z.maxoutput
alias pin    pid.2.enable        pid.z.enable
alias pin    pid.2.command       pid.z.command
alias pin    pid.2.feedback      pid.z.feedback
alias pin    pid.2.output        pid.z.output
alias pin    pid.2.index-enable  pid.z.index-enable

addf abs.0 servo-thread
addf near.0                   servo-thread
addf hm2_5i20.0.write         servo-thread
addf hm2_5i20.0.pet_watchdog  servo-thread

# external output signals


# --- SPINDLE-ENABLE ---
setp    hm2_5i20.0.gpio.040.is_output true
net spindle-enable     =>  hm2_5i20.0.gpio.040.out
# --- SPINDLE-BRAKE ---
setp    hm2_5i20.0.gpio.041.is_output true
net spindle-brake     =>  hm2_5i20.0.gpio.041.out
# --- COOLANT-FLOOD ---
setp    hm2_5i20.0.gpio.042.is_output true
net coolant-flood     =>  hm2_5i20.0.gpio.042.out
# --- ENABLE ---
setp    hm2_5i20.0.gpio.043.is_output true
net enable     =>  hm2_5i20.0.gpio.043.out
# --- SPINDLE-CCW ---
setp    hm2_5i20.0.gpio.044.is_output true
net spindle-ccw     =>  hm2_5i20.0.gpio.044.out
# --- ESTOP-OUT ---
setp    hm2_5i20.0.gpio.045.is_output true
net estop-out     =>  hm2_5i20.0.gpio.045.out
# --- CHARGE-PUMP ---
setp    hm2_5i20.0.gpio.046.is_output true
net charge-pump     =>  hm2_5i20.0.gpio.046.out

# external input signals


# --- BOTH-Y ---
net both-y     <=  hm2_5i20.0.gpio.012.in
# --- BOTH-X ---
net both-x     <=  hm2_5i20.0.gpio.013.in
# --- JOG-X-POS ---
net jog-x-pos     <=  hm2_5i20.0.gpio.018.in
# --- JOG-X-NEG ---
net jog-x-neg     <=  hm2_5i20.0.gpio.019.in
# --- JOG-Z-POS ---
net jog-z-pos     <=  hm2_5i20.0.gpio.020.in
# --- JOG-Z-NEG ---
net jog-z-neg     <=  hm2_5i20.0.gpio.021.in
# --- SPINDLE-MANUAL-CCW ---
net spindle-manual-ccw     <=  hm2_5i20.0.gpio.022.in
# --- HOME-X ---
net home-x     <=  hm2_5i20.0.gpio.023.in
# --- HOME-Y ---
net home-y     <=  hm2_5i20.0.gpio.024.in
# --- HOME-Z ---
net home-z     <=  hm2_5i20.0.gpio.025.in
# --- ESTOP-EXT ---
net estop-ext     <=  hm2_5i20.0.gpio.026.in

#*******************
#  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-index-enable  <=>  pid.x.index-enable

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

setp   hm2_5i20.0.pwmgen.01.output-type 1
setp   hm2_5i20.0.pwmgen.01.scale  [AXIS_0]OUTPUT_SCALE

net xenable     => pid.x.enable
net xoutput     pid.x.output           => hm2_5i20.0.pwmgen.01.value
net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
net xenable     axis.0.amp-enable-out  => hm2_5i20.0.pwmgen.01.enable

# ---Encoder feedback signals/setup---

setp    hm2_5i20.0.encoder.01.counter-mode 0
setp    hm2_5i20.0.encoder.01.filter 1
setp    hm2_5i20.0.encoder.01.index-invert 0
setp    hm2_5i20.0.encoder.01.index-mask 0
setp    hm2_5i20.0.encoder.01.index-mask-invert 0
setp    hm2_5i20.0.encoder.01.scale  [AXIS_0]INPUT_SCALE

net xpos-fb               <=  hm2_5i20.0.encoder.01.position
net xpos-fb               =>  pid.x.feedback
net xpos-fb               =>  axis.0.motor-pos-fb
net x-index-enable    axis.0.index-enable  <=>  hm2_5i20.0.encoder.01.index-enable

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

net home-x     =>  axis.0.home-sw-in
net both-x     =>  axis.0.neg-lim-sw-in
net both-x     =>  axis.0.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-index-enable  <=>  pid.z.index-enable

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

setp   hm2_5i20.0.pwmgen.00.output-type 1
setp   hm2_5i20.0.pwmgen.00.scale  [AXIS_2]OUTPUT_SCALE

net zenable     => pid.z.enable
net zoutput     pid.z.output           => hm2_5i20.0.pwmgen.00.value
net zpos-cmd    axis.2.motor-pos-cmd   => pid.z.command
net zenable     axis.2.amp-enable-out  => hm2_5i20.0.pwmgen.00.enable

# ---Encoder feedback signals/setup---

setp    hm2_5i20.0.encoder.00.counter-mode 0
setp    hm2_5i20.0.encoder.00.filter 1
setp    hm2_5i20.0.encoder.00.index-invert 0
setp    hm2_5i20.0.encoder.00.index-mask 0
setp    hm2_5i20.0.encoder.00.index-mask-invert 0
setp    hm2_5i20.0.encoder.00.scale  [AXIS_2]INPUT_SCALE

net zpos-fb               <=  hm2_5i20.0.encoder.00.position
net zpos-fb               =>  pid.z.feedback
net zpos-fb               =>  axis.2.motor-pos-fb
net z-index-enable    axis.2.index-enable  <=>  hm2_5i20.0.encoder.00.index-enable

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

net home-z     =>  axis.2.home-sw-in
net z-neg-limit     =>  axis.2.neg-lim-sw-in
net z-pos-limit     =>  axis.2.pos-lim-sw-in

#*******************
#  SPINDLE S
#*******************

# ---Encoder feedback signals/setup---

setp    hm2_5i20.0.encoder.02.counter-mode 0
setp    hm2_5i20.0.encoder.02.filter 1
setp    hm2_5i20.0.encoder.02.index-invert 0
setp    hm2_5i20.0.encoder.02.index-mask 0
setp    hm2_5i20.0.encoder.02.index-mask-invert 0
setp    hm2_5i20.0.encoder.02.scale  [SPINDLE_9]INPUT_SCALE

net spindle-revs              <=  hm2_5i20.0.encoder.02.position
net spindle-vel-fb            <=  hm2_5i20.0.encoder.02.velocity
net spindle-index-enable     <=>  hm2_5i20.0.encoder.02.index-enable

# ---setup spindle control signals---

net spindle-vel-cmd-rps    <=  motion.spindle-speed-out-rps
net spindle-vel-cmd        <=  motion.spindle-speed-out
net spindle-enable         <=  motion.spindle-on
net spindle-cw             <=  motion.spindle-forward
net spindle-ccw            <=  motion.spindle-reverse
net spindle-brake          <=  motion.spindle-brake
net spindle-revs           =>  motion.spindle-revs
net spindle-at-speed       =>  motion.spindle-at-speed
net spindle-vel-fb         =>  motion.spindle-speed-in
net spindle-index-enable  <=>  motion.spindle-index-enable

# ---Setup spindle at speed signals---

net spindle-vel-cmd-rps    =>  near.0.in1
net spindle-vel-fb         =>  near.0.in2
net spindle-at-speed       <=  near.0.out
setp near.0.scale .9

#******************************
# connect miscellaneous signals
#******************************

#  ---charge pump signals---
net estop-out       =>  charge-pump.enable
net charge-pump     <=  charge-pump.out

#  ---coolant signals---

net coolant-mist      <=  iocontrol.0.coolant-mist
net coolant-flood     <=  iocontrol.0.coolant-flood

#  ---probe signal---

net probe-in     =>  motion.probe-input

# ---jog button signals---

net jog-speed            halui.jog-speed 
sets    jog-speed 1.000000
net jog-x-pos            halui.jog.0.plus
net jog-x-neg            halui.jog.0.minus
net jog-z-pos            halui.jog.2.plus
net jog-z-neg            halui.jog.2.minus
net spindle-manual-cw     halui.spindle.forward
net spindle-manual-ccw    halui.spindle.reverse
net spindle-manual-stop   halui.spindle.stop

#  ---digital in / out signals---

#  ---estop signals---

net estop-out     <=  iocontrol.0.user-enable-out
net estop-ext     =>  iocontrol.0.emc-enable-in
net enable        =>  motion.motion-enabled

#  ---manual tool change signals---

loadusr -W hal_manualtoolchange
net tool-change-request     iocontrol.0.tool-change       =>  hal_manualtoolchange.change
net tool-change-confirmed   iocontrol.0.tool-changed      <=  hal_manualtoolchange.changed
net tool-number             iocontrol.0.tool-prep-number  =>  hal_manualtoolchange.number
net tool-prepare-loopback   iocontrol.0.tool-prepare      =>  iocontrol.0.tool-prepared
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Dmaster писал(а):HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.050000
HOME_LATCH_VEL = -0.016667
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
По оси Z индекс не используется?
Я смотрю, тормоз шпинделя ты нашел :).
Итак. управляться будет :
3 Шпиндель (как уже писалось, сам двигатель по скорости не управляется. Скорость задается выбором передачи с помошью гидромуфт) ... вращение задается из кода функцией S ( s1 = 100 об s2 = 180 итд)
-Управление гидромуфтами
-медленный реверс ??? (А что это?)
4 зажатие, разжатие патрона
6 смазка
7 смена инструмента
На сколько я понимаю, смену инструмента и скорости надо будет делать через Ladder Logic. Пока почитай общие темы по ней, чуть по позже сочиним как это реализуется :).

Зажатие патрона, это просто один пин или что-то больше (Пин управления, пин состояния ... )?
Смазка, тоже самое... и как хочешь этим управлять? Можно по отдельной кнопке, можно в Gкоде M словами. Да, а там разве не было пина Lube?
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

зажатие патрона: 2 пинпа состояния (зажат разжат) 2 пина управления ( зажать разжать) .. обычно у станков это педали.

Индексация используется, просто упустил.)
Пина вроде не было.... Смазка без кнопок.. сама 1 раз при включении, а потом каждые 3 часа.
Ladder Logic поковырял.... ужас... Вот тут я ничего не понимаю.. ибо не програмист( буду читать.. чувствую что до завтра)
Спасибо))) сильно продвинулся)
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Dmaster писал(а):Ladder Logic поковырял.... ужас... Вот тут я ничего не понимаю.. ибо не програмист( буду читать.. чувствую что до завтра) Спасибо))) сильно продвинулся)
Особо не читай, если конечно самому не интересно, программку я тебе напишу, главное, пойми как и куда его в EMC2 ставить. Я этого никогда не делал. Но по идее все должно быть просто :).
Dmaster писал(а):зажатие патрона: 2 пинпа состояния (зажат разжат) 2 пина управления ( зажать разжать) .. обычно у станков это педали.
Как его контролируем, и что от него будет зависеть? (Например запретить запуск шпинделя при разжатом патроне.)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Итак, для программы смены инструмента и передачи шпинделя, мне нужна логическая схема работы этих механизмов.

Например,
нужно сменить инструмент на #5
Отправляем сигнал на пин разблокировки барабана.
Крутим барабан (пин такой-то) пока не появится такой то пин
закрепляем барабан (такой-то пин)
после закрепления такой-то пин должен стать тем-то.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

Nick писал(а):Как его контролируем, и что от него будет зависеть? (Например запретить запуск шпинделя при разжатом патроне.)
Его контролирем и с педалей одна разжать, другая ражать. При разжатом патроне шпиндель не крутится, а движение осей есть. и по М-функциям: M11 - Разжим детали M12 - Зажим детали
Nick писал(а):Особо не читай, если конечно самому не интересно, программку я тебе напишу, главное, пойми как и куда его в EMC2 ставить. Я этого никогда не делал. Но по идее все должно быть просто :).
Хочу научиться.. просто пока не знаю с какой стороны подходить. чувствую, что мне понадобится)))

Nick писал(а):Итак, для программы смены инструмента и передачи шпинде
я пока точно буду описывать парудней. из документации вычитывать,.
Спасибо за проявляемый интерес)
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Dmaster писал(а):Его контролирем и с педалей одна разжать, другая ражать. При разжатом патроне шпиндель не крутится, а движение осей есть.
Ищем в hal файле net spindle-enable <= motion.spindle-on и заменяем на

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

# загружаем компонент and 
loadrt and2 count=1
addf and2.0 servo-thread
# добавляем пин зажатия патрона
net clamp-holder <= hm2_5i20.0.gpio.0XX.in   
# заводим его на первый вход and
net clamp-holder => and.0.in0
# заводим на второй вход and motion.spindle-on
net motion.spindle-on => and.0.in1
# И берем spindle-enable с вывода and
net spindle-enable         <=  and.0.out
Хочу научиться.. просто пока не знаю с какой стороны подходить. чувствую, что мне понадобится)))
Самый лучший способ что-то написать. Ladder logic прикольная штука, будут вопросы - спрашивай :).

Но для начала нужно описать всю процедуру человеческим языком используя _только_ слова И, ИЛИ, ЕСЛИ, ТОГДА, ИНАЧЕ, РАВНО, НЕ, и названия пинов.
Может я парочку слов забыл, но вроде этого должно хватить :D.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Вечер добрый)
Всё мучаюсь над Ladder logic/ не подскажешь, что почитать про именно EMC-шный ladder logic.. Как добавлят элементы,как делать зависимости, ИТД!.
Если с английским нормально, то тут есть не плохое описание:
http://www.linuxcnc.org/docview/html/la ... adder.html

На сколько я понимаю, для редактирования Ladder logic или Classic ladder, есть специальные программки, в том числе в stepconf на шаге Advanced Configuration Options, есть возможность создать программу для ladder logic. Наверняка и в pncconf тоже есть такая же штука.

Только если будешь ими пользоваться смотри случайно не перезапиши созданные конфиги!
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

в pncconf есть Ladder logic... НО КАК ИМ ПОЛЬЗОВАТЬСЯ.. теперь буду изучать)
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Начни с того, чтобы описать все словами, как я говорил, потом каждое слово просто заменяется на спец символ Ladder logic и все :).

ЗЫ создай любую программку, и скинь hal cpt и ini файлы, интересно глянуть как оно выглядит (EMC2 сейчас под рукой нигде нет :( )
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

ВХОД 1 концевик РГ1 Зажата ВЫХОД 1 золотник разжимного цилиндра РГ1
ВХОД 2 концевик РГ1 разжата ВЫХОД 2 золотник зажимного цилиндра РГ1
ВХОД 3 концевик инструмента 1 ВЫХОД 3 золотник инструмената 1
ВХОД 4 концевик инструмента 2 ВЫХОД 4 золотник инструмената 2
ВХОД 5 концевик инструмента 3 ВЫХОД 5 золотник инструмената 3
ВХОД 6 концевик инструмента 4 ВЫХОД 6 золотник инструмената 4
ВХОД 7 концевик инструмента 5 ВЫХОД 7 золотник инструмената 5
ВХОД 8 концевик инструмента 6 ВЫХОД 8 золотник инструмената 6
ВХОД 9 концевик РГ2 зажата ВЫХОД 9 золотник зажимного цилиндра РГ2
ВХОД 10 Концевик РГ2 разжата ВЫХОД 10 золотник разжимного цилиндра РГ2
ВХОД 11 Концевик инструмента 7 ВЫХОД 11 золотник инструмента 7
ВХОД 12 Концевик инструмента 8 ВЫХОД 12 золотник инструмента 8
ВХОД 13 Концевик инструмента 9 ВЫХОД 13 золотник инструмента 9
ВХОД 14 Концевик инструмента 10 ВЫХОД 14 золотник инструмента 10
ВХОД 15 Концевик инструмента 11 ВЫХОД 15 золотник инструмента 11
ВХОД 16 Концевик инструмента 12 ВЫХОД 16 золотник инструмента 12
ВХОД 17 Концевик инструмента 13 ВЫХОД 17 золотник инструмента 13

И, ИЛИ, ЕСЛИ, ТОГДА, ИНАЧЕ, РАВНО, НЕ,

Смена инструмента.

ЕСЛИ задание идет от Т1 до Т6 ТОГДА (вариант 1) ИНАЧЕ Т7-Т13 (вариант 2)
(вариант 1)
ЕСЛИ Т1-Т6 ТОГДА
1. отойти по Z в точку *****
2. «отжать Револьверную Голову 1 (далее РГ1)» :
«Отключить давление в зажимном цилиндре» (Убрать сигнал с ВЫХОД 2)
«Включить давление в разжимном цилиндре» (Подать сигнал на ВЫХОД 1) . ЕСЛИ пропал сигнал зажатия (пропал сигнал ВХОД 1) И появился сигнал разжатия (появился сигнал ВХОД 2) ТОГДА разрешить смену инструмента ИНАЧЕ остановить и вывести сообщение об ошибке «номер 1»
3 «вращение РГ1»:
«Открыть золотник инструмента» T1-T6 (подать сигнал ВЫХОД 3- ВЫХОД 8) ЕСЛИ открытый ВЫХОД 3- ВЫХОД 8 равен ВХОД 3 – ВХОД 8 ТО зажать РГ1
4. «Зажать РГ1»
«Отключить давление в разжимном цилиндре» (Убрать сигнал с ВЫХОД 1)
«Включить давление в зажимном цилиндре» (Подать сигнал на ВЫХОД 2) . ЕСЛИ пропал сигнал зажатия (пропал сигнал ВХОД 1) И появился сигнал разжатия (появился сигнал ВХОД 2) ТОГДА разрешить смену инструмента ИНАЧЕ остановить и вывести сообщение об ошибке «номер 2»

(вариант 2)
ЕСЛИ Т7-Т13 ТОГДА
1. отойти по Z в точку *****
2. «отжать Револьверную Голову 2 (далее РГ2)» :
«Отключить давление в зажимном цилиндре» (Убрать сигнал с ВЫХОД 9)
«Включить давление в разжимном цилиндре» (Подать сигнал на ВЫХОД 10) . ЕСЛИ пропал сигнал зажатия (пропал сигнал ВХОД 9) И появился сигнал разжатия (появился сигнал ВХОД 10) ТОГДА разрешить смену инструмента ИНАЧЕ остановить и вывести сообщение об ошибке «номер 3»
3 «вращение РГ2»:
«Открыть золотник инструмента» T7-T13 (подать сигнал ВЫХОД 11- ВЫХОД 16) ЕСЛИ открытый ВЫХОД 11- ВЫХОД 16 равен ВХОД 11 – ВХОД 18 ТО зажать РГ2
4. «Зажать РГ2»
«Отключить давление в разжимном цилиндре» (Убрать сигнал с ВЫХОД 10)
«Включить давление в зажимном цилиндре» (Подать сигнал на ВЫХОД 9) . ЕСЛИ пропал сигнал разжатия (пропал сигнал ВХОД 10) И появился сигнал разжатия (появился сигнал ВХОД 9) ТОГДА разрешить смену инструмента ИНАЧЕ остановить и вывести сообщение об ошибке «номер 4»

Такой вариант исполним, или надо для каждого инструмента в отдельности пункт вращения писать?
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

А как происходит вращение и какой пин за это отвечает?
Аватара пользователя
Dmaster
Мастер
Сообщения: 1271
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Модернизация токарного станка

Сообщение Dmaster »

Это гидромотор.. в нем 2 камеры под постоянным давлением. Как только один из золотников открывается, то падает давление в одной из камер и перегородка движется... как только она наезжает на отверстие золотника, то давление выравнивается и движение прекращается.
Вложения
gidro.JPG (3676 просмотров) <a class='original' href='./download/file.php?id=1839&sid=1cd7b45b41004f8cdb8fb5413436d605&mode=view' target=_blank>Загрузить оригинал (30.45 КБ)</a>
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Модернизация токарного станка

Сообщение Nick »

Т.е. тупо открыли золотник и ждем, пока не сработает концевик?
Ответить

Вернуться в «Токарные станки»