|
|
//=================================== PID计算函数 ===========================================
void UpdatePID(void)
{
error = SetPosition - position; // 计算误差
Integral += error; // 计算误差积分
if(Integral > iMax) Integral = iMax; // 积分高限幅
if(Integral < iMin) Integral = iMin; // 积分低限幅
// if(error > 100.0) Integral = 0; // 误差过大不积分, 由误差比例控制, 根据情况可以注销此操作.
// if(error < -100.0) Integral = 0; // 误差过大不积分, 由误差比例控制, 根据情况可以注销此操作.
pidTerm = error * pGain;// / 1000; // 计算比例项
pidTerm += Integral * iGain / 1000; // 计算积分项, 积分项缩小为1/1000,这样积分增益就可以用整数,1对应的就是0.001
pidTerm -= (position - LastPosition) * dGain / 1000; // 计算微分项 = 微分增益*(当前位置-前一个位置)
LastPosition = position; // 保存当前位置
}
请问 梁工 但是你调试的时候 pid 参数 你是 如何慢慢 定下来的 ?你是 如何调试出来的 这三个参数
|
|