c语言实现PID算法(简单)

pid主要应用于工业控制、电器等方面,如生活中空调保持恒温、饮水机保温等。 

#include <stdio.h>
struct _pid
{
       float  error;        //差值
       float error_last;    //上一次差值
       float integral;      //差值的和
}

float Kp =0.01;    //比例系数,  提升速度
float Ki = 1;      //积分系数,稳定输出
float Kd =0.01;    //微分系数,减小振荡

float cur_speed = 0;        //当前的速度
float level = 0;            //用于输出pwm
float set_speed = 50;       //设定的速度

struct _pid pid;
void pid_init()
{
     pid.error = 0;
     pid.error_last = 0;
     pid.integral = 0;
}

void pid_control()
{
     pid.error=set_speed-cur_speed;
     pid.integral +=pid.error;

     level =Kp*pid.error+Ki*pid.integral+Kd*(pid.error-pid.error_last);
     pid.error=pid.error_lasst;

}
int main()
{
     pid_init();
     for(i=0;i<10;i++)
     {
           pid_control();
           printf("当前速度%f  等级 %f\n",cur_speed,level);

     }
     return 0 ;

}

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
串级PID算法是指在控制系统中使用多个PID控制器来实现更加复杂的控制任务。这种算法常用于对多变量、多输入和多输出的控制系统中。 在C语言程序实现串级PID算法需要使用多个PID控制器对象,并按照特定的逻辑来进行控制计算和参数更新。 首先,需要定义多个PID控制器的参数,包括比例系数Kp、积分时间Ti和微分时间Td。这些参数可以根据实际情况进行调整。 接下来,需要定义输入信号和输出信号的变量。输入信号通常指的是控制系统的目标值,输出信号则是实际的控制量。 然后,可以使用循环结构来进行控制计算的实现。在每次循环中,首先需要获取当前的输入信号和输出信号值。 然后,使用PID控制器对象对当前的输入信号和输出信号进行计算,得到控制量。 接下来,根据控制量和输出信号的误差,结合PID控制器的参数,计算出新的控制器输出信号。 最后,将新的输入信号和输出信号的值更新到相关的变量中,以供下一次循环使用。 需要注意的是,在串级PID算法中,多个PID控制器之间的参数更新和信号传递需要按照一定的规则进行。 总的来说,串级PID算法是一种在控制系统中使用多个PID控制器来实现复杂控制任务的方法。在C语言程序中,可以通过定义多个PID控制器对象,并按照特定的逻辑进行参数更新和信号传递,来实现串级PID算法的功能。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值