Forum Header

Charge Pump BASE_PERIOD = 100000 12,5kHz 5khz

More
7 years 10 months ago #122051 by Adam Maszynotwór
Hey
(he wrote via Google translator)
LinuxCNC 2.7.14
I met with a strange problem:
I wanted to use the Charge pump for safety
has 2 PC and 1 laptop
Latency Test:
PC1 8000
PC2 16000
A laptop about 25000

When I make configurations in stepconf Wizard, regardless of what result I type, I always receive in INI.

BASE_PERIOD = 100,000
SERVO_PERIOD = 1,000,000

It seems to me that the result entered in the stepconf Wizard should change the above values.

Additionally
PC1 generates on PIN 17 5kHz PIN
PC2 generates on PIN 17 500Hz
The laptop generates PIN 17 5kHz PIN

for those since everyone has INI. ?
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000

why PC2 with a better result gives only 500HZ for
BASE_PERIOD = 100000
a laptop with a worse result dje 5kHZ for
BASE_PERIOD = 100000

it seems to me that the instructions say that the frequency of the pump is calculated from BASE_PERIOD so it does not understand why PC2 gets only 500hz :(

Thank you for your help and forbearance

Please Log in to join the conversation.

More
7 years 10 months ago #122212 by andypugh
You can edit the INI file to change the base period.

I think that stepconf chooses a long base period if the maximum step rate required can still be achieved.

github.com/LinuxCNC/linuxcnc/blob/master...onf/stepconf.py#L483

But apparently stepconf is not basing that on your required charge pump frequency.

As for the 500Hz from the laptop, is that actually running a realtime kernel? and is the charge pump in the base thread or in the servo thread?

Please Log in to join the conversation.

More
7 years 10 months ago #122265 by Adam Maszynotwór
It seems to me a mistake.
For this we use the stepconf Wizard to calculate the contents of the INI file well.
And now, regardless of the values ​​entered in Base Period Maximum Jitter, we get the same result in ini. (often inflated)
I know that I can edit the INI files myself, but for that I use the stepconf Wizard to calculate, for example, BASE_PERIOD for me

It used to work well (I made old configurations of other machines and BASE_PERIOD values ​​were there adequate to the results of the latency test)

now I have found a spreadsheet and I will change BASE_PERIOD in INI based on it

wiki.linuxcnc.org/cgi-bin/wiki.pl?Tweaki...ftwareStepGeneration


when it comes to pump problem, you did not talk about the laptop, it's OK:
PC1 generates on PIN 17 5kHz is OK (latency test = 7000)
PC2 generates on PIN 17 500Hz It's bad (latency test = 16000)
The laptop generates PIN 17 5kHz is OK (latency test = 25,000)

So the laptop, despite the fact that the latency test has the worst, still generates 5khz correctly

This PC2 has a problem despite a good result of 16,000 (of course, BASE_PERIOD = 100,000 because this is how the wizard generates) only 500hz
all machines have the latest version of linuxcnc
and a new clean configuration was made via the stepconf Wizard with the use of a charge pump

I confirm in HAL the charge pump signal is associated with BASE_PERIOD (because it implicitly binds the stepconf Wizard)

Please Log in to join the conversation.

More
7 years 10 months ago #122274 by PCW
Can you post the generated hal/ini files? Its really difficult to determine whats actually happening here with no detailed information

Please Log in to join the conversation.

More
7 years 10 months ago #122372 by Adam Maszynotwór
PC2 "Max Jitter" 16000 Charge pump only 500Hz
Code:
# Generated by stepconf 1.1 at Thu Dec 13 13:18:30 2018 # Jeśli zmodyfikujesz ten plik zmainy zostaną # nadpisane gdy uruchomisz ponownie Stepconf [EMC] MACHINE = moja-frezarka DEBUG = 0 [DISPLAY] DISPLAY = axis EDITOR = gedit POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL ARCDIVISION = 64 GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in MAX_FEED_OVERRIDE = 1.2 MIN_SPINDLE_OVERRIDE = 0.5 MAX_SPINDLE_OVERRIDE = 1.2 DEFAULT_LINEAR_VELOCITY = 2.50 MIN_LINEAR_VELOCITY = 0 MAX_LINEAR_VELOCITY = 25.00 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = /home/cnc/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 = moja-frezarka.hal HALFILE = custom.hal POSTGUI_HALFILE = custom_postgui.hal [TRAJ] AXES = 3 COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 2.50 MAX_VELOCITY = 25.00 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl [AXIS_0] TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 25.0 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 80.0 FERROR = 1 MIN_FERROR = .25 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 HOME_OFFSET = 0.0 [AXIS_1] TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 25.0 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 80.0 FERROR = 1 MIN_FERROR = .25 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 HOME_OFFSET = 0.0 [AXIS_2] TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 25.0 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 80.0 FERROR = 1 MIN_FERROR = .25 MIN_LIMIT = -100.0 MAX_LIMIT = 0.001 HOME_OFFSET = 0.0
Code:
# Generated by stepconf 1.1 at Thu Dec 13 13:18:30 2018 # Jeśli zmodyfikujesz ten plik zmainy zostaną # nadpisane gdy uruchomisz ponownie 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="0x378 out" setp parport.0.reset-time 5000 loadrt stepgen step_type=0,0,0 loadrt charge_pump net estop-out charge-pump.enable iocontrol.0.user-enable-out net charge-pump <= charge-pump.out 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 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-on <= motion.spindle-on net spindle-ccw <= motion.spindle-reverse net estop-out => parport.0.pin-01-out net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 net xdir => parport.0.pin-03-out net ystep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net ydir => parport.0.pin-05-out net zstep => parport.0.pin-06-out setp parport.0.pin-06-out-reset 1 net zdir => parport.0.pin-07-out net astep => parport.0.pin-08-out setp parport.0.pin-08-out-reset 1 net adir => parport.0.pin-09-out net spindle-on => parport.0.pin-14-out net spindle-ccw => parport.0.pin-16-out net charge-pump => parport.0.pin-17-out setp stepgen.0.position-scale [AXIS_0]SCALE setp stepgen.0.steplen 1 setp stepgen.0.stepspace 0 setp stepgen.0.dirhold 40000 setp stepgen.0.dirsetup 40000 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 setp stepgen.1.position-scale [AXIS_1]SCALE setp stepgen.1.steplen 1 setp stepgen.1.stepspace 0 setp stepgen.1.dirhold 40000 setp stepgen.1.dirsetup 40000 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 setp stepgen.2.position-scale [AXIS_2]SCALE setp stepgen.2.steplen 1 setp stepgen.2.stepspace 0 setp stepgen.2.dirhold 40000 setp stepgen.2.dirsetup 40000 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

Laptop "Max Jitter" 25000 Charge pump 5kHz
Code:
# Generated by stepconf 1.1 at Thu Dec 13 15:58:31 2018 # Jeśli zmodyfikujesz ten plik zmainy zostaną # nadpisane gdy uruchomisz ponownie Stepconf [EMC] MACHINE = moja-frezarka DEBUG = 0 [DISPLAY] DISPLAY = axis EDITOR = gedit POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL ARCDIVISION = 64 GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in MAX_FEED_OVERRIDE = 1.2 MIN_SPINDLE_OVERRIDE = 0.5 MAX_SPINDLE_OVERRIDE = 1.2 DEFAULT_LINEAR_VELOCITY = 2.50 MIN_LINEAR_VELOCITY = 0 MAX_LINEAR_VELOCITY = 25.00 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = /home/cnc/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 = moja-frezarka.hal HALFILE = custom.hal POSTGUI_HALFILE = custom_postgui.hal [TRAJ] AXES = 3 COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 2.50 MAX_VELOCITY = 25.00 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl [AXIS_0] TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 25.0 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 80.0 FERROR = 1 MIN_FERROR = .25 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 HOME_OFFSET = 0.0 [AXIS_1] TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 25.0 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 80.0 FERROR = 1 MIN_FERROR = .25 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 HOME_OFFSET = 0.0 [AXIS_2] TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 25.0 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 80.0 FERROR = 1 MIN_FERROR = .25 MIN_LIMIT = -100.0 MAX_LIMIT = 0.001 HOME_OFFSET = 0.0
Code:
# Generated by stepconf 1.1 at Thu Dec 13 15:58:31 2018 # Jeśli zmodyfikujesz ten plik zmainy zostaną # nadpisane gdy uruchomisz ponownie 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 5000 loadrt stepgen step_type=0,0,0 loadrt charge_pump net estop-out charge-pump.enable iocontrol.0.user-enable-out net charge-pump <= charge-pump.out loadrt pwmgen output_type=1 addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf charge-pump base-thread addf pwmgen.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 addf pwmgen.update servo-thread net spindle-cmd-rpm => pwmgen.0.value net spindle-on <= motion.spindle-on => pwmgen.0.enable net spindle-pwm <= pwmgen.0.pwm setp pwmgen.0.pwm-freq 100.0 setp pwmgen.0.scale 1166.66666667 setp pwmgen.0.offset 0.114285714286 setp pwmgen.0.dither-pwm true 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 net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 net xdir => parport.0.pin-03-out net ystep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net ydir => parport.0.pin-05-out net zstep => parport.0.pin-06-out setp parport.0.pin-06-out-reset 1 net zdir => parport.0.pin-07-out net astep => parport.0.pin-08-out setp parport.0.pin-08-out-reset 1 net adir => parport.0.pin-09-out net spindle-cw => parport.0.pin-14-out net spindle-pwm => parport.0.pin-16-out net charge-pump => parport.0.pin-17-out setp stepgen.0.position-scale [AXIS_0]SCALE setp stepgen.0.steplen 1 setp stepgen.0.stepspace 0 setp stepgen.0.dirhold 45000 setp stepgen.0.dirsetup 45000 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 setp stepgen.1.position-scale [AXIS_1]SCALE setp stepgen.1.steplen 1 setp stepgen.1.stepspace 0 setp stepgen.1.dirhold 45000 setp stepgen.1.dirsetup 45000 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 setp stepgen.2.position-scale [AXIS_2]SCALE setp stepgen.2.steplen 1 setp stepgen.2.stepspace 0 setp stepgen.2.dirhold 45000 setp stepgen.2.dirsetup 45000 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

Please Log in to join the conversation.

More
7 years 10 months ago #122378 by PCW
I dont actually see any significant differences in the hal/ini files

I think I would try the "500 Hz" file set on the "5000 Hz" machine or vice versa

It may in fact be a hardware issue in the "500 Hz" machine

Please Log in to join the conversation.

Time to create page: 0.087 seconds
Powered by Kunena Forum