外置式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. 移动端 触摸事件 ontouchstart、ontouchmove、ontouchend、ontouchcancel[转]

    转:http://www.cnblogs.com/irelands/p/3433628.html 1.Touch事件简介pc上的web页面鼠 标会产生onmousedown.onmouseup.onm ...

  2. mysql中子查询更新,得用别名表

    通过查出最大id,来更新记录 update order set status = 'xx' where id in (select v.id from (select max(id) id from ...

  3. web audio living

    总结网页音频直播的方案和遇到的问题. 代码:(github,待整理) 结果: 使用opus音频编码,web audio api 播放,可以达到100ms以内延时,高质量,低流量的音频直播. 背景: V ...

  4. Linux vim 中文显示乱码解决方法

    因为在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码.改动了一下配置文件,使vi支持gb编码就好了.$vi ~/.vimrclet &a ...

  5. Django中的Cookie和Session操作以及CBV

    1.Cookie 平常我们在浏览网页的时候,在需要输入密码的地方,如果已经登陆了一次,并且时间间隔比较近的话,是不需要登陆的,为什么了?这就是Cookie的作用. Cookie(或Cookies)指某 ...

  6. 模仿jquery框架源码 -生长---跨域访问

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  7. .vimrc .bashrc

    怕丢了,赶快保存! .bashrc # switch caps lock with escxmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'sudo ...

  8. Python运算和和表达式 学习笔记

    光荣之路Python公开课第二讲 Python运算符和表达式. 一 Python运算符 Python运算符包括 算术运算符,赋值运算符,位运算符,逻辑运算符,身份运算符,成员运算符. 1. 算术运算符 ...

  9. Maze迷宫问题(求最优解)

    迷宫地形我们可以通过读文件的形式,通过已知入口逐个遍历坐标寻找通路. 文件如图: 每个坐标的位置用结构体来记录: struct Pos //位置坐标 { int _row; int _col; }; ...

  10. while 读取文件内容

    exec < filename while read line;do echo $line done 方法1 while read line;do echo $line done<$ 方法 ...