getting started with 8i20
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
For
disconnect the PID and manually set the current from the command line
I replaced
net emcmot.00.pos-cmd axis.0.motor-motor-pos-cmd => pid.x.command
by
net emcmot.00.pos-cmd axis.0.motor-motor-pos-cmd => bldc.0.value
I deleted
net motor.00.motor.command pid.x.output => bldc.value
but I kept
net motor.00.current bldc.out => hm2_7i43.0.8i20.0.2.current
My motor turns, approximately, three times as fast when I use _ increments _ (0.1 --> 0.5 mm) and 100%, then I have an join's error[ /i].How fast does the motor turn
For hm2_7i43.0.8i20.02.current , Halscope shows a linear increase of the current
With continuous the motor seems to have a strange behavior.....
Please Log in or Create an account to join the conversation.
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
Please Log in or Create an account to join the conversation.
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
By rereadting the man of the 8i20, I notice that I did not well understand this extract
The 8I20 requires reference angle and requested current/torque or voltage values sent from a host controller. The 8I20 uses the
requested torque and reference angle to control the current loop.
In mode closed loop
reference angle --> is supplied by the encoder
current --> is supplied by bldc.0.value
but, in open loop
I suppose that the reference angle is always necessary and that it is necessary to force a value of current by a setup, once the realized angular motor
alignment.
If you allow, I have several beginner's questions
* It is probably necessary to use, when Axis works, halcmd -kf with another window. Is it correct ?
* What value to give to the setup value current ?
* What is the final aim of this manipulation --> increase the speed of the motor; Why ?
Please Log in or Create an account to join the conversation.
reference angle --> is supplied by the encoder
current --> is supplied by bldc.0.value
Yes, but no
![:-) :-)](/media/kunena/emoticons/smile.png)
The angle is provided by the bldc component, based on the encoder feedback. Or, in fact, on whatever other feedback it is using. The bldc component can also use Hall signals or the 4-channel feedback from the Fanuc encoders.
The current command can often be supplied directly from the position control PID component. Unless you are homing magnetically or to index, in which case the bldc component needs to be able to over-ride the PID output to run the homing sequence.
The main purpose of the bldc component is to perform the commutation calculations. It calculates what phase angle the current needs to be applied at, and provides a range of command types to achieve that for various types of motor drive.
(And, if your motor has Hall sensors, I really strongly advise using them, because the magnetic homing mode is unreliable under load and index homing moves the machine in unpredictable ways)
* It is probably necessary to use, when Axis works, halcmd -kf with another window. Is it correct ?
Yes. Unless you use the "view hal configuration" menu option, but that is much less convenient.
* What value to give to the setup value current ?
That's up to you. Not so much that the motor melts into the carpet. DAMHIK.
* What is the final aim of this manipulation --> increase the speed of the motor; Why ?
To see how fast the motor _can_ run, independent of the position control loop. And to see if it runs equally well in both directions. If it doesn't run equally well in both directions then the homing sequence probably isn't working right.
Again, if you have Hall sensors, use them. If not, use index homing. But index homing needs you to work out where the index is relative to the motor phase angle _for_each_motor_.
Please Log in or Create an account to join the conversation.
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
Thank you very much for your patience and detailed answers.
Please Log in or Create an account to join the conversation.
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
To prevent
![;) ;)](/media/kunena/emoticons/wink.png)
![:( :(](/media/kunena/emoticons/sad.png)
setp hm2_7i43.0.8i20.max-current 0.6
setp hm2_7i43.0.8i20.min-current -0.6
setp hm2_7i43.0.8i20.scale 0.6
in the main program used by Axis
(for example, it may be necessary to put a little more)
Is it a good idea to limit the current in the motor whatever happens during the test session.?
(whitout affecting NVMAXCURRENT)
Please Log in or Create an account to join the conversation.
Is it a good idea to limit the current in the motor whatever happens during the test session.?
(whitout affecting NVMAXCURRENT)
To an extent, though you won't get a real feel for the motor capability if you set it too low.
I would set the limit to the motor nameplate rated current, otherwise the motor will appear very slow and weak.
When fitted to the machine you would probably set the limit to the motor max current, just for the extra accelleration. (I think my motors are rated 3A continuous, 7.5A max)
0.6A is actually very low for the 8i20. What is your max motor current?
I have only melted the carpet once, and that was when I was testing the system and forgot that the motor was stalled on the wrong commutation settings, and running high current. When the commutation is right the motor would have been spinning and it would have been hard to forget that it was powered up.
Please Log in or Create an account to join the conversation.
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
My motor is a recovery model, it has no label.
It has neither sensors hal, nor magnetic sensor but only an encoder 2500 x 4, with Z
A second connector, which I do not use, allows probably to reach a _internal tachy_
setp hm2_7i43.0.8i20.0.2.current-maxlim 2.5
setp hm2_7i43.0.8i20.0.2.current-minlim -2.5
setp hm2_7i43.0.8i20.0.2.current-scalemax 2.5
In closed loop, continuous mode
with (+) The motor runs at approximately 60 rpm, pin hm2_7i43.0.8i20.0.2.current --> Halscope shows a succession of _ globally positive peaks_
with (-) Difficult to estimate if turns in the same speed. Halscope --> a succession of _ globally negative peaks_
In Axis, I have (among others)
axis.0.motor-pos-pos-cmd => pid.x.command
pid.x.output => bldc.0.value
with halcmd -kf
unlinkp bldc.0.value
unlinkp hm2_7i43.0.8i20.0.2.current
In open loop mode
Thus I suppose that bldc (_conformator ??_ very complex) supplies no more that the information of angle has the 8i20. Is it correct ?
setp hm2_7i43.0.8i20.0.2.current -2.5
An external oscilloscope, with AC current probe (low-end, reliability ?? 1mV --> 100 mA), clipped successively onto power motor cables ( U, V, W) don't show _sinusoidal signal_
With a tachometer without contact, (low-end, reliability ?? and skill of the operator !!), I find 500 < rpm < 1200
![:( :(](/media/kunena/emoticons/sad.png)
If
setp hm2_7i43.0.8i20.0.2.current 2.5
External oscilloscope --> an _approximative sinusoidal signal_ ; period approximately 40 mS
Without lingering over reliability of the values, the amplitude is clearly more important (x4) and the motor turns lower.
The motor _sings_ differently in one direction and in the other.
My sequence of alignment of the rotor, adapted from another program
net x-index-enable hm2_7i43.0.encoder.01.index <=> bldc.0.index-enable
net x-index-enable <=> pid.x.index-enable
Please Log in or Create an account to join the conversation.
- clematites93
- Offline
- Senior Member
-
- Posts: 62
- Thank you received: 0
# Estop loopback + bldc + pid
net after-estop-touch iocontrol.0.user-enable-out => bldc.0.init # after click on touch F1, start of bldc
net after-estop-touch => pid.x.enable # validation of the pid
net x.index-enable hm2_7i43.0.encoder.01.index-enable <=> bldc.0.index # bidirectional ??
net x.index-enable <=> pid.x.index-enable # bidirectional ??
net start-axis-possible bldc.0.init-done => iocontrol.0.emc-enable-in # alignment realized, validation of Axis
The engine positions slowly, by jerks, apparently always in the same place.
Please Log in or Create an account to join the conversation.
The engine positions slowly, by jerks, apparently always in the same place.# Estop loopback + bldc + pid [code] net after-estop-touch iocontrol.0.user-enable-out => bldc.0.init # after click on touch F1, start of bldc net after-estop-touch => pid.x.enable
I think that you want to connect pid.x.enable to the init-done pin, so that the pid does not interfere with the bldc.homing motion.
Do you _know_ that the index is at the motor electrical zero position?
You can find this sort-off of-line.
First find a small power supply, even a battery, and connect the +ve to phase A of the motor, and the negative to phases B and C.
That will find you one of the magnetic zeros. You probably have two of them. If the current is low then you can probably snap the motor shaft between them by hand.
Mark these positions with a marker pen on the shaft and face of the motor (or mark the keyway position if there is one) And count them. That is half your number of motor poles.
Now, start LinuxCNC but keep e-stop active. Open a halmeter window looking at encoder counts. You should see the number change as you manually rotate the shaft.
Now, to find the index you need to set index enable true, then rotate the shaft by hand until the counts go to zero.
sets x-index-enable 1
Please Log in or Create an account to join the conversation.