单片机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条回答
sint27
1楼-- · 2019-03-24 20:48
第一个“}”放错位置了,应该放在void PID_init()的上方
dontgodie
2楼-- · 2019-03-24 23:35
 精彩回答 2  元偷偷看……
wsmysyn
3楼-- · 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。否则是未定义的。
maxiaoling
4楼-- · 2019-03-25 10:10
wsmysyn 发表于 2016-6-28 10:37
1、struct _pid(),括号“()”去掉;结构体定义语法规则,没有()
2、 //定义比例、积分、微分系数 }pid;  ...

超级感谢你,我也要努力学习了

一周热门 更多>