✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。
????个人主页:算法工程师的学习日志
本文来自最近一个朋友的分享,非原创,里面的内容感觉和我之前写的模糊控制相类似,可以作为补充,前文链接:
matlab模糊控制工具箱使用和模糊控制pid实例参考(一)
matlab模糊控制工具箱使用和模糊控制pid实例参考(二)
版权归原作者所有。如有侵权烦请告知,我会立即删除并表示歉意。谢谢。
在研究某个事物时,往往都是从其数学模型开始着手的。那么我们首先给出无刷直流电机的数学模型。
1、无刷直流电机数学模型
然后给出无刷直流电机的动态数学模型
看到上述这张图,不知聪明的你有没有发觉,图中采用机械方式即“霍尔传感器”检测转子的位置,并非无感(检测第三相感生电动势)的方式。虽然有不同,但是不妨碍我们理解模糊PID算法。
上图是双环结构,外环是速度环,通过光电编码器检测转子的速度;内环是电流环。两环都有各自的调节器(控制器)。
2、模糊PID (PID和模糊控制)
模糊控制设计如下:
图中,模糊控制器的输入是给定值x与实际值y的偏差e和偏差变化率ec,输出是PID参数的增量。
模糊PID有如下的两种形式:
图中的Gain和Gain1为量化因子,Gain2,Gain3和Gain4为比例因子。
图中的Gain3和Gain4为量化因子,Gain5,Gain6和Gain7为比例因子。
无刷直流电机的转速控制系统如下图,图中有速度环和电流环。
然后给出在Simulink中与之相对应的速度电流双闭环调速系统结构图
图中WASR和WACR分别为速度控制器和电流控制器。
注意:如下设计的模糊PID是针对速度控制器设计的,电流控制器采用PID。
模糊PID的结构
模糊PID的设计步骤包括以下几点:(有些难懂,可以跳过,下边还会以图的形式介绍)
1)确定模糊控制器输入和输出的变量的个数,也就是确定出模糊控制器的维数(一般选二维)。在控制系统中一般选用的二维控制器的输入变量为系统的偏差e以及系统的偏差变化率ec,此时,系统的输出变量也就是常规PID的三个参数KP, KI , KD的调整量ΔKp、ΔKi和ΔKd。
2)从系统的实际情况出发来确定各个输入和输出量的变化范围,而后确定出他们的量化等级、量化因子和比例因子。
3) 确定输入输出离散论语的范围如{-6, 6},模糊子集如{NB,NM,NS,Z,PS,PM,PB},最后确定合适的隶属度函数。
4) 制定模糊控制规则,确定模糊控制规则的主要思想是实验人员将以往的控制经验总结后得出的模糊条件语句的一个集合,保证控制器的输出可以使系统输出响应的动态和静态性能达到最好是制定模糊控制规则所要遵守的最重要的原则。
5) 求出模糊控制表。模糊控制器输出值的确定要根据第4步中的模糊控制规则和第2、3步中所确定的输入和输出变量来求得,求出的输出值也就是PID参数KP,KI , KD的调整量,模糊控制表就是由这些调整量与输入量在一个表中按一定关系列出而得到的。由于KP, KI , KD这三个参数调整时是相互独立的,所以会产生三个模糊控制表。
6) 求出模糊控制表之后,将经过第2、3步处理后的偏差e和偏差变化率ec代入模糊控制规则表,这样就得到了新的PID参数,然后经过常规的PID的算法就可以得出系统最后的输出控制量。
7) 根据系统的仿真效果图和实验数据结果对模糊PID控制器的性能进行分析,从而去调整量化因子和比例因子的值以使控制效果达到理想的状态。
真实设计如下:
1、选取输入为偏差e以及系统的偏差变化率ec,输出为常规PID的三个参数的调整量kp, ki , kd。
2、确定离散论语、模糊子集和隶属度函数
如图选择e和ec的论语范围为[-5 5],kp, ki , kd 的离散论语为[-1 1],模糊子集为[NB,NM,NS,ZO,PS,PM,PB],隶属度函数为三角形函数。
3、模糊控制规则有
规则表格如下
由表格看出一共有7*7=49条规则。
4、根据实验结果反复调整量化因子和比例因子,以便获取做好的控制效果。
仿真实例
仿真实例如图
图中设计的模糊PID如下
然后实验结果为(电机转速为1000r/min),