温度控制-模糊PID问题

dereck1314 2017-05-05 02:07:54
小弟最近研究模糊PID控制,有几个疑问
首先说明:
e = 设定值 - 测量值
ec = 现在的e - 前一个e
模糊规则后的修正值:_Kp,_Ki,_Kd
初始PID参数 Kp,Ki,Kd
e,ec,_Kp,_Ki,_Kd的隶属度函数都是三角形隶属函数
e,ec的论域为[-6~6],_Kp,_Ki,_Kd的论域为[-3~3],分别模糊化为{NB,NM,NS,ZO,PS,PM,PB}
Ke,Kec为e和ec的模糊化因子
KPU,KIU,KDU分别是Kp,Ki,Kd的解模糊因子

我的程序说明思路
第一步,将e*Ke和ec*Kec代入隶属函数,求出最高的隶属度和对应的隶属值(如:e*Ke的隶属值为NM,隶属度为0.8,ec*Kec的隶属值为PM,隶属度为0.7)

第二步,将NM和PM带入模糊规则表(规则表详见图片),求出对应的_Kp,_Ki,_Kd的值

第三步,Kp = Kp+ KPU*_Kp*0.7,Ki = Ki+ KIU*_Ki*0.7,Kd = Kd+ KDU*_Kd*0.7(式中0.7为第一步求出的较低的那个隶属度)

第四步,拿着得到的PID参数去算输出量

问题:
问题1:请问大神们我以上的思路是不是正确?
问题2:Kp = Kp+ KPU*_Kp*0.7这个式子右边的Kp需要累加么,还是一直用初始参数(累加的意思是:设KPU*_Kp*0.7=1,Kp初始为2,那么累加的话第一次,Kp = 2+1=3;第二次Kp= 3+1,以此类推),如果不累加的话我发现一旦控温平稳后,由于e和ec的隶属值求出来为ZO,导致_Kp,_Ki,导致Kp,Ki的值都是初始设置的值,这样如果我初始设置偏差的话就会对系统造成一定的影响吧。。
问题3:如何确定Ke,Kec,KPU,KIU,KDU,我现在是自己估计个范围如e范围[-1000~1000],而论域为[-6~6],那么Ke定为0.006,具体[-1000~1000]这个范围有什么方法确定嘛
问题4:网上很多说解解模糊需要重心法,而我现在_Kp,_Ki,_Kd就一个参数,怎么使用重心法?


我自己按照以上程序试了下PID控制,有很严重的冲温,大概到2摄氏度左右,然后下来震荡,到后来虽然控住了,感觉这样不行啊,我以前用手动调PID参数的方法,直接上去就能稳住,最多超个0.几

求大神们指点迷津



...全文
6789 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dereck1314 2018-03-22
  • 打赏
  • 举报
回复
引用 5 楼 l645317186 的回复:
楼主,你这个最后的测试效果怎么样啊,能给讲讲不,谢谢~~
我试出来不怎么好。。。。还是不完全微分的靠谱
LeeAmySnail 2018-02-12
  • 打赏
  • 举报
回复
楼主,你这个最后的测试效果怎么样啊,能给讲讲不,谢谢~~
dereck1314 2017-05-09
  • 打赏
  • 举报
回复
引用 3 楼 uid123 的回复:
今天有人答了,不过可以设定多次判断点,30度的时候可以是一种算法,低于30的时候是另一种算法。
这个建议好,我好好想想
uid123 2017-05-08
  • 打赏
  • 举报
回复
今天有人答了,不过可以设定多次判断点,30度的时候可以是一种算法,低于30的时候是另一种算法。
dereck1314 2017-05-08
  • 打赏
  • 举报
回复
引用 1 楼 uid123 的回复:
你这个是不是昨天在电子发烧友上发布过了??
是啊,没人回答。。。。
uid123 2017-05-07
  • 打赏
  • 举报
回复
你这个是不是昨天在电子发烧友上发布过了??

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧