峰岹科技
直播中

up_And_down

5年用户 7经验值
擅长:控制/MCU
私信 关注

FU6832 PI控制似乎输出不正确

我在使用pi控制器时发现pi0和pi1的输出不符合预期,可以做以下的一个测试来验证:

pi公式为U(k) = U(k-1) + Kp*(E(k) – E(k-1)) + Ki*E(k)

设置PIx_KP=1,PIx_KI= 0,PIx_EK保持不变,这种情况下,输出ePIx_UK应该是一个恒定值,但是pi0和pi1的输出会增加,同样的输入(另外PIx_KD=0),PID控制器(pi2,pi3)符合预期。

DEBUG结果如下
pi_pid.png

测试代码基于pi/pid例程https://bbs.elecfans.com/jishu_2013947_1_1.html修改,只更改了main函数

void main(void)
{
    int32 ePI0_Result[5];
    int32 ePID2_Result[5];
    uint8 eTempNum;
 
    /* -----选择PID2并初始化----- */
    //PI0_Init_Parameter(eKP_0, eKI_0, eEK1_0, eUKMAX_0, eUKMIN_0, eUK1_0);
    PI0_Init_Parameter(1, 0, 1, 4096, -4096, 0);
    //PID2_Init_Parameter(eKP_2, eKI_2, eKD_2, eEK1_2, eEK2_2, eUKMAX_2, eUKMIN_2, eUK1_2);
    PID2_Init_Parameter(1, 0, 0, 1, 1, 4096, -4096, 0);

    while (1)
    {       
        for(eTempNum=0;eTempNum<5;eTempNum++)
        {
        /* -----用PID2进行PID运算并赋值给PID_Result[i]----- */
            ePI0_Result[eTempNum] = PI0_Arithmetic(1);
            ePID2_Result[eTempNum] = PID2_Arithmetic(1);
        }
        _nop_();
    }
}

希望峰岹的大哥有空能解答疑问。

更多回帖

发帖
×
20
完善资料,
赚取积分