• PID控制算法的C语言实现三 位置型PID的C语言实现


      上一节中已经抽象出了位置性PID和增量型PID的数学表达式,这一节,重点讲解C语言代码的实现过程,算法的C语言实现过程具有一般性,通过PID算法的C语言实现,可以以此类推,设计其它算法的C语言实现。

     

     

    /*-------------------------------------------
           位置型PID C实现(控制电机转速)
    --------------------------------------------*/
    
    #include <iostream>
    
    using namespace std;
    
    void pid_value_init(void);
    float PID_realize(float speed);
    
    
    //(1)定义PID 结构体变量
    
    struct pid
    {
    	float SetSpeed;    //设定速度
    	float ActualSpeed;      //实际值
    	float err;      //定义偏差值
    	float err_last;       //上一个偏差值
    	float Kp, Ki, Kd;     //p,i,d系数
    	float voltage;    //电压值
    	float integral;     //积分值,即积分部分的累计值
    }pid;
    
    
    
    int main()
    {
    	int count = 0;
    
    	cout << "Please begin 
    ";
    	pid_value_init();
    
    	while (count < 1000)
    	{
    		float speed = PID_realize(200.0);
    
    		cout <<"value is " <<speed<<endl ;
    		count++;
    	}
    
    	system("pause");
    }
    
    //(3) 控制算法注意:这里用了最基本的算法实现形式,没有考虑死区问题,
    //没有设定上下限,只是对公式的一种直接的实现,后面的介绍当中还会逐渐的对此改进。
    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;
    }
    
    //(2) 初始化变量
    void pid_value_init(void)
    {
    	cout << "pid_value_init begin 
    " << endl;
    	system("pause");
    
    	pid.SetSpeed = 0;
    	pid.ActualSpeed = 0;
    	pid.err = 0;
    	pid.err_last = 0;
    	pid.integral = 0;
    	pid.voltage = 0;
    
    	pid.Kp = 0.1;
    	pid.Ki = 0.1;
    	pid.Kd = 0.1;
    
    	cout << "pid_value_init end 
    " << endl;
    	system("pause");
    }
    

     

      

     

  • 相关阅读:
    python 装饰器
    python 环境迁移之requirements.txt (window环境)
    selenium 元素查找与属性
    pytest+allure(allure-pytest基于这个插件)设计定制化报告
    Capability配置
    python_excel
    python_连接mysql
    MySql_1
    appium_环境搭建
    appium_appium简介
  • 原文地址:https://www.cnblogs.com/wyuzl/p/6515739.html
Copyright © 2020-2023  润新知