Использование "шпинделя" для управления допоборудованием

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

наверно вот так Ник имел в виду:

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

# Generated by stepconf at Sun Jan 27 12:43:35 2013
# If you make changes to this file, they will be
# overwritten when you run stepconf again

[EMC]
MACHINE = 333
DEBUG = 0

[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/vic/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[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 = linuxcnc.var

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

[HAL]
HALFILE = 333.hal
HALFILE = custom.hal
POSTGUI_HALFILE = custom_postgui.hal

[TRAJ]
AXES = 3
COORDINATES = X Y Z
MAX_ANGULAR_VELOCITY = 0.10
DEFAULT_ANGULAR_VELOCITY = 0.01
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 20.00
MAX_LINEAR_VELOCITY = 200.00

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

[AXIS_0]
TYPE = LINEAR
HOME = 20.0
MAX_VELOCITY = 45.0
MAX_ACCELERATION = 80.0
STEPGEN_MAXACCEL = 85.0
SCALE = 33.9612629345
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -0.001
MAX_LIMIT = 2500.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = -15.058250
HOME_SEQUENCE = 1

[AXIS_1]
TYPE = LINEAR
HOME = 10.0
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 250.0
STEPGEN_MAXACCEL = 270
SCALE = 33.9610
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -0.001
MAX_LIMIT = 1600.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL =50.000000
HOME_LATCH_VEL = -25.000000
HOME_SEQUENCE = 1

[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 30.0
STEPGEN_MAXACCEL = 33.0
SCALE = 1777.77777778
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -100.0
MAX_LIMIT = 0.001
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -2.500000
HOME_LATCH_VEL = 0.5
HOME_SEQUENCE = 0

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

# Generated by stepconf at Sun Jan 27 12:43:35 2013
# If you make changes to this file, they will be
# overwritten when you run stepconf again
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x1020 out  "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0,0 ctrl_type=p,p,p,v

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out
net dout-00 <= motion.digital-out-00
net dout-01 <= motion.digital-out-01
net dout-02 <= motion.digital-out-02

net estop-out => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net zstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net astep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1
net dout-00 => parport.0.pin-06-out
setp parport.0.pin-07-out-invert 1
net xdir => parport.0.pin-07-out
net zdir => parport.0.pin-08-out
net ydir => parport.0.pin-09-out
net adir => parport.0.pin-14-out
net dout-01 => parport.0.pin-16-out
net dout-02 => parport.0.pin-17-out


net home-x <= parport.0.pin-10-in
net home-z <= parport.0.pin-11-in
net home-y <= parport.0.pin-12-in
net all-limit <= parport.0.pin-15-in-not


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 55000
setp stepgen.0.dirsetup 55000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net home-x => axis.0.home-sw-in
net all-limit => axis.0.neg-lim-sw-in
net all-limit => axis.0.pos-lim-sw-in

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 55000
setp stepgen.1.dirsetup 55000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net home-y => axis.1.home-sw-in
net all-limit => axis.1.neg-lim-sw-in
net all-limit => axis.1.pos-lim-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 55000
setp stepgen.2.dirsetup 55000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net home-z => axis.2.home-sw-in
net all-limit => axis.2.neg-lim-sw-in
net all-limit => axis.2.pos-lim-sw-in

setp stepgen.3.position-scale 800
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 55000
setp stepgen.3.dirsetup 55000
setp stepgen.3.maxaccel 5.5
net avel-cmd <= motion.spindle-speed-out-rps
net avel-cmd => stepgen.3.velocity-cmd
net astep <= stepgen.3.step
net adir <= stepgen.3.dir
net aenable axis.3.amp-enable-out => stepgen.3.enable
net all-limit => axis.3.neg-lim-sw-in
net all-limit => axis.3.pos-lim-sw-in

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

loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed 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
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Тогда совсем не понятно ГДЕ прописываются настройки шаговика, который "насос"?
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

Ворон226 писал(а):настройки шаговика, который "насос"?
в хал правим значения:

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

setp stepgen.3.position-scale 
setp stepgen.3.maxaccel 
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Ещё раз благодарю за помощь. Я уже начал понимать процентов 10 из команд .hal-файла...

Но я так и не понял следующее.

Вот у меня есть шаговик с параметрами:
200 импульсов на оборот
нет редуктора (насосы сразу на оси шаговика
микрошаг - 1\2
и желание "крутить" этим шаговиком насос с нужной скоростью (Х импульсов в секунду или Y оборотов в минуту) и в нужном направлении стандартными командами G-кода.

При прописывании в ini-файле AXES-а всё понятно. Есть параметр Scale, есть максимальные скорость и ускорение в мм/сек и мм/сек2, есть прописанный тип перемещения.
Понятно, что в hal-файле можно прописать:
- на какой пин LPT-порта подаётся какой сигнал
- с какого пина LPT-порта брать какой сигнал

Но...

В Вашем варианте файлов в ini-файле исчезли значения, характеризующие шаговик-насос. А в hal-файле я не увидел этих значений...
И, пока, для меня непонятна фраза: "правим значения"... Ткните меня "носом" в эти "места", пожалуйста.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Вах! Отлично!

А управляется такими кодами:

М03
М04
М05,
где М03 и М04 вместе с параметром S - обороты "шпинделя"?
А так понял?
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

Ворон226 писал(а):так понял?
да -точно
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Скопировал файлики (.ini и .hal), запустил EMC2 и... Получил сообщение об ошибке (текст скопировал и прилагаю). Стал внимательно смотреть на .hal и обнаружил, что в разделе назначения пинов есть astep и adir. Но ведь у нас ось А искорена как класс окончательно! Может в этом причина? И как "обзывать" теперь пины, которые управляют шаговиком-насосом? Короче - ковыряюсь дальше...
Вложения
error 1.txt
(2.74 КБ) 1042 скачивания
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

информативная часть текста (для нас) всегда здесь:
Выделение(009).jpg (1926 просмотров) <a class='original' href='./download/file.php?id=11384&mode=view' target=_blank>Загрузить оригинал (75.15 КБ)</a>
если ось удалили - то надо подчистить хвосты ;)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Nick »

Говорит, что пина "333.hal:105: Pin 'axis.3.amp-enable-out'" does not exist нет
Да, ищи в тексте все, что связано axis.3 и удаляй
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

но ведь мне нужно прописать пин LPT-порта, через который нужно управлять насосом. Ща попробую подчистить и выложить результат...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Получается, что мы присваивает переменным значения

net astep <= stepgen.3.step
net adir <= stepgen.3.dir


, которые передаются на пины LPT-порта

net astep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1


и

net adir => parport.0.pin-14-out

Так?

в итоге подчищенный .hal будет таким:
Вложения
666.ini
(4.36 КБ) 1043 скачивания
Хочешь быть счастливым? Будь им!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Nick »

Все правильно! :)
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Запустил EMC2 с исправленным .hal - ругаться перестал, но и крутить шаговик тоже отказался. Молчком отказался. При подаче команды M3 S3000 (пробовал и S3, и S30...) - никакой реакции нет.

Стал копать .hal дальше...
Вот что увидел:
1. Есть такая строка:
net spindle-cmd <= motion.spindle-speed-out
и такая
net avel-cmd <= motion.spindle-speed-out-rps
Думаю, что присваивать соответствия одного компонента (подпрограмме) нескольким переменным можно (некритично), но лучше первую строку удалить. Закомментировал её - EMC2 никак не отреагировал.

2. Строка
net avel-cmd <= motion.spindle-speed-out-rps
говорит о передачи переменной значения скорости в оборотах в секунду т.е. значения скорости шаговика должны быть не более 0.5 (так у меня получилось при испытаниях). Значит команда должна выглядеть так:
M3 S0.5
Но непонятно (пока не изучил) - можно ли скорость задавать значением меньшим единицы?

3. Созрел писать краткое руководство-учебник по освоению настройками CNC - уж очень неудобно пользоваться справочником по HAL... Как только начну разбираться - открою соответствующую тему.
Вложения
666.hal
С комментариями
(5.27 КБ) 1024 скачивания
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

Ворон226 писал(а):крутить шаговик тоже отказался. Молчком отказался. При подаче команды M3 S3000 (пробовал и S3, и S30...) - никакой реакции нет
попробуй в хал:

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

setp  stepgen.3.enable 1
вот сюда:
Выделение(004).jpg (1904 просмотра) <a class='original' href='./download/file.php?id=11466&mode=view' target=_blank>Загрузить оригинал (240.78 КБ)</a>
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

а напомни - к чему ты адаптировать скорость будешь?
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение Ворон226 »

Так как задача стоит такая:
Равномерное нанесение геля при движении головки по криволинейной траектории,
то рассматриваю два варианта:

1. Насос равномерно качает при равномерном движении головки
2. Насос качает пропорционально линейной скорости головки.

Соответственно есть два варианта реализации:
1. Насос-шпиндель (есть стандартные команды включения с указанием направления и скорости вращения-подачи) и равномерное движение по криволинейной траектории.
2. Насос-ось и использование подпрограммы расчёта длины прямой (дуги) с заданием количества импульсов движения насоса на этой прямой (дуге).

На сегодня вопрос установки насоса как оси решен. Остался вопрос выбора и подключения подпрограммы вычисления длины прямой (дуги) с переводом этой длины в количество импульсов на насос.
Не решен вопрос подключения насоса в качестве шпинделя. А равномерность движения по криволинейной траектории предполагается решать за счет уменьшения величины максимально допустимой скорости по осям и малой точности движения по траектории (около 0,5 мм)
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

не проще ли в реализации вариант 2:
Ворон226 писал(а):2. Насос качает пропорционально линейной скорости головки.
ведь как не добивайся равномерности движения - углы 30 градусов не пройдешь равномерно
а вот если на таких допустим углах скорость падает до нуля и после поворота опять ускорение- то и насос пропорционально выдает
или есть подводные камни и здесь ???
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Использование "шпинделя" для управления допоборудованием

Сообщение nkp »

набросал пробный вариант- скрипт компонента с доп. пинами и параметр:

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

#!/usr/bin/python
import hal
import math
h = hal.component("vel")
h.newpin("vaxis1", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("vaxis2", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("velout", hal.HAL_FLOAT, hal.HAL_OUT)
h.newpin("setpyvcp", hal.HAL_FLOAT, hal.HAL_IN)
h.newparam("setvel",hal.HAL_FLOAT, hal.HAL_RW)
h.ready()
try:
    while 1:
	 h['velout'] = h["setpyvcp"]*h["setvel"]* math.sqrt(h["vaxis1"]**2 + h["vaxis2"]**2)
except KeyboardInterrupt:
    raise SystemExit
на входы подаем скорости по осям - на выходе получаем линейную скорость
в двух местах корректировка - "setvel" задает из хал грубую настройку
а "setpyvcp" ползунком на лету из панели pyvcp
правильность формулы не гарантирую - но не беда - тут есть люди дружащие с математикой :)
файлы в папку конфигурации:
Pump.tar
(20 КБ) 316 скачиваний
Ответить

Вернуться в «LinuxCNC»