一阶倒立摆的ts模糊控制,基于ts模糊模型搭建,在matla b simulink环境下仿真效果良好。 可外接扰动信号,可做离散控制系统的,也可做连续系统的。
倒立摆这玩意儿玩的就是平衡的艺术,今天咱们来盘盘怎么用TS模糊模型在Simulink里驯服这个"杆子精"。不同于传统PID控制器需要精准建模,TS模糊控制最大的魅力在于能把非线性系统拆成多个线性子系统——说白了就是"分而治之"的哲学。
先上硬菜,看这个模糊规则库的核心代码片段:
fis = newfis('pendulum','prod','sum','prod','min','centroid'); fis = addvar(fis,'input','angle',[-30 30]*pi/180); % 角度输入 fis = addmf(fis,'input',1,'Negative','gaussmf',[0.1 -0.5]); fis = addmf(fis,'input',1,'Zero','gaussmf',[0.1 0]); fis = addmf(fis,'input',1,'Positive','gaussmf',[0.1 0.5]);这里用高斯隶属函数给摆杆角度分了三个状态,关键参数[0.1 -0.5]里的0.1控制曲线胖瘦,直接影响控制灵敏度。别小看这0.1的取值,调参时稍微手抖就会让系统从优雅的华尔兹变成抽风般的机械舞。
一阶倒立摆的ts模糊控制,基于ts模糊模型搭建,在matla b simulink环境下仿真效果良好。 可外接扰动信号,可做离散控制系统的,也可做连续系统的。
Simulink模型搭建有个隐藏技巧——在Fuzzy Logic Controller模块后面接个Zero-Order Hold,采样时间设成0.01秒,立马就能切换离散/连续双模式。想要加扰动?直接往摆杆关节处怼个Band-Limited White Noise模块,记得噪声功率别超过0.05,否则神仙也救不了翻车的倒立摆。
看这段控制规则的实际表现:
rule1 = [1 1 1 1 1]; % 角度负大→输出正大 rule2 = [2 2 2 1 1]; //中等偏差中等输出 rule3 = [3 3 3 1 1]; fis = addrule(fis,[rule1; rule2; rule3]);规则矩阵里第五个参数1表示用OR连接,这种设计让系统在剧烈扰动时能快速切换控制策略。仿真时如果看到摆杆像打醉拳一样晃动,别慌,把输出隶属函数的覆盖范围扩大20%,立马稳如老狗。
最后来个实战技巧:在Simulink里用XY Graph观察相轨迹,当轨迹呈现收缩螺旋状说明系统稳定。要是出现发散趋势,赶紧检查是不是模糊规则出现了"精神分裂"——比如同时存在角度正大时输出正大和负大的矛盾规则。记住,模糊控制玩的是混沌中的秩序,可别真把自己绕糊涂了。