高级会员
- 积分
- 632
- 威望
- 316
- 贡献
- 192
- 兑换币
- 97
- 注册时间
- 2017-3-9
- 在线时间
- 62 小时
|
10贡献
#include "common.h"
#include "include.h"
struct _pid
{
float setspeed; //设定速度
float actualspeed; //实际速度
float err; //偏差
float integral;
float voltage;
float err_last; //最上前的偏差
float kp,ki,kd; //定义比例、积分、微分系数
}pid;
void PID1_init()
{
printf("PID_init begin \n");
pid.setspeed=0.0;
pid.actualspeed=0.0;
pid.err=0.0;
pid.err_last=0.0;
pid.kp=0.2;
pid.ki=0.015;
pid.kd=0.2;
printf("PID_init end \n");
}
float PID_realize(float speed)
{
pid.setspeed=speed;
pid.err=pid.setspeed-pid.actualspeed;
pid.integral+=pid.err;
pid.voltage=pid.kp*pid.err+pid.ki*pid.integral+pid.kd*(pid.err-pid.err_last);
pid.err_last=pid.err;
pid.actualspeed=pid.voltage*1.0;
return pid.actualspeed;
}
void main()
{
float speed=1.0;
PID1_init() ;
printf("system begin\n");
while(1)
{
speed=PID_realize(200.0);
printf("%f\n",speed);
}
}
这个程序哪里错了,为什么串口调试助手无法显示speed,并且干扰电脑运行。
|
|