天天看点

LabVIEW实现模糊PID控制

LabVIEW实现模糊PID控制的资源链接如右:LabVIEW实现模糊PID控制

同时由于原资源引用了LabVIEW范例中的部分VI,而部分用户无法正确调用范例,故将调用VI补充链接如右:LabVIEW实现模糊PID控制补充资源

matlab实现模糊PID控制博客链接如右:simulink实现模糊PID控制博客

通过模糊控制实现PID参数Kp、Ki、Kd的整定问题,从而获得比单独PID更好的控制效果。

我是毕设第一次接触PID控制系统,故刚开始设计时进入了一个误区:单独PID的参数难以确定,而模糊PID则借助模糊系统能很好的确定PID的参数,不需对参数有任何的主观判断。在不断的试错过程中才意识到模糊PID中的模糊系统输出的是参数的调整值,故也应给定一组初始参数,在初始参数基础上不断调整参数并输入到PID系统中。

设计过程分为模糊系统的设计及模糊系统与PID的连接两部分。

模糊系统设计

模糊系统的输入为误差和误差变化率,输出为Kp、Ki、Kd的调整值。

  • 模糊规则建立

阅读相关文献,得到Kp、Ki、Kd的模糊规则如下表1,2,3。

表1 Kp模糊规则表

      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

表2 Ki模糊规则表

      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

表3 Kd模糊规则表

      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前面板菜单栏中选择工具->控制和仿真->模糊系统设计器,建立隶属关系及相关规则,如下图所示,将建立的模糊系统保存到本地文件中。

LabVIEW实现模糊PID控制

图1 模糊系统设计器

  • 导入模糊系统,输出调整值

通过文件读取函数导入本地模糊系统,输出PID参数的调整值,程序框图如下图2所示。

LabVIEW实现模糊PID控制

图2 模糊系统程序框图

图中第一个除以2的部分是求上下限的平均值,由此可以自动确定控制的目标值,后面部分都是将值量化到论域用的,比如目标值是338,然后数据的范围是[330, 346],那么实际值与目标值的误差必须乘一个参数0.375,才能将原本是[-8, 8]的误差范围量化到设定的论域[-3, 3],同理误差变化率部分也设置了一个量化因子。

模糊系统与PID的连接

模糊系统与PID的连接即将模糊系统输出的参数与定义的初始参数求和后输入到PID系统中,然而在实践过程中采用该方法的效果很差,故将初始参数和模糊系统求得的参数分别传入两个PID系统中,再将PID系统输出求和即为模糊PID系统的输出值。在PID函数后还应加入一个系统自定义函数,自定义函数可由自带范例“通用PID控制器”中复制得来,这样输出值才为正确值,整个系统的程序框图如下图3所示。

LabVIEW实现模糊PID控制

图3 模糊PID程序框图

系统通过输入的上下限计算期望值,移位寄存器分别存储误差,调整值及系统调节的起始值,从而实现误差和误差变化率的计算,并对输入值突变做出反应。

模糊系统输出的参数后乘了一定的系数实现对输出值的放缩。

模糊系统传入值前的一系列操作实现了对超出界限值的响应及量化因子对参数的量化。

该程序为自定义VI,需在其它程序中调用,故循环的退出条件为循环执行10次,如有需要可改成布尔按钮自由控制执行过程。

继续阅读