Страница 3 из 5

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 02 фев 2017, 11:47
vovafed
пид регулятор не подключен у вас :thinking:
loadrt stepgen step_type=0,0 ctrl_type=v,p
переводим степген в управление по скорости

подключаем к пид
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

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 02 фев 2017, 12:19
Mihaill
Спасибо, вечером опробую.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 02 фев 2017, 21:13
Mihaill
Даа фокус не прокатил не в каком варианте, пробовал подключать пид, программа не запускается, пишет что то типа <команд нот фоунд,> видимо несовсем провильно составлена команда.
Вот такой вопрос можно ли в линуксе к примеру в нал скопе проверить идет ли сигнал с линеек.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 02 фев 2017, 22:24
T00T
Можно, но не в скопе, а посмотреть пины с платы to_pci

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 03 фев 2017, 05:13
vovafed
o_pci.1.feedback.encoder
можно этот сигнал в халметр посмотреть меняется ли при перемещении
http://www.cnc-club.ru/forum/viewtopic.php?p=6973#p6973
здесь почитайте
и текст ошибки с конфигом лучше сюда

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 03 фев 2017, 08:26
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 ctrl_type=v,p

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
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir

#---PID-X---
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
net xpos-fb     => pid.0.feedback
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


# ---closedloop stepper signals---


#net xoutput     <= stepgen.0.velocity-cmd
#net xpos-fb     <= stepgen.0.position-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
текст не сохранил, ругнулось not found конкретно на выражение "pid.0.command"
пробовал изменить на "pid.х.command" результат тот же.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 03 фев 2017, 08:57
vovafed
loadrt at_pid num_chan=1

в начале до пид это добавте

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 03 фев 2017, 11:40
solo
я извиняюсь что вмешиваюсь но предлагаю свой рабочий хел файл (может эта ифа будет полезна либо просто ускорит процесс наладки станка ) , правда у меня управление реализовано по двум ЛПТ портам но это ИМХО вопрос не принципиальный , то есть линейки подключены к одному лпт порту, а ШД осей подключены к другому лпт

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 03 фев 2017, 14:01
Mihaill
solo писал(а):я извиняюсь что вмешиваюсь
Извинятся определенно не за что, на оборот очень признателен за любую полезную делу информацию. Надеюсь на то что кому то эта тема про гибриды тоже пригодится.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 07 фев 2017, 20:58
vovafed

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

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="0x378 out ec00 out "
setp parport.0.reset-time 3000
loadrt encoder num_chan=1
loadrt stepgen step_type=0,0,0,0 ctrl_type=p,p,v,p
loadrt at_pid num_chan=1

addf pid.0.do-pid-calcs servo-thread
addf parport.0.read base-thread
addf parport.1.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf parport.1.write 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 spindle-on <= motion.spindle-on
net coolant-mist <= iocontrol.0.coolant-mist

setp parport.0.pin-01-out-invert 1
net xenable => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net ystep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net zstep => 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 xdir => parport.0.pin-06-out
net ydir => parport.0.pin-07-out
net zdir => parport.0.pin-08-out
net adir => parport.0.pin-09-out
net coolant-mist => parport.0.pin-16-out
net spindle-on => parport.0.pin-17-out


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

addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 200.000000
net zpos-phase-a encoder.0.phase-A
net zpos-phase-b encoder.0.phase-B
net zpos-phase-a <= parport.1.pin-13-in
net zpos-phase-b <= parport.1.pin-11-in
net zpos-fb <= encoder.0.position
net zpos-fb => axis.2.motor-pos-fb

 #-------- PID--------#
net zpos-fb => pid.0.feedback
net zpos-cmd axis.2.motor-pos-cmd => pid.0.command
net zenable <= axis.2.amp-enable-out => pid.0.enable
net zvel-cmd <= pid.0.output 
setp pid.0.Pgain 100
setp pid.0.Igain 0
setp pid.0.Dgain 0
setp pid.0.bias 0
setp pid.0.FF0 0
setp pid.0.FF1 0
setp pid.0.FF2 0
setp pid.0.deadband 0.05
    #-------- PID --------#



setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 30000
setp stepgen.0.dirsetup 30000
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 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 30000
setp stepgen.1.dirsetup 30000
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 30400
setp stepgen.2.dirsetup 30400
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zvel-cmd => stepgen.2.velocity-cmd
net zenable axis.2.amp-enable-out => stepgen.2.enable 
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net both-z => axis.2.neg-lim-sw-in
net both-z => axis.2.pos-lim-sw-in

setp stepgen.3.position-scale [AXIS_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 30000
setp stepgen.3.dirsetup 30000
setp stepgen.3.maxaccel [AXIS_3]STEPGEN_MAXACCEL
net apos-cmd axis.3.motor-pos-cmd => stepgen.3.position-cmd
net apos-fb stepgen.3.position-fb => axis.3.motor-pos-fb
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
старый рабочий хал
энкодер на второй лпт порт заводил

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 08 фев 2017, 08:07
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 5000
loadrt stepgen step_type=0,0,0 ctrl_type=v,v,v
loadrt at_pid num_chan=1

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
addf stepgen.capture-position servo-thread
addf stepgen.update-freq      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


#   -------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-12-in


#---PID-X---
net xpos-cmd axis.0.motor-pos-cmd => pid.x.command
net xenable <= axis.0.amp-enable-out => pid.x.enable
net xpos-fb     => pid.x.feedback
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
#set   pid.x.error-previous-target true
setp   pid.x.maxerror .005

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

# ---AXIS X---
net xpos-fb        =>  pid.x.feedback
net xpos-cmd       =>  pid.x.command
net xenable        =>  pid.x.enable
net xindex-enable  <=> pid.x.index-enable
net xoutput        =>  pid.x.output

# Step Gen signals/setup

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 xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable => stepgen.0.enable


# ---get-cmd from PID-X---

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.maxaccel         [AXIS_0]STEPGEN_MAXACCEL
net xvel-cmd => axis.0.joint-vel-cmd
net  xvel-cmd => stepgen.0.velocity-cmd

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

net home-x         =>  axis.0.home-sw-in
а так ини

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

DRIVER=to_pci


[EMC]

# Name of machine, for use with display, etc.
[EMC]
MACHINE = 1
DEBUG = 0


[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/mihail/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
DEFAULT_LINEAR_VELOCITY = 2.0
MAX_LINEAR_VELOCITY = 20.000000
MIN_LINEAR_VELOCITY = 0.0
DEFAULT_ANGULAR_VELOCITY = 0.250000
MAX_ANGULAR_VELOCITY = 10.000000
MIN_ANGULAR_VELOCITY = 0.0
EDITOR = gedit
GEOMETRY = x
PYVCP = Panel.xml


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


[TASK]

# Name of task controller program, e.g., milltask
TASK =                  milltask

# Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME =            0.010



[RS274NGC]

PARAMETER_FILE = linuxcnc.var



[EMCMOT]

EMCMOT =                motmod

# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT =          1.0

# Interval between tries to emcmot, in seconds
COMM_WAIT =             0.010

# Servo task period, in nanoseconds
SERVO_PERIOD =          1000000
BASE_PERIOD = 100000



[HAL]

# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.

# list of hal config files to run through halcmd
# files are executed in the order in which they appear

HALFILE = 1.hal
POSTGUI_HALFILE = custom_postgui.hal



[TRAJ]

AXES = 3
COORDINATES = X
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.00
MAX_LINEAR_VELOCITY = 20.00
POSITION_FILE = position.txt
DEFAULT_ACCELERATION =  6.0
MAX_ACCELERATION =      20.0


[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 1
STEPGEN_MAXACCEL = 25.0
MIN_FERROR = 0.1
MAX_VELOCITY = 20.0
MAX_ACCELERATION = 20.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
P = 5.0
I = 0.0
D = 0.02
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 10
ENCODER_SCALE = 1000

# these are in nanoseconds
DIRSETUP   = 22000
DIRHOLD    = 22000
STEPLEN    = 22000
STEPSPACE  = 0
STEP_SCALE = 400.0
BACKLASH = 0
MIN_LIMIT = -0.001
MAX_LIMIT = 360
HOME_OFFSET = 22.000000
HOME_SEARCH_VEL = 15.000000
HOME_LATCH_VEL = 1.250000
HOME_FINAL_VEL = 5




[EMCIO]

# Name of IO controller program, e.g., io
EMCIO =                 io

# cycle time, in seconds
CYCLE_TIME =            0.100

# tool table file
TOOL_TABLE = tool.tbl
vovafed
Вариант как у тебя, вроде как уже пробовал(есть сомнения) не заработал, но попробую еще раз.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 08 фев 2017, 11:20
vovafed
net xoutput => pid.x.output
это выход пид он подключен к сигналу xoutput
он должен подключатся сюда
net xvel-cmd => stepgen.0.velocity-cmd
но этот вход подключен к другому сигналу
net xvel-cmd => axis.0.joint-vel-cmd эта строчка лишняя походу
двойная стрелка врятли прокатит
net xindex-enable <=> pid.x.index-enable

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 09 фев 2017, 08:18
Mihaill
vovafed писал(а):net xoutput => pid.x.output
это выход пид он подключен к сигналу xoutput
он должен подключатся сюда
net xvel-cmd => stepgen.0.velocity-cmd
но этот вход подключен к другому сигналу
net xvel-cmd => axis.0.joint-vel-cmd эта строчка лишняя походу
двойная стрелка врятли прокатит
net xindex-enable <=> pid.x.index-enable
Точно в цель, Володя спасибо, заработало как надо.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 12 мар 2017, 20:14
nkp
solo писал(а):предлагаю свой рабочий хел файл (может эта ифа будет полезна либо просто ускорит процесс наладки станка ) , правда у меня управление реализовано по двум ЛПТ портам но это ИМХО вопрос не принципиальный , то есть линейки подключены к одному лпт порту, а ШД осей подключены к другому лпт
индексы не используются ,я так понял? или отсутствуют?

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 13 мар 2017, 10:51
solo
nkp писал(а):индексы не используются ,я так понял? или отсутствуют?
не использую, на хомах стоят оптические концевики, здесь на форуме встречал инфу , что такие концевики имеют точность не хуже 0.02 мм , меня это устраивает , по этому с индексными метками не стал заморачиваться

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 10 янв 2018, 10:30
sergey_s
Здравствуйте. Делаю еще станок с платами ТООТ, с шаговиками подключенными к LPT и обратной связью по линейкам. При настройке hal у меня получались разные "косяки", то показания линейки не соответствовали реальному перемещению, то вообще ось не ехала. Собрался с мыслями, переделал hal - не включается, говорит "ошибка реалтайма". Выкладываю hal и ini, посмотрите, у кого время есть.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 11 янв 2018, 10:25
sergey_s
Вот полный текст ошибки.

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 11 янв 2018, 10:55
PKM
./mill2.hal:1: Unknown command 'п»ї'

Не вижу такого в mill2.hal

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 11 янв 2018, 11:07
sergey_s
Не видит команду, но пытается ее выполнить?

Re: Подключение осей через Mesa и LPT одновременно

Добавлено: 11 янв 2018, 11:12
nkp
тут ./mill2.hal:1
указывается номер строки ,в которой емс как бы видит ошибку...
в первой строке там вообще комментарии...
я бы пробовал по разному менять шапку и смотреть - как меняется ошибка...
в начале убрать 4 первые строки (удалить содержимое) и оставить их пустыми...
запускать - читать ошибку...