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.

TMS320F28377D: instaspin foc

Part Number: TMS320F28377D
Other Parts Discussed in Thread: CONTROLSUITE

Sir,

We are trying to implement low speed startup and ability to handle load at low speed in our delfino microcontroller. For that we have implemented example code given in "aci_fe.h" and "aci_se.h". But we are facing problem in setting gains for this speed estimator. Also we have referred to your instaspin-foc document titled "SPRUHJ1G", in that document in chapter-14, it is shown that for low speed startup, theta is generated manually upto some frequency and after particular frequency it shifted to theta generated from speed estimator. But when we tried the same in our controller, motor is getting jerked. Also we have doubt, since changeover is based on frequency, will motor take the load if it operates below changeover frequency, since theta is generated manually instead of speed estimator. Moreover we cannot go for piccolo series, due to product design limitations.

So please tell how to solve this issue?

  • You might try the position open loop v/f or i/f control for low speed, but you should set a right voltage according to the running frequency if using v/f control, and set right current for both Id and Iq if using i/f control since your motor is an ACIM. The angle is generated from the RAMP_GEN module based on the reference frequency. Actually, the example project in controlSUITE just used i/f control to implement the open loop control, you might have a look at the example code.
    Of course, both methods are difficult to start up and run with zero or very low speed under a heavy load. And you have to take some time to tune the parameters for the transition process between open loop and close loop in a real engineering case, the example project is just a reference algorithm code.
  • Thanks for replying. You have rightly guided us to i/f control, and we will  look into it. But as you have mentioned that tuning depends on real engineering case, and it may vary. But you have to take in account the variety of applications that our product is installed into. So if we go by case to case then it will be very difficult to handle. Hence if some sort of basic tuning guide or procedure that you can refer it will be of very great help.

    Thanks

    Rishabh

  • "Actually, the example project in controlSUITE just used i/f control to implement the open loop control, you might have a look at the example code."

    Which example project you are referring to?
  • Right. The Sensorless FOC of ACIM just used i/f as an open loop startup to simplify the transition process. Of course, you can use v/f also, you might refer to "HVACI_Scalar" project which is only v/f control. Often, i/f should be a good choice if you don't need motor run with low speed for a long time, just for startup.
  • Yeah so any example project or some documentation of i/f control is available that we can refer to?
  • Yes, you can. You might find a project in the folder of controlSUITE as below, that's fine to run the motor using i/f control for low speed if you set the BUILDLEVEL to LEVEL6 in HVACI_Sensorless-Settings.h.

    C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVACI_Sensorless
  • Yeah thanks a lot Mr. Yanming. The example code that you have cited we have looked into it. In that you have used lsw variable, for switching between open loop and closed loop. But now we are confused how to switch lsw. Means at what time we have to switch lsw. Whether instantly based on motor output frequency or based on some sort of filter.
  • Right, this example project is just a reference, the flag will be set by hand in CCS debug, so you might add a judgment condition to set it according to the estimated speed or angle.
  • Ok. Thats great. Thanks a lot Mr. Yanming. We will let you know once we implement this i/f logic. Till then please keep this thread open.
  • We have implemented i/f control as guided by you and right now it seems to work fine. But there is one issue which is ruining the implementation. In starting we apply pre-magnetisation so that sufficient flux gets build up before motor starts rotating. For doing so, we keep iqref = 0, and set idref as no load current percent of motor current. But when we implemented this motor starts rotating during premagnetisation time period, due to which it is getting jerked when it comes out of premagnetisation.
    So is there something that we can do differently to solve this issue?

    Thanks
    Rishabh
  • Not only set the Id reference to no-load current for ACIM, but also need to set Iq reference based on the speed and load for open loop. Please try again.
  • So we have implemented the logic for premagnetization. We have used speed controller, so that it takes care of iqref automatically.

    Now only thing which is left is speed estimator PI tuning. In aci_fe document, it is written that PI to be tuned such that current model comes in picture at lower speed and voltage model comes in picture at high speed. But how can a PI be tuned that it prefers one model over another. What a PI can do is just respond to error.
    So any light that you can shed on this part?

    Thanks
    Rishabh
  • As the application notes you referring that 's all we could provide, you have to tune the PI regulator and the transition based on the working state of your application.
  • In i/f control while transferring from open loop to close loop control, motor is getting jerked. To solve this issue, when we observed the angles, we found that angle generated manually(using formula, angle = angle+(base freq/switching_freq)*set freq ) and angle generated using flux estimator(fe1.thetaflux). They both have varying phase difference of 90 to 180 degree. And this difference is never getting zero.

    Can you please explain, why this is so? Do we have to generate angle differently, to match flux estimator angle.

  • The angle should be generated by the RG module based on the frequency, and you should set a right i/f profile according to the motor spec. and load. You must ensure the motor parameters are correct for the SE and FE modules to get the right estimated angle and speed. I don't think the motor parameters are correct in your case, the angle error should be less than 30 degrees in all cases, even is close to each other.
  • Yes we again calculated today, and difference is varying continuously between 15 to 30 degrees. Still motor gets stopped for moment, before it races again to achieve set speed, causing it to jerk.
  • So you have to tune the i/f profile and both current controller, to tune the SE and FE modules to get the correct speed and angle. Make sure the speed and angle errors are very small between the i/f force running and the estimator. Maybe, the SE and FE didn't work well since the motor parameters are not set correctly.
    Btw, you must set the reference Id to the no-load current to get the magnetizing flux of ACIM, not keep Zero.