#include
using namespace std;
struct _pid{
float SetSpeed; //定义设定值
float ActualSpeed; //定义实际值
float err; //定义偏差值
float err_last; //定义上一个偏差值
float Kp,Ki,Kd; //定义比例、积分、微分系数
float voltage; //定义电压值(控制执行器的变量)
float integral; //定义积分值
}pid;void PID_init(){
printf("PID_init begin \n");
pid.SetSpeed=0.0;
pid.ActualSpeed=0.0;
pid.err=0.0;
pid.err_last=0.0;
pid.voltage=0.0;
pid.integral=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;
}int run_pid(){
printf("System begin \n");
PID_init();
int count=0;
while(count<1000) {
float actual_speed=PID_realize(200.0);
printf("count is: %d, actual_speed is: %f\n", count, actual_speed);
count++;
}
return 0;
}int main(int argc, char const *argv[])
{
run_pid();
return 0;
}
- 基于Labview的PID算法详解9次下载
- PID算法原理、调试方法及源代码12次下载
- 数字PID及其算法讲解22次下载
- 第五章:PID控制算法控制算法9次下载
- 温度控制的PID算法及C程序实现105次下载
- 使用单片机和Arduino实现增量式PID位置式PID算法和PID库免费下载67次下载
- PID控制经典教程之位置式PID控制原理(上)0次下载
- PID控制经典教程之位置式PID控制原理(下)0次下载
- Protel DXP多媒体实例教程详解0次下载
- 四轴PID控制算法详解(单环PID、串级PID)52次下载
- PID算法设计与分析0次下载
- PID算法详解12次下载
- MATLAB数学建模算法及实例分析0次下载
- 温控系统中改进的PID算法114次下载
- Protel DXP 实例教程详解0次下载
评论
- 华秋(原“华强聚丰”):
- 电子发烧友
- 华秋开发
- 华秋电路(原"华强PCB")
- 华秋商城(原"华强芯城")
- 华秋智造
- 设计技术
- 行业应用
- 特色内容
-
关注我们的微信
-
下载发烧友APP
-
电子发烧友观察