外置式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. Django之stark组件1

    stark组件 stark组件是根据Django admin为原型写的一个组件,能够让我们告别增删改查.stark组件是可插拔试的组件, 移植性强,而且只用配置文件就能够得到想要的数据 一.stark ...

  2. spring属性注入方式

    一.使用有参构造注入属性 配置文件 constructor-arg标签是需注入属性的名字 User类 生成了User的有参构造函数 测试类 结果 打印出了name属性的值 二.使用set方法注入属性 ...

  3. wechat JS-SKD (getLoaction) 定位显示百度map

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  4. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

  5. flex 组件重写 组件生命周期

    AS方式重写组件常规步骤 1.如果有必要,为组件创建所有基于标记(tag-based)的皮肤(skins) 2.创建ActionScript类文件 ⑴从一个基类扩展,比如UIComponent或者其他 ...

  6. 【leetcode刷题笔记】Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  7. 双向链表(C++实现)

    ////////////////////////////////////////////////////////////////////////////////////// /////// 这里建立两 ...

  8. location记录<18.7.21>

    // var index = location.href; // console.log(index) // // indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. // v ...

  9. [算法]旋转矩阵问题(Spiral Matrix)

    题目一: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spir ...

  10. java入门了解06

    1.进程 :     (一)正在执行的程序称作为一个进程. 进程负责了内存空间的划分. (二)问题: windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗? 从宏观的角度: ...