@TOCPID温度控制参数整定方法

出处:https://blog.csdn.net/pengzhihui2012/article/details/50380780

最近做了一个温度控制相关的项目,在此记录一下,方便以后查找,同时也供大家参考,欢迎指正,所有数据均为实验数据,绝对真实。

  1.  位置式PID控制公式原型:u(t) = kp * e(t) + ki * [e(1) + e(2) + ....+ e(t)] + kd * [e(t) - e(t-1)]
    
  2.  控制对象:加热/制冷器(在2分钟内不能再加热至冷之间切换)控制密封的腔体(空间体积大小15cm*20cm*65cm)温度。
    
  3.  控制原理:利用MCU的输出比较模块(OCM)产生PWM波驱动H桥电路(通过目标温度和环境温度对比决定加热或者制冷)。
    
  4.  PID参数整定
    

因温度控制属于滞后控制系统,可采用工业控制中常用的滞后控制参数整定模型(Ziegler-Nichols参数整定方法)

控制器

Ti

Td

Kp

Ki

Kd

P

×

×

0.5Kc

×

×

PD

×

0.15Pc

0.65Kc

×

Kp*Td/T

PI

0.85Pc

×

0.45Kc

Kp*T/Ti

×

PID

0.5Pc

0.15Pc

0.65Kc

Kp*T/Ti

Kp*Td/T

参数说明:

Kc: 只采用比例环节控制条件下,控制系统的稳态误差尽量达到最小时的Kp值。

Pc: 只采用比例环节控制条件下,控制系统的震荡周期。

Ti: 控制系统的积分时间。

Td: 控制系统的微分时间。

T: PID控制采样计算周期。

Kp、Ki、Kd:被整定的参数。

1):获取合适的Kc值,设置Ki,Kd为0。在当前温度进入目标温度3.5°内开始进行PID控制,之前采用90%恒定功率加热。

图一(Kc =5)

图二(Kc =9)

图三(Kc =20)

从上述的四组数据中可以看到,当Kc=5时,控制系统的稳态误差是最小的。在目标范围正负3°之间,选取Kc = 5.

2):计算Pc值。从上述的图一(将.csv格式的数据文件在excel中转换图表,将鼠标放在曲线上,会自动显示此点的坐标,如图所示),取4个震荡周期一共720个点,得出一个震荡周期为Pc=720*5/4= 900s。

3):根据个人需要采用哪种PID组合来计算Ti、Td、Kp、Ki、Kd。温度控制是属于滞后控制,而PID控制中的,微分项是具有超前调节的作用,因此必须引入;积分项对误差的作用取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,推动控制器的输出向稳态误差减小的方向变化,直到稳态误差等于零。我采用的是PID组合来控制。得出Ti=9000.5=450s。Td=9000.15=135s。

Kp=50.65=3.25;Ki= KpT/Ti=3.255/450=0.036;Kd= KpTd/T=3.25*135s /5=88。

4):采用PID控制温度,无论高温低温,稳态误差均在正负0.5°范围之内。如下所示:

一般根据模型计算的参数不一定是适合所有的控制系统(这里实验得到的最佳Kd值为120,而我们算出来的是88),根据特定的环境调节参数范围,找到最优参数,因本系统是滞后系统,微分项起主导作用,我暂时还只做了调整kd值的实验,Ki一般反应在系统达到稳态的时候是否存在稳定误差,从实验结果得出,稳态误差几乎可以忽略。

零下一度的目标温度,连续8小时的温度控制数据:

附录://PWM频率为1Khz,定时器的计数周期为5000(mPID.MaxDuty = 5000*90%),PID返回值和上次的的定时器技术值决定本次的占空比。

INT32 PID_calculate(double CurTemp)

{

INT32 RetValue;doubleresult_value;// Keep previouserrormPID.PrevError =mPID.Error;// calculatecurrent errormPID.Error =mPID.Target - CurTemp;// calculateintegralmPID.SumError +=mPID.Error;if(mPID.Kd >0.0001){result_value =mPID.Kp * mPID.Error + mPID.SumError * mPID.Ki +mPID.Kd* (mPID.Error - mPID.PrevError);}else{result_value =mPID.Kp * mPID.Error + mPID.SumError * mPID.Ki;}RetValue =(INT32)result_value;return RetValue;

}

//Timer interrupt enable control flag, execute temperaturecontrol.

//

void TemperatureControl()

{

INT32 ret = 0;if(mPID.type ==HEAT){INT32 DutyValue= OC4RS;if(fabs(mPID.Current- mPID.Target) <= PIDControlStartPoint){PIDControlStartPoint = 12;ret =PID_calculate(mPID.Current);}elseif(fabs(mPID.Current - mPID.Target) <= TempControlStartPoint){OC4RS = INITPWMPERIOD16 * 50 / 100.0;ret = 0;return ;}else{ret = 0;}if( (DutyValue+ ret) > mPID.MaxDuty)OC4RS =mPID.MaxDuty;else if(DutyValue+ ret < mPID.MinDuty)OC4RS =mPID.MinDuty;elseOC4RS +=ret;}else if(mPID.type== COOL){INT32 DutyValue= OC3RS;if(fabs(mPID.Current - mPID.Target) <= PIDControlStartPoint){PIDControlStartPoint = 12;ret =PID_calculate(mPID.Current);ret = -ret;// must be negative}elseif(fabs(mPID.Current - mPID.Target) <= TempControlStartPoint){if(mPID.Target > 5.1)OC3RS =INITPWMPERIOD16 * 70 / 100.0;elseOC3RS =INITPWMPERIOD16 * 78 / 100.0;ret = 0;return ;}else{ret = 0;}if( (DutyValue+ ret) > mPID.MaxDuty)OC3RS =mPID.MaxDuty;elseif(DutyValue + ret < mPID.MinDuty)OC3RS =mPID.MinDuty;elseOC3RS +=ret;}else{}

}

PID温度控制参数整定方法相关推荐

  1. matlab pid 课设 参考文献,系统控制论文,关于Matlab在计算机控制技术课程“PID控制器参数整定”中的应用相关参考文献资料-免费论文范文...

    导读:本论文可用于系统控制论文范文参考下载,系统控制相关论文写作参考研究. 周少武陈敏沈红远 曾照福 (湖南科技大学信息与电气工程学院 湖南湘潭411201) 摘 要:传统PID参数整定的教学方法以定 ...

  2. 我的四轴专用PID参数整定方法及原理

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

  3. 我的四轴专用PID参数整定方法及原理---超长文慎入(转)

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

  4. 西门子PLC S7-300系列的PID控制器参数整定的一般方法分享

    西门子PLC S7-300系列的模块配置灵活,扩展性强,通讯功能强大,为自动化控制系统提供了解决方案.西门子PLC S7-300的编程软件是STEP7 V5.5,在编程软件中,用户可以通过PID功能块 ...

  5. 如何使用matlab得出pid控制参数值,基于MATLAB的PID控制器参数整定及仿真

    基于MATLAB的PID控制器参数整定及仿真 摘要:PID控制器结构和算法简单,应用广泛,但参数整定比较复杂,在此我探讨利用MATLAB实现PID参数整定及其仿真的方法,并分析比较比例.比例积分.比例 ...

  6. pid调节软件_(四)差分底盘设计——5.底盘PID控制参数整定

    运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为底盘包 ...

  7. SLAM导航机器人零基础实战系列:(四)差分底盘设计——5.底盘PID控制参数整定

    SLAM导航机器人零基础实战系列:(四)差分底盘设计--5.底盘PID控制参数整定 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...

  8. matlab中pid Tune控制器,基于MATLAB的PID控制器参数整定及仿真

    基于MATLAB的PID控制器参数整定及仿真 摘要:PID控制器结构和算法简单,应用广泛,但参数整定比较复杂,在此我探讨利用MATLAB实现PID参数整定及其仿真的方法,并分析比较比例.比例积分.比例 ...

  9. 永磁同步电机电阻、电感、惯量、转矩系数、反电势系数、极对数、编码器零位等一系列的参数辩识方法,电流速度环pi参数整定方法

    参数辩识 永磁同步电机电阻.电感.惯量.转矩系数.反电势系数.极对数.编码器零位等一系列的参数辩识方法,电流速度环pi参数整定方法,都是从实际项目中总结出来的,个人写成了文档,很详细,想学参数辩识的可 ...

  10. PID控制参数整定(调节方法)原理+图示+MATLAB调试

    序 首先最重要的是了解每个参数调节了系统响应的那些属性,通过观察响应从而调节参数改变属性. PID的作用概述: 1.P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础. 2.I在有系统误 ...

最新文章

  1. 亲身验证切实可行的python项目部署方案
  2. Centos7.4 安装elasticsearch6.1.3集群部署
  3. OpenCV使用小札记-Cvmat与IplImage的相互转换
  4. java 华氏度_在Java中将华氏度转换为摄氏温度[重复] - java
  5. 我的世界服务器启动端怎么制作教程,我的世界怎样制作和运行服务器 详细制作教程一览...
  6. Atitit 并发锁机制 艾提拉总结 目录 1. 2. 用的比较频繁锁 2 1.1. 语法锁sync api锁 2 1.2. 数据库标志位锁 2 1.3. 文件锁 2 2. 锁得类型 3 2 2.
  7. python 书签内容整理
  8. VX线报机器人的使用
  9. 夏令营课程产品介绍PPT模板
  10. 微信小程序 选项卡的简单实例
  11. html加大字号代码,HTML网页字体大小的设置
  12. 树莓派linux led字符设备驱动(设备树)
  13. mfc连接oracle12c,MFC ADO连接Oracle12c数据库 类库文件
  14. 杭州个人小客车摇号百分之百中签率所需要的时间预测和阶梯摇号概率提升
  15. 获取android 用到的所有开发包文件
  16. Python实现Excel拆分操作
  17. 为什么空集是集合的子集_空集为什么是任何集合的子集和非任何空集的真子集呢...
  18. 百度与谷歌排名规则算法的大致区别
  19. 网络安全控制网管解决方案
  20. 十进制转十六进制 代码

热门文章

  1. vue3 路由跳转,打开新页面
  2. 台式计算机投影仪无线传输软件,台式机无线投屏到投影仪 4台PC电脑一个屏
  3. Jenkins 配置 Maven 环境变量
  4. php制作入库单,教你如何利用vba制作自动登记数据的仓库入库单
  5. 中联医疗系统服务器,中联电子病历系统(ZLEMR)
  6. php office 在线预览,在线预览pdf和Office文档
  7. hpsocket实现HTTP通信功能
  8. CAD图纸打印出来后很多CAD文字消失了怎么办?
  9. LaTex中 viso及svg转emf
  10. stm32控制步进电机程序