Pluto-P in configurazione step

Sezione dedicata a Linuxcnc
Rispondi
ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Pluto-P in configurazione step

Messaggio da ross » giovedì 13 marzo 2014, 12:13

Buongiorno,
ho collegato la Pluto-P alla parallela e sto cercando di gestire 3 motori passo passo.
Ho preso la configurazione "pluto-inch" e poi sono andato a modificare i paramentri per adattarla alle mie esigenze.
Dato che è un sistema ad anello aperto, ancor prima di collegare gli azionamenti e tutto il resto, come sempre vado a vedere con l'oscilloscopio i segnali sulle uscite della Pluto-p per vedere se ho configurato bene il sistema.
Al primo test, muovendo un asse alla volta e manualmente mi viene fuori, a volte istantaneamente e a volte dopo un pò che l'asse si muove, "errore di inseguimento asse .." e per di più se muovo X+ e poi mi da l'errore, quando riattivo la macchina e muovo X- dopo un pò si muove anche l'asse Y da solo e poi va in errore di inseguimento.
Ho letto nella documentazione che può dipendere dall'accelerazione troppo alta oppure da FERROR o MIN_FERROR ma variandoli non ho riscontrato miglioramenti.
Attualmente sto portando una configurazione funzionante con la semplice porta parallela sulla pluto-p, quindi i valori di accelerazione massima, la velocità e tutto il resto non dovrebbe cambiare tranne il base_period che ovviamente con la Pluto-p non c'è.

Qui di seguito il contenuto del file .ini

Codice: Seleziona tutto

# EMC controller parameters for generic controller. Make these what you need
# for your system.
[EMC]
VERSION = $Revision$
MACHINE = SG1
DEBUG = 0

[DISPLAY]
DISPLAY = axis
CYCLE_TIME = 0.200
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
PROGRAM_PREFIX = /home/rossano/linuxcnc/nc_files
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 3
EDITOR = gedit
PYVCP = custompanel.xml

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = stepper.var

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

[HAL]
HALUI = halui
HALFILE = SG1.hal
HALFILE = custom.hal
POSTGUI_HALFILE = custom_postgui.hal
#- list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD =                    save neta

[HALUI]
# aggiungere qui i comandi halui MDI (max 64) 
MDI_COMMAND = o<zonaprecolata> call
MDI_COMMAND = o<lavaggio> call
MDI_COMMAND = o<zonamanutenzione> call

[TRAJ]
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 60.0
MAX_VELOCITY = 220.0
DEFAULT_ACCELERATION = 500.0
MAX_ACCELERATION = 1000.0

[AXIS_0]
TYPE = LINEAR
HOME = 2.000
MAX_VELOCITY = 220.0
MAX_ACCELERATION = 1000.0
BACKLASH = 0.000
SCALE = 13.3333333333
OUTPUT_SCALE = 1.000
MIN_LIMIT = 1.999
MAX_LIMIT = 800.0
FERROR = 1
MIN_FERROR = 0.250
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -15.000000
HOME_LATCH_VEL = 15.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1

[AXIS_1]
TYPE = LINEAR
HOME = 2.000
MAX_VELOCITY = 220.0
MAX_ACCELERATION = 1000.0
BACKLASH = 0.000
SCALE = 13.3333333333
OUTPUT_SCALE = 1.000
MIN_LIMIT = 1.999
MAX_LIMIT = 1985.0
FERROR = 1
MIN_FERROR = 0.250
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -15.000000
HOME_LATCH_VEL = 15.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 2

[AXIS_2]
TYPE = LINEAR
HOME = 30.0
MAX_VELOCITY = 9.5
MAX_ACCELERATION = 1000
BACKLASH = 0.000
SCALE = 533.333333333
OUTPUT_SCALE = 1.000
MIN_LIMIT = 1.999
MAX_LIMIT = 70.0
FERROR = 1
MIN_FERROR = 0.250
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -4.500000
HOME_LATCH_VEL = 1.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = stepper.tbl
..e il file .hal

Codice: Seleziona tutto

# first load the core RT modules that will be needed
# kinematics
loadrt trivkins
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES

loadrt pluto_step
addf pluto-step.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pluto-step.write servo-thread

setp pluto-step.stepgen.0.scale [AXIS_0]SCALE
setp pluto-step.stepgen.1.scale [AXIS_1]SCALE
setp pluto-step.stepgen.2.scale [AXIS_2]SCALE

net Xpos-cmd axis.0.motor-pos-cmd => pluto-step.stepgen.0.position-cmd
net Ypos-cmd axis.1.motor-pos-cmd => pluto-step.stepgen.1.position-cmd
net Zpos-cmd axis.2.motor-pos-cmd => pluto-step.stepgen.2.position-cmd

net Xpos-fb pluto-step.stepgen.0.position-fb => axis.0.motor-pos-fb
net Ypos-fb pluto-step.stepgen.1.position-fb => axis.1.motor-pos-fb
net Zpos-fb pluto-step.stepgen.2.position-fb => axis.2.motor-pos-fb

net Xen axis.0.amp-enable-out => pluto-step.stepgen.0.enable
net Yen axis.1.amp-enable-out => pluto-step.stepgen.1.enable
net Zen axis.2.amp-enable-out => pluto-step.stepgen.2.enable

# create a signal for the estop loopback
# net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
# create signals for tool prepare loopback
#net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
# create a signal for "spindle on"
#net spindle_on motion.spindle-on => pluto-step.dout.00

setp pluto-step.stepgen.steplen 6000
setp pluto-step.stepgen.stepspace 6000
setp pluto-step.stepgen.dirtime 6000

loadrt charge_pump
addf charge-pump servo-thread
net estop-out charge-pump.enable iocontrol.0.user-enable-out
net charge-pump <= charge-pump.out pluto-step.dout.10
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
Dove sbaglio?

Il charge_pump funziona, o meglio mi da un clock di 500Hz circa ma perde un impulso ogni tanto, nel mio caso specifico mi occorre per accendere l'alimentazione di potenza e per come ho progettato quella sezione non mi crea problemi con quel clock.

Grazie.
Ross

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Pluto-P in configurazione step

Messaggio da ross » giovedì 13 marzo 2014, 15:05

..mi rispondo da solo, ho scoperto che è il cavo nonostante è un IEEE1284.
Collegando direttamente la Pluto-p alla porta parallela del pc l'errore di inseguimento non viene più fuori tranne quando alzo di molto la velocità massima e credo sia normale.
L'onda quadra del charge_pump ora è stabile e non presenta casuali perdite di impulsi come prima.
L'unica anomalia che ho riscontrato quando muovo un asse è che gli impulsi di step "ballano" di 6-8µs quando arrivo alla massima velocità (circa 3.2KHz), in teoria dovrebbero essere stabili in frequenza.

Saluti
Ross

Rispondi

Torna a “Linuxcnc”