This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Role of Id component at start-up for FOC PMSM motors.

Hello TI E2E

I have seen in all Control Suite FOC projects that the field weakening is used at motor lock (reference of the Id component is non-zero)...  why is this so ? How this value is determined ? Does the sign of this reference depend on the direction of the motor ?

Thanks. 

  • Non zero Id component is used at start up to bring the rotor to alignment, where the electrical angle is assumed as zero.

    In a set up where there is a relative quadrature encoder position sensor, there is no way of knowing where the electrical angle zero is at the time of start up and therefore we need an alignment stage where a non zero Id current is passed which will move the shaft position to electrical angle of zero. 

  • I am using a QEP sensor and as you mentioned, I apply a known voltage on the phases to align the rotor to electrical angle zero. During that stage the Id component is non-zero and I set it to zero once rotor is in position. After that, even if the rotor stops again, there is no need to change it from zero, correct ?
  • When there is no Id in zero speed, the rotor can lose alignment. You can design your strategies as appropriate.
  • If I understand correctly, after rotor alignment and using QEP+FOC , every time the motor stops in position control, I risk to lose the rotor alignment if I keep Id reference to zero. I am not sure to understand why it is that way, would you mind briefly explaining this to me or point me to a document detailing this?

    A design strategy would be to proportionally set Id reference from the QEP measured speed. Also I assume the sign of the reference directly tied to the direction of the rotor, correct ?
  • Even a minor load related disturbance can misalign the shaft position from zero angle, therefore you are better off to have a non zero current in Id.
    Regardless of direction, Id is generally kept > 0, and it made <0 for field weakening which is typically at high speeds in either direction.
  • Ramesh,

    I am a little bit confused on the sequence that need to happen in order for the rotor to start spinning... In order to initiate the rotation of the motor, you need to increment Id component which will result in a leading vector , correct ? This leading vector should result in a new angle measured by QEP ? Or. Do I need to implement a forced commutation (open loop) until the motor reaches a certain speed ?
  • Incrementing Id will not create leading vector, you apply Iq to start the rotation. With QEP, you set the output angle to zero during alignment (zero speed), thereafter as the rotor starts spinning, you get the angle output from QEP. Because you have the index pulse from QEP, the index pulse will reset the counter to zero and start incrementing from zero again. Therefore, you capture the value of counter at the time of first index pulse and then add it to the counter value and do a modulo based on NPPR (number of pulses per rotation).
  • Ramesh,

    I follow the routine you describe. I feed the Park transform with an electrical theta of 0. I see motor rotating and then servoing around it. It works for Id equal to 0, 0.05 and 0.1. You mention that:

    "Even a minor load related disturbance can misalign the shaft position from zero angle, therefore you are better off to have a non zero current in Id."

    I am sorry but I don't understand why having a small component on Id prevent this ?

    Thanks again for your help.
  • If you make Id positive, it will set up a stator magnetic field which is static. For the rotor to rotate, it will have to work against the static mag field of stator and hence it remains locked static.
  • Ramesh,

    Could you please comment on this document, www.ti.com/.../spra588.pdf page 15 and 16 ? It is mentioned that after aligning the rotor, a rotation of the frame is done to align id to the rotor. It sounds like there are two steps in the motor alignment, is this right ?
  • That is a old doc and does not apply to this control suite code. You can google for more information on this topic.
    For the scope of our discussion, a positive ID will bring the PM rotor to alignment with the stator flux. Once you bring the rotor to a known position, you can start the control process.
  • Thank you Ramesh for the details. A last question, is it optional to set IQ to zero while aligning the rotor? After alignement IQ is non zero.
  • Iq current is a torque producing current and will cause the shaft to rotate. During alignment, Iq =0 is a must, not an option. After alignment, you give non zero Iq to turn the shaft.

  • Thank you very much Ramesh :-)