描述

位置式PID的C语言写法详解

PID调节口诀:

参数整定找最佳,从小到大顺序查

先是比例后积分,最后再把微分加

曲线振荡很频繁,比例度盘要放大

曲线漂浮绕大湾,比例度盘往小扳

曲线偏离回复慢,积分时间往下降

曲线波动周期长,积分时间再加长

曲线振荡频率快,先把微分降下来

动差大来波动慢,微分时间应加长

理想曲线两个波,前高后低4比1

一看二调多分析,调节质量不会低

下面以PID调节器为例,具体说明经验法的整定步骤:

A.、让调节器参数积分系数S0=0,实际微分系数k=0,控制系统投入闭环运行,由小到大改变比例系数S1,让扰动信号作阶跃变化,观察控制过程,直到获得满意的控制过程为止。

B、取比例系数S1为当前的值乘以0.83,由小到大增加积分系数S0,同样让扰动信号作阶跃变化,直至求得满意的控制过程。

C、积分系数S0保持不变,改变比例系数S1,观察控制过程有无改善,如有改善则继续调整,直到满意为止。否则,将原比例系数S1增大一些,再调整积分系数S0,力求改善控制过程。如此反复试凑,直到找到满意的比例系数S1和积分系数S0为止。

D、引入适当的实际微分系数k和实际微分时间TD,此时可适当增大比例系数S1和积分系数S0。和前述步骤相同,微分时间的整定也需反复调整,直到控制过程满意为止。

PID参数是根据控制对象的惯量来确定的。大惯量如:大烘房的温度控制,一般P可在10以上,I=3-10,D=1左右。小惯量如:一个小电机带一台水泵进行压力闭环控制,一般只用PI控制。P=1-10,I=0.1-1,D=0,这些要在现场调试时进行修正的。

PID参数的设置的大小,一方面是要根据控制对象的具体情况而定;另一方面是经验。P是解决幅值震荡,P大了会出现幅值震荡的幅度大,但震荡频率小,系统达到稳定时间长;I是解决动作响应的速度快慢的,I大了响应速度慢,反之则快;D是消除静态误差的,一般D设置都比较小,而且对系统影响比较小。对于温度控制系统P在5-10%之间;I在180-240s之间;D在30以下。对于压力控制系统P在30-60%之间;I在30-90s之间;D在30以下。

这里介绍一种经验法。这种方法实质上是一种试凑法,它是在生产实践中总结出来的行之有效的方法,并在现场中得到了广泛的应用。

这种方法的基本程序是先根据运行经验,确定一组调节器参数,并将系统投入闭环运行,然后人为地加入阶跃扰动(如改变调节器的给定值),观察被调量或调节器输出的阶跃响应曲线。若认为控制质量不满意,则根据各整定参数对控制过程的影响改变调节器参数。这样反复试验,直到满意为止。

经验法简单可靠,但需要有一定现场运行经验,整定时易带有主观片面性。当采用PID调节器时,有多个整定参数,反复试凑的次数增多,不易得到最佳整定参数。

PID是比例,积分,微分的缩写。

比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的 不稳定。

积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。

微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。

位置式PID算法的C语言代码

typedef struct{

float limit; //输出限幅

float target; //目标量

float feedback; //反馈量

float Kp;

float Ki;

float Kd;

float eSum;

float e0; //当前误差

float e1; //上一次误差

}PIDType;

#define max(a, b) (a〉b? a:b)

#define min(a, b) (a《b? a:b)

#define range(x, a, b) (min(max(x, a), b))

float pid_pos_update(PIDType *p)

{

float pe, ie, de;

float out=0;

//计算当前误差

p-〉e0 = p-〉target - p-〉feedback;

//误差积分

p-〉eSum += p-〉e0;

//误差微分

de = p-〉e0 - p-〉e1;

pe = p-〉e0;

ie = p-〉eSum;

p-〉e1 = p-〉e0;

out = pe*(p-〉Kp) + ie*(p-〉Ki) + de*(p-〉Kd);

//输出限幅

out = range(out, -p-〉limit, p-〉limit);

return out;

}

打开APP精彩内容

点击阅读全文

c语言程序位置式pid算法,位置式PID算法的C语言代码相关推荐

  1. 在c语言程序中main函数的位置,在C语言程序中,main函数的位置_________。

    在C语言程序中,main函数的位置_________. 答:可以放在任意位置 一切邪教组织及其活动都是诡秘的.邪恶的.危害社会的.非法的 答:正确 产品可以根据其耐用性和是否有形而分为( ) 答:非耐 ...

  2. 大一c语言程序设计项目教程课,C语言程序设计项目教程 教学课件 ppt 作者 王瑞红 C语言程序设计项目教程习题答案...

    C语言程序设计项目教程 教学课件 ppt 作者 王瑞红 C语言程序设计项目教程习题答案 习题答案模块 1 C 语言基础知识1. 选择题(1)C 语言中运算对象必须是整型的运算符是 (B ).A. %= ...

  3. 密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp实验设计 密码学_实验一_古典密码算法_C语言.doc8页 本 ...

  4. c语言高级算法bc,老调重弹篇:有关BC/C++语言程序编程学习的:10大基础算法科普帖...

    有关B|C语言算法是搭建网站程序和软件的灵魂,作为一名优秀的网站开发程序码农,只有对一些基础的算法有着全面的掌握,才会在日后搭建网站程序编写代码的过程中显得从容淡定. 1.计算Fibonacci数列 ...

  5. 在c语言程序中将数据分为两种,2012年计算机二级C语言考点归纳汇总(一至四章)...

    第1章程序设计基本概念考点归纳 1.1 C语言的特点 C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特点.下面是C语言的主要特点: ( ...

  6. c语言程序做四则运算还要余数,大整数四则运算 高质量C语言程序.doc

    大整数四则运算 高质量C语言程序 设计题目: 大整数的四则运算 1. 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构. 课程设计要求:采用模块化程序设计 源程序中应有足够的 ...

  7. C 语言程序设计基础不好,想10天考国二C语言程序设计证书,可能吗?

    实话告诉你:基本不可能!!! 除非你真的是一个学习力,逻辑能力,数学能力有很深的造诣的人! 这并不是在打击你考试的自信心. 为什么这么说呢?来看看计算机二级C语言程序考试(以下简称二级C),需要考什么 ...

  8. c语言 数组放空自己,DS1307 C语言程序 - ds1307怎么使用(ds1307引脚图及功能_c语言程序及典型应用电路)...

    DS1307 C语言程序 //******************************************************************** //************** ...

  9. 一个c语言程序有两个源文件,建立多个源文件的C语言程序.pdf

    建立多个源文件的C语言程序 建立多个源文件的C语言程序 输入.调试并执行一个C++程序 1. 建立多个源文件的C语言程序 一个C语言程序不一定只包含一个文件,它可以由多个文 件组成,比如它可以包含多 ...

  10. c语言程序能在android,android环境下编译并运行C语言程序

    我的环境: Ubuntu12.04 Android2.2 这里的C语言程序指的是运行与android系统的Linux内核上程序,目前为止有两种方法:第一种是自动编译,第二种是手动编译.这两种方法适用于 ...

最新文章

  1. Exchange 2016 證書無效如何處理?
  2. 2 datax mysql 和 mysql之间相互导入
  3. SQL中varchar和nvarchar有什么区别?
  4. python map(function, iterable, ...) 内置函数的用法 (序列迭代调用并返回)
  5. 二十八、Pyspider 爬取链家网
  6. [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)
  7. 哈工大计算机专研和学研的区别,哈工大教授发表SCI和核心期刊共26篇,发明专利6项,在交叉学科领域大放异彩!...
  8. mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
  9. 单元测试原来是这样的呼
  10. pentaho DI--- Tutorial (spoon)
  11. wfm扩展_WFM的完整形式是什么?
  12. 6款英雄主题fcpx标题字幕插件:Hero Shot Titles for Mac
  13. Hibernate一对一映射示例注释
  14. 2021软考资料汇总:历年真题/学习手册/学习计划/考试大纲等资料
  15. 域控制器升级的先决条件失败之解决方式
  16. python数据清洗工具、方法、过程整理归纳(七、数据清洗之数据预处理(二)——异常值处理、数据离散化处理)
  17. linux下的挂载点和分区是什么关系(详解挂载点)
  18. JS将GMT时间转化为当前时区时间
  19. 哪些情况下你的虾皮店铺会被封店
  20. python新建文件夹代码_Python文件夹与文件的操作实现代码

热门文章

  1. linux-ubuntu 安装mysql5.7.19的一些坑
  2. java项目部署运行
  3. Centos 6.9 编译安装gcc 4.8.5
  4. linux 下 php 安装 libevent
  5. hdu_3555 bomb
  6. CentOS上安装man手册
  7. null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
  8. 图解分析:基于setnx的分布式锁有什么缺陷
  9. vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法
  10. mysql使用中文报错,hibernate mysql 插入中文错误