- Posts: 1931
- Thank you received: 394
Spindel problems in Gmoccapy
- newbynobi
- Offline
- Moderator
-
Less
More
9 years 6 months ago - 9 years 6 months ago #92275
by newbynobi
Replied by newbynobi on topic Spindel problems in Gmoccapy
The changed code
In your postgui.hal file you need:
Norbert
Code:
##########################################################
# Spindeldrehzahl messen / mesurement spindle revolution #
##########################################################
loadrt encoder num_chan=1
addf encoder.update-counters servo-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 1 # Anzahl der Impulse je Umdrehung
setp encoder.0.counter-mode 1 # Wenn 1 gesetzt, wird B-Signal ignoriert
# disable 4 times encoder, otherwise each klick will ingreas jogwheel-count by 4 instead of 1
# 4-fach-Auswertung vom Encoder ausschalten, sonst wird jogwheel-count bei jedem Klick um 4 statt um 1 erhoeht
setp encoder.0.x4-mode FALSE
loadrt scale count=1 # Wird gebraucht, um U/Sekunde in U/min umzurechnen
addf scale.0 servo-thread
setp scale.0.gain 60 # Ausgang = 60 x Eingang
net spindle_index parport.0.pin-10-in => encoder.0.phase-A => encoder.0.phase-Z
net spindle-index-enable motion.spindle-index-enable <=> encoder.0.index-enable
net spindle-rps encoder.0.velocity => scale.0.in
net spindle-rpm scale.0.out
# Zum Erkennen ob Geschwindigkeit erreicht wurde
# For at Speed detection
loadrt near
addf near.0 servo-thread
# Stellt fest ob zwei Werte in etwa gleich sind
# Wahr wenn, in1/scale <= in2 <= in1*scale
# oder wenn |in1-in2| <= difference
# prooves if two values are roughly the same
# true if in1/scale <= in2 <= in1*scale
# OR |in1-in2| <= difference
setp near.0.scale 1.2
setp near.0.difference 10
net spindle-cmd => near.0.in1
net spindle-rpm => near.0.in2
net spindle-at-speed near.0.out => motion.spindle-at-speed
In your postgui.hal file you need:
Code:
net spindle-rpm gmoccapy.spindle_feedback_bar
net spindle-at-speed gmoccapy.spindle_at_speed_led
Norbert
Last edit: 9 years 6 months ago by newbynobi.
Please Log in or Create an account to join the conversation.
- tecno
- Offline
- Platinum Member
-
Less
More
- Posts: 1850
- Thank you received: 127
9 years 6 months ago - 9 years 6 months ago #92276
by tecno
Replied by tecno on topic Spindel problems in Gmoccapy
Last edit: 9 years 6 months ago by tecno.
Please Log in or Create an account to join the conversation.
- newbynobi
- Offline
- Moderator
-
Less
More
- Posts: 1931
- Thank you received: 394
9 years 6 months ago #92277
by newbynobi
Replied by newbynobi on topic Spindel problems in Gmoccapy
Hallo bengt,
please use the changed code.
See my last post.
Norbert
please use the changed code.
See my last post.
Norbert
Please Log in or Create an account to join the conversation.
- Todd Zuercher
- Offline
- Platinum Member
-
Less
More
- Posts: 4793
- Thank you received: 1481
9 years 6 months ago - 9 years 6 months ago #92278
by Todd Zuercher
Replied by Todd Zuercher on topic Spindel problems in Gmoccapy
I believe you only have one encoder so the pin names should be:
net spindle-index => encoder.0.phase-Z => encoder.0.phase-A
(There were also other places where encoder.1 should be changed to encoder.0, but Norbert corrected them while I was typing.)
net spindle-index => encoder.0.phase-Z => encoder.0.phase-A
(There were also other places where encoder.1 should be changed to encoder.0, but Norbert corrected them while I was typing.)
Last edit: 9 years 6 months ago by Todd Zuercher.
Please Log in or Create an account to join the conversation.
- tecno
- Offline
- Platinum Member
-
Less
More
- Posts: 1850
- Thank you received: 127
9 years 6 months ago - 9 years 6 months ago #92279
by tecno
Replied by tecno on topic Spindel problems in Gmoccapy
Last edit: 9 years 6 months ago by tecno.
Please Log in or Create an account to join the conversation.
- Todd Zuercher
- Offline
- Platinum Member
-
Less
More
- Posts: 4793
- Thank you received: 1481
9 years 6 months ago - 9 years 6 months ago #92281
by Todd Zuercher
Replied by Todd Zuercher on topic Spindel problems in Gmoccapy
You have 3 lines that are essentially trying to do the same thing twice.
These two lines
net spindle-index => encoder.0.phase-Z => encoder.0.phase-A
net spindle-index <= parport.0.pin-10-in
and this one line are functionally equivalent, except for the signal name.
net spindle_index parport.0.pin-10-in => encoder.0.phase-A => encoder.0.phase-Z
Here I've deleted the offending line and reconnected the original parallel port pin line.
These two lines
net spindle-index => encoder.0.phase-Z => encoder.0.phase-A
net spindle-index <= parport.0.pin-10-in
and this one line are functionally equivalent, except for the signal name.
net spindle_index parport.0.pin-10-in => encoder.0.phase-A => encoder.0.phase-Z
Here I've deleted the offending line and reconnected the original parallel port pin line.
Code:
# Generated by stepconf 1.1 at Mon Apr 17 15:16:45 2017
# 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 hal_parport cfg="0x378 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0 ctrl_type=p,p,v
loadrt charge_pump
setp charge-pump.enable 1
net charge-pump <= charge-pump.out
loadrt encoder num_chan=1
loadrt scale count=1
loadrt near
net spindle-cmd-rpm => stepgen.2.velocity-cmd
setp stepgen.2.position-scale 0.9 #steps/RPM
setp stepgen.2.steplen 5000
setp stepgen.2.stepspace 5000
#setp stepgen.2.dirdelay 35000
setp stepgen.2.maxaccel 5000
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf charge-pump base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
addf scale.0 servo-thread
addf near.0 servo-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-index => encoder.0.phase-Z => encoder.0.phase-A
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-enable <= motion.spindle-on => stepgen.2.enable
net spindle-cw <= stepgen.2.step
net spindle-ccw <= stepgen.2.dir
#setp encoder.0.counter-mode 1
setp encoder.0.position-scale 1
setp encoder.0.counter-mode 1
setp encoder.0.x4-mode FALSE
setp scale.0.gain 60
setp near.0.scale 1.2
setp near.0.difference 10
net spindle-cmd => near.0.in1
net spindle-rpm => near.0.in2
net spindle-at-speed near.0.out => motion.spindle-at-speed
net coolant-flood <= iocontrol.0.coolant-flood
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
#setp parport.0.pin-04-out-invert 1
net zstep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 1
net zdir => parport.0.pin-05-out
net spindle-cw => parport.0.pin-06-out
net spindle-ccw => parport.0.pin-07-out
net coolant-flood => parport.0.pin-09-out
net charge-pump => parport.0.pin-14-out
net spindle-index <= parport.0.pin-10-in
net home-z <= parport.0.pin-11-in-not
net home-x <= parport.0.pin-12-in-not
net estop-ext <= parport.0.pin-15-in-not
net spindle-index-enable motion.spindle-index-enable <=> encoder.0.index-enable
net spindle-rps encoder.0.velocity => scale.0.in
net spindle-rpm scale.0.out
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
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_2]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
setp stepgen.1.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.1.position-cmd
net zpos-fb stepgen.1.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.1.step
net zdir <= stepgen.1.dir
net zenable axis.2.amp-enable-out => stepgen.1.enable
net home-z => axis.2.home-sw-in
net estop-ext => 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
Last edit: 9 years 6 months ago by Todd Zuercher.
Please Log in or Create an account to join the conversation.
Moderators: newbynobi, HansU
Time to create page: 1.310 seconds