通过模糊控制实现PID参数Kp、Ki、Kd的整定问题,从而获得比单独PID更好的控制效果。
我是毕设第一次接触PID控制系统,故刚开始设计时进入了一个误区:单独PID的参数难以确定,而模糊PID则借助模糊系统能很好的确定PID的参数,不需对参数有任何的主观判断。在不断的试错过程中才意识到模糊PID中的模糊系统输出的是参数的调整值,故也应给定一组初始参数,在初始参数基础上不断调整参数并输入到PID系统中。
设计过程分为模糊系统的设计及模糊系统与PID的连接两部分。
模糊系统设计
模糊系统的输入为误差和误差变化率,输出为Kp、Ki、Kd的调整值。
- 模糊规则建立
阅读相关文献,得到Kp、Ki、Kd的模糊规则如下表1,2,3。
ec e |
NB |
NM |
NS |
ZO |
PS |
PM |
PB |
NB |
PB |
PB |
PM |
PM |
PS |
ZO |
ZO |
NM |
PB |
PB |
PM |
PS |
PS |
ZO |
NS |
NS |
PM |
PM |
PM |
PS |
ZO |
NS |
NS |
ZO |
PM |
PM |
PS |
ZO |
NS |
NM |
NM |
PS |
PS |
PS |
ZO |
NS |
NS |
NM |
NM |
PM |
PS |
ZO |
NS |
NM |
NM |
NM |
NB |
PB |
ZO |
ZO |
NM |
NM |
NM |
NB |
NB |
ec e |
NB |
NM |
NS |
ZO |
PS |
PM |
PB |
NB |
NB |
NB |
NM |
NM |
NS |
ZO |
ZO |
NM |
NB |
NB |
NM |
NS |
NS |
ZO |
ZO |
NS |
NB |
NM |
NS |
NS |
ZO |
PS |
PS |
ZO |
NM |
NM |
NS |
ZO |
PS |
PM |
PM |
PS |
NM |
NS |
ZO |
PS |
PS |
PM |
PB |
PM |
ZO |
ZO |
PS |
PS |
PM |
PB |
PB |
PB |
ZO |
ZO |
PS |
PM |
PM |
PB |
PB |
e ec |
NB |
NM |
NS |
ZO |
PS |
PM |
PB |
NB |
PS |
NS |
NB |
NB |
NB |
NM |
PS |
NM |
PS |
NS |
NB |
NM |
NM |
NS |
ZO |
NS |
ZO |
NS |
NM |
NM |
NS |
NS |
ZO |
ZO |
ZO |
NS |
NS |
ZS |
NS |
NS |
ZO |
PS |
ZO |
ZO |
ZO |
ZO |
ZO |
ZO |
ZO |
PM |
PB |
NS |
PS |
PS |
PS |
PS |
PB |
PB |
PB |
PM |
PM |
PS |
PS |
PS |
PB |
在labview前面板菜单栏中选择工具->控制和仿真->模糊系统设计器,建立隶属关系及相关规则,如下图所示,将建立的模糊系统保存到本地文件中。
- 导入模糊系统,输出调整值
通过文件读取函数导入本地模糊系统,输出PID参数的调整值,程序框图如下图2所示。
模糊系统与PID的连接
模糊系统与PID的连接即将模糊系统输出的参数与定义的初始参数求和后输入到PID系统中,然而在实践过程中采用该方法的效果很差,故将初始参数和模糊系统求得的参数分别传入两个PID系统中,再将PID系统输出求和即为模糊PID系统的输出值。在PID函数后还应加入一个系统自定义函数,自定义函数可由自带范例“通用PID控制器”中复制得来,这样输出值才为正确值,整个系统的程序框图如下图3所示。
系统通过输入的上下限计算期望值,移位寄存器分别存储误差,调整值及系统调节的起始值,从而实现误差和误差变化率的计算,并对输入值突变做出反应。
模糊系统输出的参数后乘了一定的系数实现对输出值的放缩。
模糊系统传入值前的一系列操作实现了对超出界限值的响应及量化因子对参数的量化。
该程序为自定义VI,需在其它程序中调用,故循环的退出条件为循环执行10次,如有需要可改成布尔按钮*控制执行过程。