Страница 2 из 5
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 25 янв 2017, 19:21
sergey_s
У материнки базовый период очень плохой. На драйвере стоит умножение на 16. В другой конфигурации (без месы) скорость меня устраивает (35 мм/сек) а в этой она сильно меньше.
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 25 янв 2017, 19:56
vovafed
другой конфиг можно посмотреть
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 25 янв 2017, 21:47
sergey_s
Конфигурация "Т1" работает через LPT. Конфигурация "ТА" работает (должна работать) через LPT ось Z, через MESA ось Х и шпиндель. Физического переподключения не делаю, просто загружаю "Т1" - ось Z работает, загружаю "ТА" - ось Z положение принимает правильное, (согласно заданию) но очень медленно.
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 05:38
vovafed
вот это попробуйте
если будет ругатся ошибки сюда закинте
конфиг нет возможности проверить
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 08:57
sergey_s
Вот ошибки
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 10:06
vovafed
конечно это уже танцы с бубном
этот попробуйте
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 10:09
vovafed
гы вот где собака порылась
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 10:24
Mihaill
Может я чего не понимаю.
выдержка из твоего hal
setp stepgen.0.position-scale [AXIS_1]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 1
setp stepgen.0.dirhold 50000
setp stepgen.0.dirsetup 50000
setp stepgen.0.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.0.position-cmd
net zpos-fb stepgen.0.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.0.step
net zdir <= stepgen.0.dir
net zenable axis.2.amp-enable-out => stepgen.0.enable
setp stepgen.0 наверно должно записать как setp stepgen.2
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 11:08
vovafed
нет это номер степген а не оси
а дело все в этом
setp stepgen.0.position-scale [AXIS_1]SCALE
степген берет настройки скалярности с оси которой нет в ини файле
в последнем вложении подправил
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 17:55
sergey_s
Помогло, теперь ездит как надо. Спасибо Vovafed, что не бросили дилетанта.
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 26 янв 2017, 18:32
vovafed
хорошо

Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 11:17
Mihaill
Продолжу эту тему, у меня тоже появилась плата от ТООТ и задача сходная.
Нужно мне подключить станок с шаговыми моторами, через ЛПТ порт, а обратную связь (оптические линейки) подключить к плате to_pci.
Опыта настройки PID тем более с шаговыми полный ноль, написал hal как ума хватило, но определенно ошибок наделал не мало, большая просьба помочь довести до ума это дело.
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 1000
loadrt stepgen step_type=0,0,0
loadrt to_pci
loadrt pid names=pid.x
# 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
# LPT port
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 stepgen.update-freq servo-thread
net estop-out => parport.0.pin-01-out
setp parport.0.pin-02-out-invert 1
net xdir => parport.0.pin-02-out
net xstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
# -------E-STOP--------
net estop-ext iocontrol.0.emc-enable-in <= iocontrol.0.user enable-out
# --- HOME-X ---
net home-x <= parport.0.pin-15-in
# ---AXIS X---
net x-pos-fb => pid.x.feedback
net x-pos-cmd => pid.x.command
net x-enable => pid.x.enable
net x-vel-cmd => pid.x.command-deriv
net x-index-enable <=> pid.x.index-enable
net x-output => pid.x.output
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
setp pid.x.error-previous-target true
setp pid.x.maxerror .0005
# -------- FEED BACK X--------------
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
# Step Gen signals/setup
setp stepgen.0.position-scale [AXIS_0]STEP_SCALE
setp stepgen.0.steplen [AXIS_0]STEPLEN
setp stepgen.0.stepspace [AXIS_0]STEPSPACE
setp stepgen.0.dirsetup [AXIS_0]DIRSETUP
setp stepgen.0.dirhold [AXIS_0]DIRHOLD
#setp stepgen.0.step_type 0
#setp stepgen.0.control-type 1
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
#setp stepgen.0.maxvel [AXIS_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= axis.0.motor-pos-cmd
net x-vel-cmd <= axis.0.joint-vel-cmd
#net x-output <= stepgen.0.velocity-cmd
#net x-pos-fb <= stepgen.0.position-fb
net x-pos-fb => axis.0.motor-pos-fb
net x-enable <= axis.0.amp-enable-out
net x-enable => stepgen.0.enable
# ---setup home / limit switch signals---
net home-x => 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
П.С. Сам станок уже собран и опробован и без обратной связи все работает(с другим hal и ini), линейки установлены но пока подключены к УЦИ, пере подключить недолго.
ПП.С С этим халом станок уже пробовал запускать, программа загружается без ошибок, но ось не двигается.
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 11:35
vovafed
конфиг без обратной связи можете скинуть
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 11:43
nkp
loadrt hal_parport cfg="0x378 out"
не?
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 11:54
Mihaill
Хал рабочий, правда не совсем весь как то сохранился с ошибкой и конец потерялся.
Код: Выделить всё
# Generated by stepconf 1.1 at Thu Apr 20 03:12:12 2017
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 1000
loadrt stepgen step_type=0,0,0
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-rpm <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-at-speed => motion.spindle-at-speed
net spindle-cw <= motion.spindle-forward
net estop-out => parport.0.pin-01-out
setp parport.0.pin-02-out-invert 1
net xdir => parport.0.pin-02-out
net xstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net ydir => parport.0.pin-04-out
net ystep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1
setp parport.0.pin-06-out-invert 1
net zdir => parport.0.pin-06-out
net zstep => parport.0.pin-07-out
setp parport.0.pin-07-out-reset 1
net spindle-cw => parport.0.pin-14-out
net home-x <= parport.0.pin-12-in
net home-y <= parport.0.pin-13-in-not
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 22000
setp stepgen.0.dirsetup 22000
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
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 22000
setp stepgen.1.dirsetup 22000
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
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 22000
setp stepgen.2.dirsetup 22000
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 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
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 12:09
Mihaill
Mihaill писал(а):С этим халом станок уже пробовал запускать, программа загружается без ошибок, но ось не двигается.
На экране то она двигается правда не больше чем на заданный люфт т.е. 0.05мм, а на деле нет.
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 19:34
T00T
Mihaill,
Постарайтесь мыслить функциональными блоками. Что у вас в схеме за чем идёт.
К примеру в данной конфигурации у вас управление должно идти так:
MOTION -> PID -> STEP_GEN -> PAR_PORT.
Обратная связь должна быть вот так:
to_pci.1.feedback.encoder -> PID
to_pci.1.feedback.encoder -> MOTION
Проследите как сигналы у вас выходят из одного блока и попадают другой.
Вот например этой связи вообще нет STEP_GEN -> PAR_PORT. Вопрос, как на порту
должно что то получиться?
Немного поправил. (Сам конечно не запускал, поэтому могут быть ошибки)
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
# My driver
loadrt to_pci
setp parport.0.reset-time 5000
loadrt stepgen step_type=0
loadrt hal_parport cfg="0 out"
loadrt pid names=pid.x
# THREADS
addf parport.0.read servo-thread
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
# LPT port
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 stepgen.update-freq servo-thread
# -------E-STOP--------
net estop-out => parport.0.pin-01-out
# --- HOME-X ---
net home-x <= parport.0.pin-15-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
setp pid.x.error-previous-target true
setp pid.x.maxerror .1
net x-pos-cmd => pid.x.command
net x-enable => pid.x.enable
#net x-vel-cmd => pid.x.command-deriv
net x-index-enable <=> pid.x.index-enable
net x-pos-fb => pid.x.feedback
net x-output => pid.x.output
# -------- FEED BACK X--------------
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
# ----------Step Gen signals/setup---------
setp stepgen.0.position-scale [AXIS_0]STEP_SCALE
setp stepgen.0.steplen [AXIS_0]STEPLEN
setp stepgen.0.stepspace [AXIS_0]STEPSPACE
setp stepgen.0.dirsetup [AXIS_0]DIRSETUP
setp stepgen.0.dirhold [AXIS_0]DIRHOLD
setp stepgen.0.step_type 0
setp stepgen.0.control-type 1
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp stepgen.0.maxvel [AXIS_0]STEPGEN_MAXVEL
net x-enable => stepgen.0.enable
net x-output <= stepgen.0.velocity-cmd
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
# ---/////////////////////////---
net x-pos-cmd <= axis.0.motor-pos-cmd
net x-pos-fb => axis.0.motor-pos-fb
net x-enable <= axis.0.amp-enable-out
setp parport.0.pin-02-out-invert 1
net xdir => parport.0.pin-02-out
net xstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
# ---setup home / limit switch signals---
net home-x => 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
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 19:43
vovafed
solo писал(а):но вот что написано в мануале
Re: EMC2 Integrators Manual Перевод на русский язык #53
то есть чтобы загрузить два степенгера , один работает в скорости второй в положении то надо в хеле писать так
loadrt stepgen step_type=0,0 ctrl_type=v,p
и еще у меня оси с енкодером настроены степегеры в режиме скорости вот как настроено у меня
(для просмотра содержимого нажмите на ссылку)
#-------- Encoder-X --------#
setp encoder.0.position-scale 200.00
net Xpos-phase-a encoder.0.phase-A
net Xpos-phase-b encoder.0.phase-B
net Xpos-phase-a <= parport.1.pin-02-in
net Xpos-phase-b <= parport.1.pin-03-in
# Add feedback to motion. This replaces sepgen.0.position-fb
net Xpos-fb <= encoder.0.position
net Xpos-fb => axis.0.motor-pos-fb
#-------- Encoder-X --------#
#-------- PID-X --------#
net Xpos-fb => pid.0.feedback
net Xpos-cmd axis.0.motor-pos-cmd => pid.0.command
net xenable <= axis.0.amp-enable-out => pid.0.enable
net Xvel-cmd <= pid.0.output
setp pid.0.Pgain 70.0
setp pid.0.Igain 0.0
setp pid.0.Dgain 0.0
setp pid.0.bias 0
setp pid.0.FF0 0
setp pid.0.FF1 1.0
setp pid.0.FF2 0.03
#setp pid.0.deadband 0.005
#setp pid.0.tune-mode 1
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 15000
setp stepgen.0.dirsetup 15000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
#net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net Xvel-cmd => stepgen.0.velocity-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 xenable stepgen.0.enable
#net min-x => axis.0.neg-lim-sw-in
#net max-x => axis.0.pos-lim-sw-in
net xhome-x => axis.0.home-sw-in
ну а выводы степенгера это наверное вопрос второй куда направлять толи на ЛПТ толи на месу
тогда прицепить к этому и готово
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 01 фев 2017, 21:57
Mihaill
Спасибо за помощь, запуск удался, ось начала перемещаться, сейчас до подключения линеек все работает,. Пишу с планшета не очень удобно, завтра выложу, то что получилось.
Re: Подключение осей через Mesa и LPT одновременно
Добавлено: 02 фев 2017, 09:29
Mihaill
Вот что в результате получилось
Код: Выделить всё
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 1000
loadrt stepgen step_type=0,0,0
loadrt to_pci
loadrt pid names=pid.x
# 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
# LPT port
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 stepgen.update-freq servo-thread
# -------E-STOP--------
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
net estop-out => parport.0.pin-01-out
# --- HOME-X ---
net home-x <= parport.0.pin-15-in
# ---AXIS X---
net xpos-fb => pid.x.feedback
net xpos-cmd => pid.x.command
net xenable => pid.x.enable
net xvel-cmd => pid.x.command-deriv
net xindex-enable <=> pid.x.index-enable
net xoutput => pid.x.output
setp parport.0.pin-02-out-invert 1
net xdir => parport.0.pin-02-out
net xstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
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
setp pid.x.error-previous-target true
setp pid.x.maxerror .0005
# -------- FEED BACK X--------------
setp to_pci.1.feedback.enc_scale1 [AXIS_0]ENCODER_SCALE
net xpos-fb <= to_pci.1.feedback.encoder1
net xpos-fb => axis.0.motor-pos-fb
# Step Gen signals/setup
setp stepgen.0.position-scale [AXIS_0]STEP_SCALE
setp stepgen.0.steplen [AXIS_0]STEPLEN
setp stepgen.0.stepspace [AXIS_0]STEPSPACE
setp stepgen.0.dirsetup [AXIS_0]DIRSETUP
setp stepgen.0.dirhold [AXIS_0]DIRHOLD
#setp stepgen.0.step_type 0
#setp stepgen.0.control-type 1
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
#setp stepgen.0.maxvel [AXIS_0]STEPGEN_MAXVEL
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xenable axis.0.amp-enable-out => stepgen.0.enable
# ---closedloop stepper signals---
net xvel-cmd <= axis.0.joint-vel-cmd
#net xoutput <= stepgen.0.velocity-cmd
#net xpos-fb <= stepgen.0.position-fb
net xpos-fb => axis.0.motor-pos-fb
# ---setup home / limit switch signals---
net home-x => axis.0.home-sw-in
net xneg-limit => axis.0.neg-lim-sw-in
net xpos-limit => axis.0.pos-lim-sw-in
Буду сегодня подключать линейки, посмотрим что из этого выйдет.
Теперь задумался о подключении маховичка с энкодером.