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.

Need for EST_setMaxCurrentSlope_pu

Hi,

I am trying to understand the use of EST_setMaxCurrentSlope_pu() and EST_getMaxCurrentSlope_pu().

The labs do "get" while the motor is not identified, and then "set" of the same value when the motor transitions to identified.

Spruhj1f section 14.4.2.1 indicates the set should be of the maximum value (IQ(127.99).

Why do the labs get the value, then write the same value?

Is the "get" or "set" even necessary if:

1) There is no motor identification or Rs calibration on startup?  Just ADC offset calibration on startup.

2) Using SpinTAC move and velocity control?

3) Induction motor?

Should the max value be "set" as indicated in the user guide?

Thanks

  • "Spruhj1f section 14.4.2.1 indicates the set should be of the maximum value (IQ(127.99)."
    This is only in the case of an already identified motor where you are injecting a current during RsRecal (or through your own use of setting a -IdRef_A) for initial alignment. You then want to remove that current as quickly as possible by setting a maximum value through
    EST_setMaxCurrentSlope_pu

    "The labs do "get" while the motor is not identified, and then "set" of the same value when the motor transitions to identified."
    The labs set the current slope to 0 if the motor is already identified. If not, it sets it to the value in user.h

    Essentially this MaxCurrentSlope is only used for controlling how fast Id can change when the trajectory is being controlled by the state machine which is in the library. This means during ID and any of the start-up functions (RsRecal, OffsetCal, etc.)

    You'll notice in proj_lab11x projects - which don't rely on the state machine in the library at all - this variable is not ever even mentioned.

    for EST_setMaxCurrentSlope_pu
    1. set the value through user.h value if doing motor ID
    2. set the value to the maximum if following the high load start-up discussed in chapter 14 of SPRUHJ1
    3. else set to 0 (or any value, it really doesn't matter)
  • Hi Chris,

    I'm not using motor ID, Rs, or Offset calibration and  ramp and speed control is from SPINTAC.  Yet I'm seeing the current slope value does have an effect on motor current at startup.  From what you said the slope value is only used when the trajectory is being controlled by the state machine in the library, so in my case the slope value should not matter.

    Below are startup wave forms (using Flag_Run_Identify) where the CTRL and EST state machines go immediately from Idle to online.   The top waveform is with the slope value set to maximum, the bottom waveform with the slope value from user.h which is close to zero.  You can see in the top waveform the current ramps faster, and in my case gives a smoother motor startup.

    Why does the current slope value matter if SpinTAC move and velocity are controlling IqRef?

    Thanks

     


     

     

     

     

     

  • is this an induction machine?
  • Yes, this is an ACIM.
  • ok, then it does have an affect since you are not setting a non-zero IdRef_A value for ACIM.
    Note that it is the slope (change in value allowed, like an acceleration for velocity) for the Id ref, not the Iq.
  • For my AC motor the startup is much smoother both with and without load with the slope set to max, vs. the user.h value.

    The documentation should really explain that the slope is always used for AC motors.

    Thanks for the help. 

  • agreed, I've put this in our que to review