外置式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. 在函数中如何获取 线程对象、线程唯一ID

    threading.current_thread() threading.current_thread().ident

  2. PAT 1057. 数零壹(20)

    给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0.多少1.例如给定字符串“PAT ...

  3. test_bdc

    [转]REPORT zbdc_test_by_shir. * 定义个BDC格式的内表**************************************************DATA : B ...

  4. ABAP 内表

    定义内表 1. 先声明表结构, 再根据表结构定义内表.   TYPES: BEGIN OF w_itab, a(10), b(10), END OF w_itab. DATA: itab1 type ...

  5. MyBaits面试题

    原文地址 Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的 ...

  6. python基础17 ---继承补充知识

    一.继承的顺序 1.在python中的类可以集成多个类,既然是继承多个类就有类的寻找顺序这么一说.其寻找方法就有广度优先和深度优先两种. 2.当类是新式类,多继承的情况下会按照广度优先的顺序查找. 如 ...

  7. 33_为应用添加多个Activity与参数传递

    1\ 2\ 3\ 4\ 2 3

  8. iOS NSDateFormatter 不安全线程 处理

    记得 上次我们开CodeReView大会 有人提出 "  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];   ...

  9. c++ 之重要性

    c++的功能比c语言大的多,c语言偏最底层,且程序短小,而对于一个大的系统,用c++,因为它具备了c语言的优点. 很多学嵌入式的觉得学了c语言之后,就不用学c++了,会认为c++很简单,然而,c++并 ...

  10. cookie补充

    之前写cookie中关于突破同源策略共享cookie说的比较含糊,此次来详细说明一下: ## 首先说一下cookie的path和domain这 两个属性值 path: path表示的此条cookie是 ...