Problem, Problem and more Problems

More
9 years 9 months ago #85356 by Holzwurm56
Hello,
i want to bring my cnc machine to work. Manual moving works, encoder scale = o. k., moving direction = o. k., homing direction = o. k.. At first i want to prepare the y-axis, this axis is easy to move with hand when system failed or the axis move in the endswitch.
When i move the axis with the arrow keys after some cm comes a following error.
When i start the homing sequence the axis moves in +y and then slow in -y, when the following error comes and i start the homing new
the axis moves in +y and by ariving the endswitch the axis move in +y too.
I set P to 1000 but there is no diffrence between 50 and 1000.
Code:
# Generated by PNCconf at Thu Jan 5 10:35:33 2017 # Änderungen an dieser Datei werden beim nächsten # overwritten when you run PNCconf again [EMC] MACHINE = BIMA600 DEBUG = 0 [DISPLAY] DISPLAY = axis POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 3.000000 MAX_SPINDLE_OVERRIDE = 1.000000 MIN_SPINDLE_OVERRIDE = 0.500000 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = /home/rauls/linuxcnc/nc_files INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm POSITION_FEEDBACK = ACTUAL DEFAULT_LINEAR_VELOCITY = 0.25 MAX_LINEAR_VELOCITY = 1.0 MIN_LINEAR_VELOCITY = 0.010000 DEFAULT_ANGULAR_VELOCITY = 0.250000 MAX_ANGULAR_VELOCITY = 1.000000 MIN_ANGULAR_VELOCITY = 0.000000 EDITOR = gedit GEOMETRY = xyz [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 SERVO_PERIOD = 1000000 [HOSTMOT2] # **** This is for info only **** # DRIVER0=hm2_pci # BOARD0=5i25 [HAL] HALUI = halui HALFILE = BIMA600.hal HALFILE = custom.hal POSTGUI_HALFILE = postgui_call_list.hal SHUTDOWN = shutdown.hal [HALUI] [TRAJ] AXES = 3 COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 2.50 MAX_LINEAR_VELOCITY = 25.00 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl #******************** # Axis X #******************** [AXIS_0] TYPE = LINEAR HOME = 3900.0 FERROR = 50.0 MIN_FERROR = 50.0 MAX_VELOCITY = 50.0 MAX_ACCELERATION = 75.0 P = 50 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.01 MAX_OUTPUT = 10.0 ENCODER_SCALE = 3500.0 OUTPUT_SCALE = -10.0 OUTPUT_MIN_LIMIT = -10.0 OUTPUT_MAX_LIMIT = 10.0 MIN_LIMIT = -100.0 MAX_LIMIT = 4500.0 HOME_OFFSET = 4000.000000 HOME_SEARCH_VEL = 1.0 HOME_LATCH_VEL = -0.2 HOME_FINAL_VEL = 0.5000000 HOME_USE_INDEX = NO HOME_SEQUENCE = 1 #******************** # Axis Y #******************** [AXIS_1] TYPE = LINEAR HOME = 1450.0 FERROR = 100.0 MIN_FERROR = 100.0 MAX_VELOCITY = 50.0 MAX_ACCELERATION = 75.0 P = 50 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.001 DEADBAND = 0.01 MAX_OUTPUT = 10.0 ENCODER_SCALE = 400.0 OUTPUT_SCALE = -10.0 OUTPUT_MIN_LIMIT = -10.0 OUTPUT_MAX_LIMIT = 10.0 MIN_LIMIT = -50.0 MAX_LIMIT = 1600.00 HOME_OFFSET = 1500.000000 HOME_SEARCH_VEL = 0.50 HOME_LATCH_VEL = -0.20 HOME_FINAL_VEL = 0.5000000 HOME_USE_INDEX = NO HOME_SEQUENCE = 1 #******************** # Axis Z #******************** [AXIS_2] TYPE = LINEAR HOME = 210.0 FERROR = 50.0 MIN_FERROR = 50.0 MAX_VELOCITY = 12.50 MAX_ACCELERATION = 35.0 P = 50 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.01 MAX_OUTPUT = 5.0 ENCODER_SCALE = 1000.0 OUTPUT_SCALE = -10.0 OUTPUT_MIN_LIMIT = -10.0 OUTPUT_MAX_LIMIT = 10.0 MIN_LIMIT = -10.0 MAX_LIMIT = 230.0 HOME_OFFSET = 220.000000 HOME_SEARCH_VEL = 1.0 HOME_LATCH_VEL = -0.2 HOME_FINAL_VEL = 0.5000000 HOME_USE_INDEX = NO HOME_SEQUENCE = 0 #******************** # Spindle #******************** [SPINDLE_9] P = 0 I = 0 D = 0 FF0 = 1 FF1 = 0 FF2 = 0 BIAS = 0 DEADBAND = 0 MAX_OUTPUT = 2000
Code:
# Generated by PNCconf at Thu Jan 5 10:35:33 2017 # Änderungen an dieser Datei werden beim nächsten # overwritten when you run PNCconf again loadrt trivkins loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES loadrt hostmot2 loadrt hm2_pci config=" num_encoders=4 num_pwmgens=4 num_stepgens=0 sserial_port_0=000xxx" setp hm2_5i25.0.watchdog.timeout_ns 5000000 loadrt pid names=pid.x,pid.y,pid.z,pid.s addf hm2_5i25.0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf pid.x.do-pid-calcs servo-thread addf pid.y.do-pid-calcs servo-thread addf pid.z.do-pid-calcs servo-thread addf pid.s.do-pid-calcs servo-thread addf hm2_5i25.0.write servo-thread # external output signals # external input signals # --- HOME-X --- net home-x <= hm2_5i25.0.7i77.0.0.input-00-not # --- HOME-Y --- net home-y <= hm2_5i25.0.7i77.0.0.input-01-not # --- HOME-Z --- net home-z <= hm2_5i25.0.7i77.0.0.input-02-not #******************* # 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 .0005 net x-index-enable <=> pid.x.index-enable net x-enable => pid.x.enable net x-pos-cmd => pid.x.command net x-vel-cmd => pid.x.command-deriv net x-pos-fb => pid.x.feedback net x-output => pid.x.output # ---PWM Generator signals/setup--- setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE setp hm2_5i25.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT net x-output => hm2_5i25.0.7i77.0.1.analogout0 net x-pos-cmd axis.0.motor-pos-cmd net x-enable axis.0.amp-enable-out # enable _all_ sserial pwmgens net x-enable hm2_5i25.0.7i77.0.1.analogena # ---Encoder feedback signals/setup--- setp hm2_5i25.0.encoder.00.counter-mode 0 setp hm2_5i25.0.encoder.00.filter 1 setp hm2_5i25.0.encoder.00.index-invert 0 setp hm2_5i25.0.encoder.00.index-mask 0 setp hm2_5i25.0.encoder.00.index-mask-invert 0 setp hm2_5i25.0.encoder.00.scale [AXIS_0]ENCODER_SCALE net x-pos-fb <= hm2_5i25.0.encoder.00.position net x-vel-fb <= hm2_5i25.0.encoder.00.velocity net x-pos-fb => axis.0.motor-pos-fb net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable net x-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts # ---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 #******************* # AXIS Y #******************* setp pid.y.Pgain [AXIS_1]P setp pid.y.Igain [AXIS_1]I setp pid.y.Dgain [AXIS_1]D setp pid.y.bias [AXIS_1]BIAS setp pid.y.FF0 [AXIS_1]FF0 setp pid.y.FF1 [AXIS_1]FF1 setp pid.y.FF2 [AXIS_1]FF2 setp pid.y.deadband [AXIS_1]DEADBAND setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT setp pid.y.error-previous-target true setp pid.y.maxerror .0005 net y-index-enable <=> pid.y.index-enable net y-enable => pid.y.enable net y-pos-cmd => pid.y.command net y-vel-cmd => pid.y.command-deriv net y-pos-fb => pid.y.feedback net y-output => pid.y.output # ---PWM Generator signals/setup--- setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [AXIS_1]OUTPUT_SCALE setp hm2_5i25.0.7i77.0.1.analogout1-minlim [AXIS_1]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [AXIS_1]OUTPUT_MAX_LIMIT net y-output => hm2_5i25.0.7i77.0.1.analogout1 net y-pos-cmd axis.1.motor-pos-cmd net y-enable axis.1.amp-enable-out # ---Encoder feedback signals/setup--- setp hm2_5i25.0.encoder.01.counter-mode 0 setp hm2_5i25.0.encoder.01.filter 1 setp hm2_5i25.0.encoder.01.index-invert 0 setp hm2_5i25.0.encoder.01.index-mask 0 setp hm2_5i25.0.encoder.01.index-mask-invert 0 setp hm2_5i25.0.encoder.01.scale [AXIS_1]ENCODER_SCALE net y-pos-fb <= hm2_5i25.0.encoder.01.position net y-vel-fb <= hm2_5i25.0.encoder.01.velocity net y-pos-fb => axis.1.motor-pos-fb net y-index-enable axis.1.index-enable <=> hm2_5i25.0.encoder.01.index-enable net y-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts # ---setup home / limit switch signals--- net home-y => axis.1.home-sw-in net y-neg-limit => axis.1.neg-lim-sw-in net y-pos-limit => axis.1.pos-lim-sw-in #******************* # AXIS Z #******************* setp pid.z.Pgain [AXIS_2]P setp pid.z.Igain [AXIS_2]I setp pid.z.Dgain [AXIS_2]D setp pid.z.bias [AXIS_2]BIAS setp pid.z.FF0 [AXIS_2]FF0 setp pid.z.FF1 [AXIS_2]FF1 setp pid.z.FF2 [AXIS_2]FF2 setp pid.z.deadband [AXIS_2]DEADBAND setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT setp pid.z.error-previous-target true setp pid.z.maxerror .0005 net z-index-enable <=> pid.z.index-enable net z-enable => pid.z.enable net z-pos-cmd => pid.z.command net z-vel-cmd => pid.z.command-deriv net z-pos-fb => pid.z.feedback net z-output => pid.z.output # ---PWM Generator signals/setup--- setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_2]OUTPUT_SCALE setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_2]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_2]OUTPUT_MAX_LIMIT net z-output => hm2_5i25.0.7i77.0.1.analogout2 net z-pos-cmd axis.2.motor-pos-cmd net z-enable axis.2.amp-enable-out # ---Encoder feedback signals/setup--- setp hm2_5i25.0.encoder.02.counter-mode 0 setp hm2_5i25.0.encoder.02.filter 1 setp hm2_5i25.0.encoder.02.index-invert 0 setp hm2_5i25.0.encoder.02.index-mask 0 setp hm2_5i25.0.encoder.02.index-mask-invert 0 setp hm2_5i25.0.encoder.02.scale [AXIS_2]ENCODER_SCALE net z-pos-fb <= hm2_5i25.0.encoder.02.position net z-vel-fb <= hm2_5i25.0.encoder.02.velocity net z-pos-fb => axis.2.motor-pos-fb net z-index-enable axis.2.index-enable <=> hm2_5i25.0.encoder.02.index-enable net z-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts # ---setup home / limit switch signals--- net home-z => axis.2.home-sw-in net z-neg-limit => axis.2.neg-lim-sw-in net z-pos-limit => axis.2.pos-lim-sw-in #******************* # SPINDLE S #******************* setp pid.s.Pgain [SPINDLE_9]P setp pid.s.Igain [SPINDLE_9]I setp pid.s.Dgain [SPINDLE_9]D setp pid.s.bias [SPINDLE_9]BIAS setp pid.s.FF0 [SPINDLE_9]FF0 setp pid.s.FF1 [SPINDLE_9]FF1 setp pid.s.FF2 [SPINDLE_9]FF2 setp pid.s.deadband [SPINDLE_9]DEADBAND setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT setp pid.s.error-previous-target true setp pid.s.maxerror .0005 net spindle-index-enable <=> pid.s.index-enable net spindle-enable => pid.s.enable net spindle-vel-cmd-rpm => pid.s.command net spindle-vel-fb-rpm => pid.s.feedback net spindle-output <= pid.s.output # ---setup spindle control signals--- net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs net spindle-vel-cmd-rpm <= motion.spindle-speed-out net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs net spindle-enable <= motion.spindle-on net spindle-cw <= motion.spindle-forward net spindle-ccw <= motion.spindle-reverse net spindle-brake <= motion.spindle-brake net spindle-revs => motion.spindle-revs net spindle-at-speed => motion.spindle-at-speed net spindle-vel-fb-rps => motion.spindle-speed-in net spindle-index-enable <=> motion.spindle-index-enable # ---Setup spindle at speed signals--- sets spindle-at-speed true #****************************** # connect miscellaneous signals #****************************** # ---HALUI signals--- net joint-select-a halui.joint.0.select net x-is-homed halui.joint.0.is-homed net jog-x-pos halui.jog.0.plus net jog-x-neg halui.jog.0.minus net jog-x-analog halui.jog.0.analog net joint-select-b halui.joint.1.select net y-is-homed halui.joint.1.is-homed net jog-y-pos halui.jog.1.plus net jog-y-neg halui.jog.1.minus net jog-y-analog halui.jog.1.analog net joint-select-c halui.joint.2.select net z-is-homed halui.joint.2.is-homed net jog-z-pos halui.jog.2.plus net jog-z-neg halui.jog.2.minus net jog-z-analog halui.jog.2.analog net jog-selected-pos halui.jog.selected.plus net jog-selected-neg halui.jog.selected.minus net spindle-manual-cw halui.spindle.forward net spindle-manual-ccw halui.spindle.reverse net spindle-manual-stop halui.spindle.stop net machine-is-on halui.machine.is-on net jog-speed halui.jog-speed net MDI-mode halui.mode.is-mdi # ---coolant signals--- net coolant-mist <= iocontrol.0.coolant-mist net coolant-flood <= iocontrol.0.coolant-flood # ---probe signal--- net probe-in => motion.probe-input # ---motion control signals--- net in-position <= motion.in-position net machine-is-enabled <= motion.motion-enabled # ---digital in / out signals--- # ---estop signals--- net estop-out <= iocontrol.0.user-enable-out net estop-out => iocontrol.0.emc-enable-in # ---manual tool change signals--- loadusr -W hal_manualtoolchange net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change net tool-change-confirmed 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
Can someone help me
Thanks
Hans

Please Log in to join the conversation.

More
9 years 9 months ago #85358 by PCW
After you get feedback working (jog moves in the right direction and motors hold position)
you need to tune the PID loop. Heres JTs basic tuning tutorial:

gnipsel.com/linuxcnc/tuning/servo.html

( at the minimum FF1 is very likely wrong since FF1=1 means the motor should move at 10 mm/sec at 10V )

Please Log in to join the conversation.

More
9 years 9 months ago #85364 by Holzwurm56
Hello,
I read this manual, but i set P to 1000 and there is no effect and the courios condition when i run the homing sequence, I cannot understand.
Does someone knows what is a usable result for FERROR and MIN_FERROR? Means this the diffrence between nominal and real position in mm or in encoder counts?

Thanks
Hans

Please Log in to join the conversation.

More
9 years 9 months ago #85366 by PCW
ferror and min_ferror would be in machine units (mm in your case)

It sounds like something basic is wrong with your drives or how they are connected, or some setup error of some kind

Even a very badly tuned system would not have more than a few mm error
( and P of 1000 should cause terrible oscillations since this means a error of only .01 mm would cause a full scale (10V)
speed command )

Please Log in to join the conversation.

More
9 years 9 months ago #85370 by Holzwurm56
Hello PCW,
when I use LinuxCNC for a milling machine and while milling a circle or a ellipse and there is 1mm diffrence the workpiece will be scrap.

Thanks

Hans

Please Log in to join the conversation.

More
9 years 9 months ago #85371 by PCW
Sure

I am saying that before fine tuning the following error should not be more than a couple mm

The fact that you can cause a 100 mm following error indicates something more than just tuning is wrong

Please Log in to join the conversation.

More
9 years 9 months ago #85423 by leonkamffer
I suggest remove the setp pid.y.maxerror .0005 for all the axis in the hal file. Some versions of pncconfig add it. Since the pid error is limited even very large K will have limited effect on the PID output. I also could not tune the PID on a new machine till I removed the pid.n.maxerror lines from hal file.

Please Log in to join the conversation.

More
9 years 9 months ago #85458 by johnmc1
Good day,
I think that the following lines are are not required for the x ,y, z, spindle axis.
Try commenting out in x,y,z, spindle
It works for me
example

#setp pid.x.error-previous-target true
#setp pid.x.maxerror .0005

cheers john

Please Log in to join the conversation.

More
9 years 9 months ago #85509 by Holzwurm56
Hello John,
many thanks for your answer, it was very helpful.
I comment out these lines in the hal-file. The follwing error message appears no more.
BIAS stable.
The axis calibration react on the P setting.

Thanks

Hans

Please Log in to join the conversation.

More
9 years 9 months ago #85565 by Holzwurm56
Hello,
when I move the axis with the arrowkeys the axis starts moving and then is there a hearable change of the speed. When I
let loose the key the axis move some mm further.
I record the halscope display with my handy, but the file has many Mb.
In what kind of way can i show them here?

Thanks

Hans

Please Log in to join the conversation.

Time to create page: 0.226 seconds
Powered by Kunena Forum