你好,我在使用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例程 //www.ws-dc.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_();
- }
- }
复制代码
|
|
1 条评论
-
jf_15925133
2024-6-4 11:48
您好,因为我们的疏忽,FU6832的PI0、PI1由于芯片内部原因运算结果与数据手册中的公式结果不一致,后续会改正手册中的描述,感谢您的一直支持
|
|
|