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.

TMS320F280049C: PID Question

Part Number: TMS320F280049C

Hi Team,

I am using our DCLF32.h library, I want to know how to set i10, i14, how will it affect my performance?

Thanks

Jenson

  • Hi Team,

    The problem I have now is that sometimes the PID output will not change (when there is a significant gap between input and output). At this time, if the parameter i10 is changed in the expression window, the PID can work normally again, so I want to know why is that.

    As shown in the figure, output has always been the minimum value I set at 0.1. There is a significant gap between input and output, and the PID is abnormal at this time. When I change i10 to 0.1, pid becomes normal work.

    Thanks,

    Jenson

  • Jenson,

    Based on your example in the thread, your feedback is much larger than the reference of 0.066. With a positive coefficient, the PID should output negative output to bring the feedback down. since you set the minimum output to 0.1, the output will saturate to your minimum value. Can you try to set the minimum output to negative and see if it helps? Thanks.

    Han

  • Hi Han,

    Sorry for the misunderstanding, the feedback in our name is actually the reference value (rk), and the input is actually the yk of the pid. So the output should be increased. I set i10=0.1 in the initialization, it can work normally, but I don’t know how this value affects the PID, do you have any comment?

    Thanks

    Jenson

  • Jenson,

    Can you please share all your setting of the PID? What are your controller parameters? Thanks.

    Han

  • Hi Han,

    Pls check it below.I have passed the experimental test, initializing i10=0.05, the PID output will be abnormal.

    pid1.i10 = 0.1f;
    pid1.i14 = 0.1f;
    pid1.Umax = 0.60f;
    pid1.Umin = 0.10f;

    pid1.Kp = 0.01f;
    pid1.Ki = 0.005f;
    pid1.Kd = 0.000f;

     Motor_PID_A_Output = DCL_runPID_C3(&pid1, Motor_PID_A_Speedfeedback, Motor_PID_A_Speedinput, Motor_PID_Runflag);      

    Thanks

    Jenson

  • Hi Jenson I want to Add PID functionality in my F280049C controller can you please tell me how you implemented it. As you are also using F280049C I think I should ask this question to you. You've used DCLF32.h library. can you please tell me how it is useful in PID control? and How should I use it in my code to implement PID? 

  • Hi,

    you can check the DCLF32.h, and use pid like DCL_runPID_C3(DCL_PID *p, float32_t rk, float32_t yk, float32_t lk).

    Thanks

    Jenson

  • Hi Han,

    It's there are any update?

    jenson