同一型号的单片机为什么有几个在浮点数计算上会出错呢?
时间:10-02
整理:3721RD
点击:
做了50块温控板有5块在PID计算部分出错,单片机型是STC12C5A60S2。为什么同样的程序有的计算会出错呢?
计算部分如下:
计算部分如下:
- /*--------------------------------PID------------------------------------*/
- float PIDCalc( PID *pp, float NextPoint )
- {
- float xdata dError,Error;
- Error = pp->SetPoint - NextPoint; // 偏差
- pp->SumError += Error; // 积分
- dError = pp->LastError - pp->PrevError; // 当前微分
- pp->PrevError = pp->LastError;
- pp->LastError = Error;
- return (pp->Proportion * Error//比例
- + pp->Integral * pp->SumError*0.01 //积分项
- + pp->Derivative * dError); // 微分项
- }