本帖最后由 mayuanliang 于 2022-1-4 14:04 编辑
背景:近来,厂家想要定做研发一款温度控制器,为了实现更加精确的温度控制,企业想要在温控算法方面进行优化改进;其中,产品的具体要求有:1、恒温控制:能够支持k、e、 j热电偶测量,触点输出;2、定时通断:触点短路启动定时器工作,同时一组继电器输出;另外,支持定时功能,实践到蜂鸣器响并且继电器复位;3、计数:每次计时器运行一次复位时,自动加一个数。其中,厂家特意要求:温控算法需要采用模糊pid控制;具体如下图所示:
其中,网上有很多基于PID算法实现温度调节的方案,发布在各种开源平台上,本推文中不过多赘述;可以参考的链接有:1、基于51单片机设计的温控方案;https://mp.weixin.qq.com/s/TuJJwKBuqS-DJFEDim6mNg;2、温控器使用过程:https://mp.weixin.qq.com/s/zLGpl1EwUOkyoj0J2Yqykw;3、基于模糊PID算法的电阻炉温度控制系统设计与实现 - TI模拟技术论坛 - 德州仪器TI官方技术支持社区 - 21ic电子技术开**坛等等(本推文中未公布程序代码),近来,在前期工作的基础上,对相关程序进行完善,增加模糊pid控制算法,实现温度准确调节;
采用传统的pid控制算法存在的问题:为了更好的说明控制器存在波动的原因,采用matlab pid工具箱进行模拟仿真,具体结果如下图所示:
从图中可以看出,基于pid算法设计实现的温控器,在初始阶段存在明显的过冲现象,在保证响应速度的前提下,不管如何修改比例、积分、微分参数,波动情况依然存在;并且实验中发现,响应速度越快,波动越大;因此,针对该问题,近来编写了模糊pid算法,具体的解决方案如下所示:
模糊pid实现过程:
模糊算法及解模糊;利用matlab中的 Fuzzy Logic工具箱进行控制系统进行设计,后续利用Simulink进行仿真。模拟中把偏差E和偏差变化率EC确定为模糊推理器的输入量,PID控制参数的增量系数∆KP,∆ KI,∆KD为输出量,具体过程为:
1、建立双输入三输出模糊系统,建立隶属度函数;
2、规则表编辑:一般可以制定49条模糊控制规则(大多数教科书上可以找到),后续将相应的规则编辑到matlab Fuzzy Logic工具箱内部,具体如下图所示:
将相应的规则输入到matlab 工具箱内,具体如下图所示:
采用matlab对模糊控制器进行仿真,具体程序代码如附件所示:下图展示了具体的结果,从图中可以看出,采用模糊pid控制算法后,温控精度大大提高,大大减弱了初始阶段的过冲问题,具体效果如下图所示: 采用传统pid算法的控制效果为:
附:过程中出现的问题以及解决办法:1、采用传统pid控制算法过程中,当参数选取不合理时,系统不能达到稳定状态,调试花费了较长时间依然不能达到预期要求,具体如下所示;
2、论域范围影响系统的稳定性,需要依据经验调试选取;2、对于复杂的控制系统,需要复习z变换相关资料;
|
此文章已获得独家原创/原创奖标签,著作权归21ic所有,未经允许禁止转载。