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.

TMS320F28027F: How to tell when FAST has a lock on the rotor angle?

Part Number: TMS320F28027F
Other Parts Discussed in Thread: MOTORWARE

Hello -

Is there a flag or such to tell when FAST has a lock on the rotor, or at least with some level of confidence? I have noticed that in speed control mode, with a negative load on the motor that in many cases i get much better starting torque with ForceAngle disabled. I can only image that this means FAST had a good lock. With ForceAngle disabled, however, I get into trouble sometimes with an inability to start, followed by a sudden overshoot event as the I windup is expelled.

If I could leave ForceAngle disabled except in those cases where a speed reference is given and FAST does not have a lock, it would be the best of both worlds.

Any insight is appreciated.

-asifjahmed

  • FAST didn't use this lock function for normal startup and running. The fast will use force angle function if the target frequnecy is less than USER_FORCE_ANGLE_FREQ_Hz and enable force angle, if not, will startup or run with the angle from fast estimator always. There are not locking rotor process regardless of enable or disable force angle.
  • Hi Yanming -

    Once again, not sure I completely understand your response. Are you saying that there is no such way to tell when FAST has good angle tracking? I have a real-world scenario here, and I can tell you that in many cases, I get much better starting torque with ForceAngle disabled. With ForceAngle enabled, if there is an opposite load applied to the motor, when a speed is requested the motor actually slips/cogs in the opposite direction (the direction of the load). Why is this happening? I can only surmise that in my scenario, FAST has a good rotor angle, but ForceAngle was still used because of the motor speed. With ForceAngle disabled, FAST is used even in this slow speed case, and in my case get much better performance.

    Another option I am seeking help with is never using ForceAngle, and using information from hall sensors to seed the angle to the FAST estimator. I've posted separately about this, but didn't get much info back.

    I appreciate you responding to my inquiries, Yanming, but with all due respect I feel that I get bare minimum responses. ChrisClearman and Dave Wilson used to be active on here and took the time to give much more detailed results.

    This is a real-world product I am designing, and I would greatly appreciate a bit more support here.

    Best,
    -asifjahmed
  • Force angle used the rotor angle from the calculation based on the setting frequency if the reference frequency is less than USER_FORCE_ANGLE_FREQ_Hz when motor startup, will switch to FAST when the estimated frequency is higher than USER_FORCE_ANGLE_FREQ_Hz if enabled force angle. And you can call EST_getForceAngleStatus() to know the force angle status.

    Enabling force angle can improve the startup performance when the motor start from zero speed or the same direction as the reference speed.

    It's better to disable the force angle if the motor is rotating with a opposite direction to the reference speed. This case likes you described, the root cause is the rotor angle from force angle function is not right for this case.

    The angle of FAST estimator converges within first cycle of motor running regardless of speed from the if you disabled force angle, forced-angle is turned off in order to allow the estimator to converge to the estimated values with no intervention of an external angle being forced.

    For more detail on managing full load at startup, low speed and speed reversal, you can refer to Chapter 14 of InstaSPIN User Guide.

    For full load startup and running of zero or very low speed, you can use the hall sensor to calculate the speed and get the rotor angle, there are two ways to get the rotor angle based on hall sensor.
    1. Set rotor angel to 0/60/120/180/240/300 based on hall sensor state, and use this rotor angle for Park, and I-Park modules.
    2. Calculate the rotor speed based on hall sensor state, to calculate the rotor angle by speed integral.
    Both ways need to do angel offset calibration and add the angle offset to the calculated value.

    Lab10e is a another solution which can be a reference for hall sensor startup, but you have to set a right PWM duty for switch from hall to FAST, or else will appear a sudden changing on motor phase current.
  • Thanks for the detailed explanation, Yanming! I will try writing some logic to disable ForceAngle when motor is rotating opposite to the reference speed direction.

    I would like to try your approach (1) using the hall sensor angle (0/60/120/180/240/300) to seed the rotor angle. What function(s) in Motorware should I use to seed this value? Also, at what time should I seed the angle - every time I detect zero speed?

    -asifjahmed
  • Just bumping this up since it's been a week without a response.

    I'm looking for help seeding FAST with an initial rotor angle (from hall sensors). Which method(s) can be used to do this?

    Also looking for advice on the proper time(s) to seed this angle. Continuously? (and FAST would know whether to use it or not) or whenever the motor is at zero speed?

    Any advice is appreciated.

    -asifjahmed

  • There are 3 states for this case.
    1. For startup and low speed running state, you calculate the angle and speed based hall signal, and use CTRL_computePhasor(const _iq angle_pu,MATH_vec2 *pPhasor) to calculate the angle sin&cos for FOC PARK/I-PARK.
    2. For hall to FAST or FAST to hall state, use EST_setAngle_pu(EST_Handle handle,const _iq angle_pu) to set a angle based Hall for FAST when need switch the state from Hall to FAST. Do this also for switch the state from FAST to Hall.
    3. For high speed running state, you don't need change anything, use FAST angle and speed for FOC.

    FAST can work always, even the motor is running in zero or very low speed, but the estimated angle and speed maybe unstable.