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.

Force Angle Stuck On

Hi,

I asked a similar question last week but didn't get a response, hopefully asking again with more detail will get some help.

This is an ACIM 4 pole motor, my project is based on prob_lab10b.

The problem I am having is force angle seems to be active above speeds where it should be applied.

User.h has:

#define USER_ZEROSPEEDLIMIT      (1.0 / USER_IQ_FULL_SCALE_FREQ_Hz)     //  1Hz = 30 RPM

#define USER_FORCE_ANGLE_FREQ_Hz   (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)    // 2Hz = 60 RPM

First screen shot: With Force Angle enabled and a speed reference of 50 RPM, the Force Angle algorithm stays on and the motor rotates at 60 RPM (measured with a separate encoder), and the FAST estimate of the speed Speed_krpm is 100 RPM.    See first screen shot.    The indicated torque is negative.

Second screen shot:   With Force Angle disabled the motor runs correctly at 50 RPM.

If I understand correctly force angle should never be active above the zero speed limit.  Why does force angle stay on when the motor speed is 60 RPM and the zero speed limit is 30 RPM?

Why with force angle disabled can the FAST algorithm determine the speed correctly at 50 RPM (and even lower speeds in my tests), but when force angle is enabled the FAST speed indication is 100 RPM but the motor is actually at 60 RPM?

Thanks.

  • I don't have an explanation for you. Are you looking at the ForceAngle active flag? I have seen this once before years ago but never had a satisfactory answer from the rest of the InstaSPIN team.

    The force angle feature is replacing the estimated angle from FAST, but still using FAST's frequency estimate to determine when to stop using ForceAngle. It's kind of circular logic...


    What we typically recommend is to only use ForceAngle if it gives you a more repeatable start-up under load...but disable it immediately after reaching any minimum speed.
  • Hi Chris,

    In the debugger screen shots the force angle status is being read out using EST_getForceAngleStatus() and shown as gMotorVars.ForceAngleStatus.

    Our product needs to operate open-loop with a variety of industrial ACIM motors from 0.3 to HP.   I was hoping to find a minimum motor speed that could be universally used for these motors and have force angle active for speeds below the minimum, and FAST locked for speeds above the minimum.  Essentially create a floor speed such that if the user selects a speed reference below the floor force angle is used, and above the floor FAST is used.   With force angle behaving like it is I don’t know how to proceed.

    The point I keep coming back to is the motor runs ok at 50 RPM (and lower) with force angle disabled, but with force angle enabled at 50RPM  (and up to about 70 RPM) force angle stays active even though the motor speed (both indicated by FAST and measured with a tach) is above the ZEROSPEEDLIMIT.

    Is there data I can provide or tests your team can suggest to help figure out why force angle is stuck on for my setup?   I am using my own hardware, but have verified the HV kit does the same.

    Below are current waveforms for 50 RPM and 10 RPM startups.   In both cases force angle becomes active, but for the 50 RPM startup (bottom) you can see force angle doesn’t immediate come on.  At first the current waveform is distorted, then force angle comes on.   This is the waveform corresponding to my first debugger window post that shows FAST estimates the speed at 100 RPM, but the motor stays running at the force angle indefinitely.  The 10 RPM startup waveform (top) immediately starts with force angle active.

    Why does the 50 RPM startup not immediate use force angle like the 10 RPM startup?

    Thanks for your help.

  • " I was hoping to find a minimum motor speed that could be universally used for these motors and have force angle active for speeds below the minimum, and FAST locked for speeds above the minimum.  Essentially create a floor speed such that if the user selects a speed reference below the floor force angle is used, and above the floor FAST is used."

    This is NOT how ForceAngle should be used. It should never be used for lower speed operation as it is never providing an angle that has anything to do with the actual rotor position.  ForceAngle may be useful for initial start from zero speed. It should immediately be turned off. It should not be turned on again unless you decide to use it to start-up from a stop again.

    "but for the 50 RPM startup (bottom) you can see force angle doesn’t immediate come on."

    How do you know the ForceAngle isn't on?  If the flag is enabled it is on.  I agree the image shows a poor start-up, but I don't think you can conclude from this that ForceAngle is not active.

  • I added a hardware output indicating when force angle is active.   For a 50 RPM startup force angle starts off on (as maybe you suspected) but then toggles off/on for a while, at some points very quickly, and then goes to steady on.  Green is high when the force angle status indicates on.  The first short pulse low (around t=-.004) is when the controller goes online where the hardware output line is initialized low.

    50 RPM startup with force angle status:

    Below is a 100 RPM startup.   The force angle status pulses on for short periods indefinitely after startup even though the motor is running good at 100 RPM:

     

    For 50 RPM, what changes within FAST such that force angle pulses on/off in the beginning, but then latches on?

    For 100 RPM, the motor is running good at 100 RPM and a tach shows only about a +/- 2 RPM bobble, why does force angle pulse on for very short periods of time?    ZEROSPEEDLIMIT is set to 30 RPM.   Does this indicate that within FAST the speed indication is instantaneous going below 30 RPM so FAST is turning force angle to active?   At 100 RPM I would think FAST should be pretty well locked on to the rotation.

    Thanks.

  • at 50 RPM (1.66 Hz) I can see FAST giving some estimates below the 1 Hz limit you are using. That one doesn't surprise me.
    100 RPM is surprising, especially with the Speed_Est being so steady.

    If you raise this to 120 RPM (4 Hz) does ForceAngle ever enable? 150 RPM?
  • See below screen shots for 150 & 200 RPM.  At 150 RPM force angle still comes on fairly often.  At 200 RPM once in awhile.   At 300 RPM it stays inactive.

    It seems like FAST is false triggering to turn force angle back on?

    But on startup it seems like FAST is too quick to deactivate force angle.   FAST deactivates force angle and then the speed overshoots before settling and regulating at the reference speed.   For example a 100 RPM startup overshoots initially to 150 RPM before settling.

    For our machines the required starting torque can be much higher than the required running torque.   I'm trying to figure out how to best use force angle to overcome the high starting torque.  Maybe by guaranteeing force angle stays active for a short time on startup.  Is there a way to stop FAST from setting force angle inactive, like by setting the ZEROSPEEDLIMIT very high and above the force angle frequency?   The force angle status would then track the enable flag, so on startup for ~1 second we could guarantee force angle stays on using the enable.   Would this provide a good way to get the motor moving and a smoother speed transition out of force angle than what I am seeing now?

  • i would suggest increasing the limit and seeing how this affects the performance
    #define USER_ZEROSPEEDLIMIT (4.0 / USER_IQ_FULL_SCALE_FREQ_Hz) // 4Hz = 120 RPM
    #define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 8Hz = 240 RPM

    but using a sw timer to disable ForceAngle once the motor is moving is a good strategy
  • I can't have a force angle frequency of 240 RPM. I need to achieve a minimum operating speed closer to 60 RPM.

    If the motor runs good at 60 RPM using FAST in steady state, shouldn't using force angle allow me to startup smoothly and get to steady state with a semi-smooth speed transition from force angle to FAST? Even if I feed a force angle frequency ramp to FAST.

    I'm assuming that to feed a force angle ramp to FAST, I would need to guarantee FAST doesn't deactivate force angle. This led to my question about being able to raise the ZEROSPEEDLIMIT above the forced angle.

    What are the thoughts on the case (50 RPM) where force angle sticks on, or why force angle shuts off too soon, or blips on when it shouldn't (in my opinion)? Is this normal, or are these in some way related to the speed bump & distorted current waveform I see when FAST deactivates force angle?

    I'm really looking for help with how to startup to about a minimum of 60 RPM under peak load. It seems like in my case FAST has enough voltage signal to run at 60 RPM, but not smoothly take over from force angle at 60 RPM. What am I missing?
  • "I can't have a force angle frequency of 240 RPM. I need to achieve a minimum operating speed closer to 60 RPM."
    What does this mean?

    using
    #define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 8Hz = 240 RPM

    has nothing to do with the minimum operating speed. This 240 RPM is an emulated speed being used to generate an emulated ForcedAngle. Basically, it is giving an angle to the control system based on a rotor moving at a constant 240 RPM. You can use this setting and still command a different Speed_Ref.

    60 RPM = 2 Hz may be achievable for steady state operation. Try running your motor with ForceAngle disabled and see how it tracks. It will depend on your speed controller tuning as well as the quality of the angle from FAST.

    "If the motor runs good at 60 RPM using FAST in steady state, shouldn't using force angle allow me to startup smoothly and get to steady state with a semi-smooth speed transition from force angle to FAST? Even if I feed a force angle frequency ramp to FAST."
    They key is disabling ForceAngle as soon as FAST is producing a good angle/speed estimate. The ForceAngle is not a better angle than FAST, once FAST has even a bit of feedback. ForceAngle is used just to get the rotor moving. You shouldn't extend the use and use it as actual feedback in the control system. Stop using it as soon as possible.


    "What are the thoughts on the case (50 RPM) where force angle sticks on, or why force angle shuts off too soon, or blips on when it shouldn't (in my opinion)? Is this normal, or are these in some way related to the speed bump & distorted current waveform I see when FAST deactivates force angle?"
    Yes, this is expected behavior. I can't go into the details of why, but it has to do with how the limit estimate is calculated for the ForceAngleActive. It is not tied directly to the speed estimate from FAST, so there can be some "blips". That is why it is important to disable ForceAngle as soon as you can and drive in the motor at a speed where FAST is providing good enough control.


    Have you tried starting up with ForceAngle disabled?
  • With force angle disabled the startup waveforms look cleaner and with my current motor and setup it is starting up under full load.    But in the past without force angle enabled I've seen the startup go haywire and the motor start and run full speed in the opposite direction.  I can't seem to reproduce that right now.

    You say to set the force angle frequency for 240 RPM and this has nothing to do with the minimum operating speed.    It seems counter intuitive to have force angle make a magnetic field rotating at 200 RPM, trying to get the rotor to follow at 200 RPM, when the reference speed your trying to get to is well below 200 RPM (in my case 60 RPM).      But I'll try this.

    Thanks.