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.

LAUNCHXL-F28379D: Output Saturation of DCL PI_C1

Part Number: LAUNCHXL-F28379D
Other Parts Discussed in Thread: C2000WARE

Hello,

I'm designing a digitally current mode controlled buck converter, as a battery charger application. I've designed controller parameters for series type PI and created a model at simulink. I put model of PI_C1 designed from TI for simulink use.

I have inner and outer DCL PI C1 simulink models for current mode controlled buck converter and I simulate my real system at simulink.

When the outer loop simulink model PI_C1 reaches the preset voltage, its output goes low. However, inner loop PI C1 continuoes to generate output and it doesn't follow its referrence input. I don' know why but I guess its because of windup issue.

What is your comment about my problem and solution about it?

(I can use another series form PI parameters if others solve it. The PI controller simulink models in the C2000 folder is less than real ones. I want to simulate my system at simulink.)

Thank you in advance

  • First, have you try to run the inner current loop only and see if you have the same issue?

    Another thing you can do is to look under the mask of the PI model and monitor internal signals, and figure out the exact reason of current loop not follow. If you can put some waveform, it will be helpful.

    Windup normally caused by receiving a reference that is impossible to follow. This situation can mostly be avoided by carefully plan the reference profile based on capability of hardware system. For your inner loop, you should at least limit the voltage loop output to be within the current limit of the system.

    Given the fast dynamic of current loop, it is not common to see windup issue in carefully designed current loop controller.

  • gG,

    Are you using the DCL Clamp functions?

    Here is a snippet from the F28069_DF22 example (~\C2000Ware_XXXX\libraries\control\DCL\c28\examples\F28069_DF22\):

        // run pre-computed controller
        u2k = DCL_runDF22_C2(&controller2, ek);
        v = DCL_runClamp_C1(&u2k, upperLim, lowerLim);
        if (0U == v)
        {
            DCL_runDF22_C3(&controller2, ek, u2k);
        }

    -Tommy

  • Hello ,

    Thank you for help. I want to write my strategy.

    My application is battery charging. I have large capacitor as 0.5F at output filter and no resistance load. That means my outer loop output always gives its maximum until reaching desired output voltage. It takes seconds to reach the end of charge voltage. During this duration, my inner loop output rises. When output reaches desired output voltage, outer loop output gets down to 0V. However, my inner current loop output goes on rising and doesn't stop PWM switching. This is my problem.

    If I change load side of my simulation, that means reducing output filter capacitor to 200uF and add resistance load as 7.5ohm. My system works well, because the outer loop output, which is referrence for inner loop, stays in a level and inner loop is happy for that reference.

    I tried to run the inner current loop only and my problem continues. I gave a square wave referrence,of which output gets high at zero second and gets low to at 2 seconds. I monitored the block response. rk goes low at 2.second blue line doesn't reduce.

    Please have a look at below figure.

  • Hello tlee,

    I'm now trying to simulate my system at simulink and I just the simulink models of DCL PI_C1. After simulating compensation, I will write my code. Do you think that I should add above clamp functions to my code. By the way, I'm not using DF22 function. I just use PI C1.

  • gG,

    I would consider clamping to be a best practice.

    -Tommy

  • Hello,

    I solved my problem. I changed the output clamp lower limit of my outer and inner loop PI controller to -1. They were 0. After that my controlled worked as I expected.

    Thank you for all.