外置式PID模板

#define MuBiaoCS 0 //目标常数

#define CHang_aCS 0 //比例常数

#define CHang_bCS 0 //积分常数

#define CHang_cCS 0 //微分常数

/*******************************************************************************************/

struct P_I_D {

int MuBiao; //设定目标 Desired Value

double CHang_a; //比例常数 Proportional Const

double CHang_b; //积分常数 Integral Const

double CHang_c; //微分常数 Derivative Const

int Error1; //Error[-1]

int Error2; //Error[-2]

}Pidn;

struct P_I_D *PID=&Pidn;

/********************************************************************************************/

void Pidinit(void) //pid初始化

{

PID->MuBiao=MuBiaoCS;

PID->CHang_a=CHang_aCS;

PID->CHang_b=CHang_bCS;

PID->CHang_c=CHang_cCS;

PID->Error1=0;

PID->Error2=0;

}

int PID_WZ(int SRuu) //位置式PID

{

int Error0,SCuu;

Error0 = PID->MuBiao - SRuu;

PID->Error1+=Error0;

SCuu = PID->CHang_a*Error0 //比例项

+ PID->CHang_b*PID->Error1 //积分项

+ PID->CHang_c*(Error0-PID->Error2);//微分项

PID->Error2=Error0;

return SCuu;

}

void main(void)

{

Pidinit();

}

增量式PID模板

#define MuBiaoCS 0 //目标常数

#define CHang_aCS 0 //比例常数

#define CHang_bCS 0 //积分常数

#define CHang_cCS 0 //微分常数

/*******************************************************************************************/

struct P_I_D {

int MuBiao; //设定目标 Desired Value

double CHang_a; //比例常数 Proportional Const

double CHang_b; //积分常数 Integral Const

double CHang_c; //微分常数 Derivative Const

int Error1; //Error[-1]

int Error2; //Error[-2]

}Pidn;

struct P_I_D *PID=&Pidn;

/********************************************************************************************/

void Pidinit(void) //pid初始化

{

PID->MuBiao=MuBiaoCS;

PID->CHang_a=CHang_aCS;

PID->CHang_b=CHang_bCS;

PID->CHang_c=CHang_cCS;

PID->Error1=0;

PID->Error2=0;

}

int PID_WC(int SRuu) //增量式PID

{

int Error0,SCuu;

Error0 = PID->MuBiao - SRuu; //偏差

SCuu = PID->CHang_a*Error0 //Error项

- PID->CHang_b*PID->Error1 //Error1项

+ PID->CHang_c*PID->Error2; //Error2项

PID->Error2=PID->Error1; //将上次偏差存PID->Error2

PID->Error1=Error0; //将这次偏差存PID->Error1

return SCuu;

}

void main(void)

{

Pidinit();

}

外置式与增量式PID模板程序(51单片机c语言)的更多相关文章

  1. 【转】位置式、增量式PID算法C语言实现

    位置式.增量式PID算法C语言实现 芯片:STM32F107VC 编译器:KEIL4 作者:SY 日期:2017-9-21 15:29:19 概述 PID 算法是一种工控领域常见的控制算法,用于闭环反 ...

  2. 增量式PID计算公式4个疑问与理解

    一开始见到PID计算公式时总是疑问为什么是那样子?为了理解那几道公式,当时将其未简化前的公式“活生生”地算了一遍,现在想来,这样的演算过程固然有助于理解,但假如一开始就带着对疑问的答案已有一定看法后再 ...

  3. 增量式PID简单翻板角度控制

    1.研究背景 随着电子技术.信息技术和自动控制理论技术的完善与发展,近来微型处理器在控制方面的应用也越来越多.随之逐渐渗透到我们生活的各个领域.如导弹导航装置,飞机上仪表的控制,网络通讯与数据传输,工 ...

  4. 增量式PID的stm32实现(转)

    源:增量式PID的stm32实现,整定过程 首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异. 资料上比较多的是: 还有一种是: ...

  5. C 语言实现增量式PID

    一直以来,pid都是控制领域的经典算法,之前尝试理解了很久,但还是一知半解,总是不得要领,昨天模仿着别人的代码写了一个增量式pid的代码. 我的理解就是pid其实就是对你设置的预定参数进行跟踪.在控制 ...

  6. T12焊台控制器制作教程 | T12烙铁 | PID增量式算法恒温控制 | 运算放大器-热电偶电压采集 | OLED屏幕显示-SPI通信 | 旋转编码器EC11用户操作

    前言 购买T12烙铁的相关配件已经1年多了,期间也尝试了一些开源的T12控制器,但都没有成功,要么是配套资料少,要么是英文的,其中51和arduino的居多,STM32的较少.求人不如求己,索性自己开 ...

  7. 位置式PID与增量式PID算法

    位置式PID与增量式PID算法  PID控制是一个二阶线性控制器     定义:通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.     优点             ...

  8. 位置式PID与增量式PID

    //位置式PID float Kp; float Ki; float Kd; float eSum,e0,e1; float pid_control(float now,float target) { ...

  9. 增量式pid和位置式PID参数整定过程对比

    //增量式PID float IncPIDCalc(PID_Typedef* PIDx,float SetValue,float MeaValue)//err»ý·Ö·ÖÀë³£Êý { PIDx-& ...

随机推荐

  1. PAT 1054. 求平均值 (20)

    本题的基本要求非常简单:给定N个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的.一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位.当你计算平均值的时候, ...

  2. PHP网站在Linux服务器上面的安全配置

    本文详细总结了PHP网站在Linux服务器上面的安全配置,包含PHP安全.mysql数据库安全.web服务器安全.木马查杀和防范等,很好很强大很安全. PHP安全配置 1. 确保运行php的用户为一般 ...

  3. 深度问答之提取语料,导入了yml模块

    根据目录下的yml文件循环创建同名文件夹,并从yml文件读取问答并给每个文件夹写入question和answer文件 #!/usr/bin/env python # coding:utf8 # aut ...

  4. 每天一个Linux命令(22)find命令_命令详解

        find命令的一些常用参数的常用实例和用时的注意事项.     实例:     (1)-name参数: 1)[sunjimeng@localhost home]$ find ~ -name & ...

  5. 为jquery添加扩展标准思路

    jquery扩展分为对象扩展和jquery本身类扩展: 对象扩展: (function($){ $.fn.abc = function(){ console.log($(this).get(0)); ...

  6. debian下蓝牙适配器的配置和使用

    本文打算将蓝牙适配器和手机蓝牙进行配对. 买了个支持蓝牙4.0协议的蓝牙适配器,将其插入到pc(debian 7.4)的usb口. 查看手机蓝牙信息: 选择手机中"设置"-> ...

  7. vim配置文件 .vimrc 重要参数

    vim配置文件的路径为  ~/.vimrc 重要参数如下: set mouse=a  //激活鼠标可用 syntax enable  //开启语法 set cursorline  //开启当前行光标线 ...

  8. Spring中ApplicationContext和beanfactory区别

    BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...

  9. 剑指offer之 从上往下打印二叉树

    import java.util.ArrayList; import java.util.LinkedList; /** public class TreeNode { int val = 0; Tr ...

  10. 针对PHP性能方面编程技巧的总结

    注:本文为作者多年工作经验总结,转贴请注明出处 Albert Wang 做PHP已经有4年多了吧,总是没写点什么总结一下,现在开始写博客了,也顺便总结下吧,留给那些新入行的朋友看看. 1. 不宜频繁使 ...