谁能帮我看下这一段C语言?我一点都不懂,每行都解释下吧,尤其是Pdlt+=()是什么个意思?谢谢了!

#define Kp 3.3
#define Ki 0.2
#define Kd 0
float fDoPID (float Error)
{
static float PrevError_1 = 0, PrevError_2 = 0;
float Pdlt=0;
Pdlt = (Error - PrevError_1) ;
Pdlt += Ki * (Error);
Pdlt += Kd * (Error - 2*PrevError_1 + PrevError_2);
Pdlt *= Kp;
return (Pdlt);
}

#define Kp 3.3//定义 常量Kp 值为 3.3(一遇到Kp就用3.3代替)
#define Ki 0.2//定义 常量Ki
#define Kd 0//定义 常量Kd
float fDoPID (float Error)//返回值类型 float 函数名 fDoPID 形参类型 float 形参名 Error
{
static float PrevError_1 = 0, PrevError_2 = 0;//声明变量
float Pdlt=0;//声明变量
Pdlt = (Error - PrevError_1) ;
Pdlt += Ki * (Error);//等价于 Pdlt = Pdlt + Ki*(Error);
Pdlt += Kd * (Error - 2*PrevError_1 + PrevError_2);//同理
Pdlt *= Kp;//等价于 Pdlt = Pdlt * Kp;
return (Pdlt);//返回 Pdlt的值
}

解释语法:a+=b;等价于 a = a+b;
a*=b;等价于 a = a* b;
符号 /= %= -= 都是同理
希望你能找一本C语言书好好看一看。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-18
Pdlt += Ki * (Error);//就是Pdlt = Pdlt + Ki * (Error)前面的写法编译效率高
Pdlt *= Kp;//就是Pdlt = Pdlt * Kp;追问

谢谢! 这句呢?
static float PrevError_1 = 0, PrevError_2 = 0;

static是什么?百度说的没看懂,能否通俗讲讲这条指令的作用?

追答

静态变量,这个是个关键字,不同的地方有不同的作用。是给编译器看的,告诉编译器定义的这个变量应该放在什么地方。不是我几句话就能让你完全明白的,你先看别人解释,以后多遇到了,一一对比,慢慢的就懂了,不可能一下吃成个胖子的,慢慢来。

第2个回答  2013-06-18
一条PID控制回路

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答