8i20 problem with rotor homing?

More
2 years 6 months ago #298299 by Henk
HI
Im having some problems setting up a motor for a 4th axis on  my Deckel FP5.

We have been running this 8i20 with another 4th axis for 5 years and didn’t have any problems. Recently, we acquired another 4th axis and decided to use the new one on the deckel instead. So i copied the config and made the changes i thought necessary. 

Both motors are Fanuc. Both are 8 pole (133Hz = 2000RPM). The "old" one is 1.2kw and the new one is 0.4kw. 

I mounted incremental encoders on the back of the motors, and the counts/ rev is also different, but i changed this in the new config as well.

Using the BLDC component, config=QI, rotor homing seems to work ok, the motor jumps to a position, then rotates slowly and finds the encoder index

The problem: 
After rotor homing, the motor draws a steady current when standing still. At standstill, this current can be either positive or negative as seen below. When loading the motor shaft by hand, i can feel a lot more resistance in the one direction compared to the other. this can also be seen in the value of the current (halscope images below). When jogging the motor fwd/rev there is a major difference in current, and the motor is not connected to the 4th axis, freewheeling. The motor also overheats with no load attached. i doubt that there is something wrong with the motor, because it is basically brand new, although this cannot be ruled out.

Relevant section of my halfile below.  Im not sure how to figure out how to solve this problem.
Code:
#******************* #  AXIS a #******************* setp timedelay.4ax.on-delay 1 net a-init-done => not.4ax.in net 4ax-not-init <= not.4ax.out => and2.4ax.in0 net mach-on-but => and2.4ax.in1  net initialise-4ax <= and2.4ax.out => timedelay.4ax.in net init-4ax-delay <= timedelay.4ax.out => bldc.0.init net a-init-done <= bldc.0.init-done =>  and2-4ax-mach-on.in0 net mach-on-but => and2-4ax-mach-on.in1 net latch-mach <= and2-4ax-mach-on.out => halui.machine.on  net mach-on-but => or2.mach-on.in0 net machine-is-on => or2.mach-on.in1 net machine-on <= or2.mach-on.out => hm2_5i25.0.7i71.1.0.output-07 => hm2_5i25.0.7i77.0.0.output-00 setp bldc.0.rev 0 setp bldc.0.initvalue 1 net initcurr <= bldc.0.out => sum2.0.in0 setp   pid.a.Pgain     [JOINT_3]P setp   pid.a.Igain     [JOINT_3]I setp   pid.a.Dgain     [JOINT_3]D setp   pid.a.bias      [JOINT_3]BIAS setp   pid.a.FF0       [JOINT_3]FF0 setp   pid.a.FF1       [JOINT_3]FF1 setp   pid.a.FF2       [JOINT_3]FF2 setp   pid.a.deadband  [JOINT_3]DEADBAND setp   pid.a.maxoutput [JOINT_3]MAX_OUTPUT setp   pid.a.error-previous-target true net a-index-enable  <=> pid.a.index-enable net a-enable        =>  pid.a.enable net a-pos-cmd       =>  pid.a.command #net a-vel-cmd       =>  pid.a.command-deriv net a-pos-fb        =>  pid.a.feedback net a-output        =>  pid.a.output # ---BLDC Generator signals/setup--- setp bldc.0.scale 10000 net a-pos-rawcounts => bldc.0.rawcounts setp bldc.0.poles 8 net ang-a bldc.0.rotor-angle hm2_5i25.0.8i20.1.1.angle net a-index-enable bldc.0.index-enable setp hm2_5i25.0.8i20.1.1.current-scalemax 10 setp hm2_5i25.0.8i20.1.1.current-maxlim 10 setp hm2_5i25.0.8i20.1.1.current-minlim -10 net 8i20curr <= sum2.0.out => hm2_5i25.0.8i20.1.1.current net a-output    => sum2.0.in1 net a-pos-cmd    joint.3.motor-pos-cmd net a-enable     joint.3.amp-enable-out # ---Encoder feedback signals/setup--- setp    hm2_5i25.0.encoder.03.counter-mode 0 setp    hm2_5i25.0.encoder.03.filter 1 setp    hm2_5i25.0.encoder.03.index-invert 0 setp    hm2_5i25.0.encoder.03.index-mask 0 setp    hm2_5i25.0.encoder.03.index-mask-invert 0 setp    hm2_5i25.0.encoder.03.scale  [JOINT_3]ENCODER_SCALE setp    hm2_5i25.0.encoder.03.latch-enable 1 net a-pos-fb              <=  hm2_5i25.0.encoder.03.position net a-vel-fb               <=  hm2_5i25.0.encoder.03.velocity net a-pos-fb               =>  joint.3.motor-pos-fb net a-index-enable    joint.3.index-enable   net a-pos-rawcounts        <=  hm2_5i25.0.encoder.03.rawcounts sets a-index-enable true net home-a <= hm2_5i25.0.7i77.0.0.input-31-not =>  joint.3.home-sw-in

Please Log in to join the conversation.

More
2 years 6 months ago #298300 by PCW
Replied by PCW on topic 8i20 problem with rotor homing?
My guess is the the index position does not = magnetic phase angle 0
You may have to rotate the encoder. It may be possible to use one of the
BLDC offset pins for this but I am not sure about those.

Please Log in to join the conversation.

More
2 years 6 months ago #298339 by Henk
HI PCW, thanks for replying so soon. I will try rotating the encoder and align the index with a magnetic zero.

I was under the impression that with the QI config, the offset will be measured using the index-latch after first aligning the rotor magnetically. But reading the man page it doesn't explicitly state that.

Henk

Please Log in to join the conversation.

More
2 years 6 months ago #299115 by Henk
Hi
Just some feedback in case it may help someone in the future..

With the motor removed from the machine, I used the terminal to sets the index-enable pin true. "halcmd sets a-index-enable 1", then checked the counts in halshow while i rotated the motor shaft slowly by hand. When the counts reset i moved the shaft to get close to 0 counts, just in case...

I then connected a small 12v lead-acid battery briefly to the motor power cable with U on + and V+W on -, as the man page suggests and let the motor jump to the nearest magnetic zero.

Hal configuration showed negative 958 (-958). My encoder counts/rev is 10000, so i added a line in my hal file: "setp bldc.0.encoder-offset 9042" (10000-958 = 9042.

The result was that the current was nearly equal in both directions. I actually tweaked the offset value a bit to get it better, but it was very close.

This solved the issue described above.

Thanks to PCW for pushing me in the right direction.

Regards
Henk

Please Log in to join the conversation.

Time to create page: 0.096 seconds
Powered by Kunena Forum