单片机pid控制

2019-03-24 17:35发布

#include<stdio.h>
#include<stdlib.h>  
struct _pid()
{
float SetWater;            //定义设定值
float Water;
float incrementWater;   
float result;        //定义实际值                  
float err;                //定义偏差值
float err_next;            //定义上一个偏差值     
float err_last;            //定义最上前的偏差值
float Kp,Ki,Kd;            //定义比例、积分、微分系数 }pid;  
void PID_init()
{
  pid.SetWater=0.0;     
  pid.result=0.0;     
  pid.err=0.0;
  pid.err_last=0.0;     
  pid.err_next=0.0;     
  pid.Kp=0.2;     
  pid.Ki=0.015;     
  pid.Kd=0.2;
}
}  
float PID_realize(Water)
{   
pid.SetWater=Water;
pid.err=pid.SetWater-pid.result;   
incrementWater=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);
pid.err_last=pid.err_next;     
pid.err_next=pid.err;     
return  incrementWater;
}


compiling pid.c...
PID.C(3): error C141: syntax error near ')'
PID.C(24): error C141: syntax error near '}'
pid.c - 2 Error(s), 0 Warning(s).
怎么改啊,刚学不太懂

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
wsmysyn
2019-03-25 04:55
1、struct _pid(),括号“()”去掉;结构体定义语法规则,没有()
2、 //定义比例、积分、微分系数 }pid; 这行  在“}”前面换行,//把 “}pid;” 注释掉了有错误;
3、float PID_realize(Water),这行上面的“}”去掉一个,多余了一个;
4、incrementWater=pid.Kp。。。应该是pid.incrementWater=...;否则是未定义的;
5、同上,return incrementWater也应该是pid.incrementWater。否则是未定义的。

一周热门 更多>