1、运行结果
紫色的曲线为模糊PID控制结果,蓝色为普通PID
2、simulink仿真
(1)上面是普通PID,下面是模糊PID。
(2)模糊控制器(FuzzyLogicControl)输入是e(误差)和ec(误差的微分),误差 = 设定值 - 测量值,由于模糊控制器里的规则是误差 = 测量值 - 设定值,所以Gain12的系数(区间映射系数)乘了-1
(3)Gain2,Gain3,Gain4没有连接到Add1、2、3上,用的是位置式的PID,模糊控制器输出的是Kp,Ki,Kd。
(4)模糊控制器输出的Kp,Ki、Kd的范围是[-1 1],位置式PID不需要负值,所以输出加了1,让范围变成[0 2],如果是增量式就不需要加1
3、模糊控制器
输入e,ec和输出kp,ki,kd的隶属度函数用的都是三角函数,范围是[-1 1]。
仿真时要把下图的Defuzzification改成mom,然后在simulink主页面里simulation->configuration parameters->solver里面,右下角有个Algorithe,默认为“Nonadaptive”,改为"adaptive",否则会有警告。
使用的规则表是下面这个博主的