去年导师给公司做的三路温控器让我搞的,匆匆忙忙就交差了直到现在反应出了一些问题我也搞了两天。感觉调PID参数太耗时间了,现在改进之后,超调量1度,误差正负0.5度。之前的问题是存在4度的静态偏差,尤其是在温控设定值三十多度四十度时比较明显。PID程序是直接用师兄的复制粘贴过来的,去年调的时候没加积分项原因是加了积分项之后根本就控制不起来了。由于当时比较赶也没有深究,五十度时控制效果很好就也没试验其它值就交差了。

加积分项就控制不了这个问题我想了一晚上,直到早上我醒了有了思路。那就从最根本的开始分析:

1、

                                         fout1 = PIDCalc(&stPID1,ActualTemper1); //PID 计算if( fout1 > 0 )
{if( RunFlag ==1 )                        DoB = 0;              //控制相应的继续加热 }else if( fout1 <= 0 ){if( RunFlag ==1 )DoB = 1;                     //相应加热器停止加热}

说明了这个PID计算的值一直是小于零的。可是为什么小于零呢?来看一下PIDCalc();这个函数

float PIDCalc( PID *pp, float NextPoint )
{float xdata dError,Error; dError = pp->LastError - pp->PrevError; // 当前微分 pp->PrevError = pp->LastError; pp->LastError = Error; return (pp->Proportion * Error//比例+ pp->Integral * pp->SumError* 0.01  //积分项+ pp->Derivative * dError); //   微分项}

其中返回值是三个数相加的,Error、dError这两个值是确定的可以计算出来的,而SumError是多少呢?初始值根本就不知道,所以问题就在于没有初始化,初始化,初始化。这个一定要记住喽局部变量不初始化就是任意值,定义变量时最好带着初始化了。

初始化之后果然好使了。但是系统震荡明显且振幅大。于是开始调PID的过程了。参考了一位前辈的经验点击打开链接。其中他的那个模型特别好,直接带入计算设定值。效果还是不错的。不过,当设定温度与实际温度相差较大时控制效果很不好。于是加入积分分离,只有当靠近设定温度时才引入积分项。

float PIDCalc( PID *pp, float NextPoint )
{float xdata dError,Error; unsigned char index;Error = pp->SetPoint - NextPoint; // 偏差 if(abs(Error)<5){pp->SumError += Error; // 积分index = 1;}    else{index = 0;}                   //积分分离,防止大幅度增减设定导致积分项一直累加,引起较大超调dError = pp->LastError - pp->PrevError; // 当前微分 pp->PrevError = pp->LastError; pp->LastError = Error; return (pp->Proportion * Error//比例+ pp->Integral * pp->SumError*index * 0.01  //积分项+ pp->Derivative * dError); //   微分项}

就是说,遇到了问题不要慌不要烦从最根本的问题去分析。

温控器PID调节记录及注意事项相关推荐

  1. pid控制从入门到精通pdf_【应用指南】PID调节让流量/压力控制又快又稳

    当工况变化的时候,你有没有发现流量/压力波动不再稳定,响应也会发生延迟,甚至造成阀门抖动的现象? 其实,你可能忽略了关键的使用技巧--PID调节. Alicat流量控制器与压力控制器是以流量/压力测量 ...

  2. pid调节软件_非常实用的PID算法和PID控制原理

    点击箭头处"工业之家",选择"关注公众号"! PID控制原理和特点 工程实际中,应用最为广泛调节器控制规律为比例.积分.微分控制,简称PID控制,又称PID调节 ...

  3. 增量式pid调节方式有何优点_PID控制算法

    点击关注,必有收获! 感谢百度,本文由百度搜索,百度百科得到. 在过程控制中,按偏差的比例(P).积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器.它具有 ...

  4. 直流电机PID调节——P

    其实要用PID调节的话,最好是使用带有编码器的比较高端一点的直流减速电机,但是因为它价格有点贵,所以我们一般做智能小车就会选用普通的直流电机,但是普通的直流电机也是可以使用PID调节的,虽然它的效果没 ...

  5. 科目二 座椅调节 记录

    科目二 座椅调节 记录 1 2 1.坐姿 首先应将臂部尽量向后靠,以顶到坐垫及椅背之间最好,这样可使自己做得更稳,不会晃动. 2.双脚 两只脚的前脚掌分别搭在离合和刹车踏板上,膝盖能略微弯曲,并且踩到 ...

  6. 西门子PID调节仿真程序

    西门子PID调节仿真程序 1200plc和1500plc通用,1200只需一个PLC实物,1500可以直接仿真.就能轻松实现PID工艺对象的仿真,是学习PID的参数的好工具. 针对这套程序,录制了一段 ...

  7. 西门子PID调节仿真程序,1200plc和1500plc通用,只需一个PLC实物,就能轻松实现PID工艺对象的仿真

    西门子PID调节仿真程序,1200plc和1500plc通用,只需一个PLC实物,就能轻松实现PID工艺对象的仿真,是学习PID的参数的好工具. 针对这套程序,录制了一段视频解说,手把手教你如何使用博 ...

  8. 位置型PID增量型PID调节直流电机

    位置型PID增量PID调节直流电机 一.思路: 无论是位置型还增量型的PID都是为了调节PWM波,使电机的转速达到设定值.这次实验目的主要是实现用机智云app控制电机并使电机的转速达到设定值后保持稳定 ...

  9. 基于PID调节的两轮自平衡小车的循迹控制

    基于PID调节的两轮自平衡小车的循迹控制   硬件电路篇 小车主控芯片使用飞思卡尔公司产的K60. 电源模块 车体电路使用两种电压,分别为3.3v和5v供电.车体使用7.2V的锂电池供电,为提供电路所 ...

最新文章

  1. 塑料:泡两天澡我就消失了?酶降解塑料居然可以这么快 | Nature
  2. C#获取控制台句柄的方法
  3. 【CyberSecurityLearning 16】单臂路由与DHCP中继+ ICMP协议+VTP
  4. 【uni-app】动态计算图片高度
  5. apache hadoop_使用Apache Hadoop计算PageRanks
  6. C#正在被人用来做什么?--在CSDN上引发小讨论的帖子
  7. 【HDU - 1134 】Game of Connections(JAVA大数加法,卡特兰数)
  8. 如何应对软件项目的投标答辩
  9. js原生事件委托的实现
  10. 谈一谈SQL Server中的执行计划缓存(下)
  11. VS2019 windows桌面应用_基于.Net Core平台开发WinForms应用程序
  12. 感恩节(Thanksgiving Day)
  13. 流落在帝都的那些80后北漂IT人,你们的未来在哪儿
  14. 日记侠:你想开始写文章吗?(可以赚钱的)
  15. Cython的学习方法
  16. 集成电机驱动方案(STM32+DRV8841)
  17. 红黑树进阶—左倾红黑树(LLBR)介绍
  18. 1.5v电池是几号?
  19. 淘宝小部件:全新的开放卡片技术
  20. 软件工程导论概念集合

热门文章

  1. 网络编程—IO多路复用详解
  2. mysql latid1_mysql数据库触发器详解-阿里云开发者社区
  3. ETSI的NFV名词解释汇总
  4. 用C语言编程实现接口COM组件,把《C语言接口与实现》读薄之第一章:引言
  5. Dalvik虚拟机、ART虚拟机
  6. # 腾讯数据库TcaplusDB十年厚积薄发,已是参天大树
  7. CCF201609-1 最大波动 java (100分)
  8. BaseBlockCipher(bouncycastle)
  9. Java购物车前端代码_java web实现购物车功能的java购物车代码示例代码
  10. Java课程设计-简单五子棋