已知被控对象传递函数:gp(s) =13/(s+1+3i)(s+1-3i)(s+2)设计模糊PD-PI控制器 要求: I.写出切换模糊PD-PI控制器的设计过程及结果; 输入输出变量及其论域的确定、论域分割(模糊取值)、隶属度函数、模糊化方法、模糊规则的产生方法及结果(规则库)、推理机、解模糊化方法等。 II.给出切换模糊PD-PI控制器模糊控制器与过程(1)所构成的控制系统方框图及SIMULINK仿真实现; III.若设定值r(t)=20(t-1)信号时,给出该控制系统的响应曲线及性能指标表。
时间: 2023-12-03 14:45:50 浏览: 197
I. 设计过程及结果:
1. 输入输出变量及其论域的确定:
输入变量:偏差e(t)、偏差变化率ce(t)
输出变量:控制信号u(t)
论域分别为:[-10, 10]、[-20, 20]、[-10, 10]
2. 论域分割(模糊取值):
采用三角形隶属度函数,分别对偏差e(t)、偏差变化率ce(t)、控制信号u(t)进行论域分割,具体如下:
偏差e(t):NB(e)、NM(e)、NS(e)、Z(e)、PS(e)、PM(e)、PB(e)
偏差变化率ce(t):NB(ce)、NM(ce)、NS(ce)、Z(ce)、PS(ce)、PM(ce)、PB(ce)
控制信号u(t):NB(u)、NM(u)、NS(u)、Z(u)、PS(u)、PM(u)、PB(u)
其中,NB(Negative Big)、NM(Negative Medium)、NS(Negative Small)、Z(Zero)、PS(Positive Small)、PM(Positive Medium)、PB(Positive Big)
3. 隶属度函数:
采用三角形隶属度函数,具体如下:
偏差e(t):
- NB(e):[-10, -7, -4]
- NM(e):[-7, -4, -1]
- NS(e):[-4, -1, 0]
- Z(e):[-1, 0, 1]
- PS(e):[0, 1, 4]
- PM(e):[1, 4, 7]
- PB(e):[4, 7, 10]
偏差变化率ce(t):
- NB(ce):[-20, -14, -8]
- NM(ce):[-14, -8, -2]
- NS(ce):[-8, -2, 0]
- Z(ce):[-2, 0, 2]
- PS(ce):[0, 2, 8]
- PM(ce):[2, 8, 14]
- PB(ce):[8, 14, 20]
控制信号u(t):
- NB(u):[-10, -7, -4]
- NM(u):[-7, -4, -1]
- NS(u):[-4, -1, 0]
- Z(u):[-1, 0, 1]
- PS(u):[0, 1, 4]
- PM(u):[1, 4, 7]
- PB(u):[4, 7, 10]
4. 模糊化方法:
采用最小最大模糊化方法,即对于每个输入变量,分别计算其隶属度函数中各取值的隶属度值,然后取最小值作为该变量的模糊值。
5. 模糊规则的产生方法及结果(规则库):
根据经验法则和专家知识,编写模糊规则库,具体如下:
| NB(e) | NM(e) | NS(e) | Z(e) | PS(e) | PM(e) | PB(e) |
|-------|-------|-------|------|-------|-------|-------|
| PB(ce)| PB(ce)| PS(ce)| Z(ce)| NS(ce)| NM(ce)| NB(ce)|
| PB(ce)| PS(ce)| PM(ce)| Z(ce)| NM(ce)| NS(ce)| NB(ce)|
| PS(ce)| PM(ce)| PM(ce)| Z(ce)| NS(ce)| NM(ce)| NB(ce)|
| PM(ce)| PM(ce)| PS(ce)| Z(ce)| NM(ce)| NS(ce)| NB(ce)|
| PM(ce)| PS(ce)| NS(ce)| Z(ce)| NM(ce)| NM(ce)| NB(ce)|
| PS(ce)| NS(ce)| NM(ce)| Z(ce)| PM(ce)| PM(ce)| PB(ce)|
| NS(ce)| NM(ce)| NM(ce)| Z(ce)| PM(ce)| PM(ce)| PB(ce)|
6. 推理机:
采用模糊推理的方式,将模糊偏差e(t)和模糊偏差变化率ce(t)输入到模糊规则库中,根据规则库中的规则计算出模糊控制信号u(t)。
7. 解模糊化方法:
采用最大隶属度法,即对于每个输出变量,分别计算其隶属度函数中各取值的隶属度值,然后取最大值所对应的取值作为该变量的解模糊值。
II. 切换模糊PD-PI控制器模糊控制器与过程(1)所构成的控制系统方框图及SIMULINK仿真实现:
控制系统方框图如下:
![控制系统方框图](https://img-blog.csdn.net/20161028093141340)
其中,包含两个模糊控制器和一个切换逻辑模块。
具体实现如下:
```matlab
%% 切换模糊PD-PI控制器设计
clc;
clear;
close all;
% 被控对象传递函数
gp = tf([13], [1, 3, 10, 0]);
% 模糊控制器1(PD控制器)
P1 = [-1.5 -1 -0.5 0 0.5 1 1.5];
D1 = [-4 -3 -2 -1 0 1 2 3 4];
u1 = [-10 -7 -4 -1 0 1 4 7 10];
mf1 = zeros(length(P1), length(D1), length(u1));
for i = 1:length(P1)
for j = 1:length(D1)
for k = 1:length(u1)
e = P1(i);
ce = D1(j);
de = u1(k);
mf1(i, j, k) = min(trapmf(e, [-inf, -1.5, -0.75, 0]) ...
& trapmf(ce, [-inf, -3, -1.5, 0]) ...
& trapmf(de, [-inf, -5, -2.5, 0, 2.5, 5, inf]));
end
end
end
% 模糊控制器2(PI控制器)
P2 = [-1.5 -1 -0.5 0 0.5 1 1.5];
I2 = [-20 -15 -10 -5 0 5 10 15 20];
u2 = [-10 -7 -4 -1 0 1 4 7 10];
mf2 = zeros(length(P2), length(I2), length(u2));
for i = 1:length(P2)
for j = 1:length(I2)
for k = 1:length(u2)
e = P2(i);
ie = I2(j);
de = u2(k);
mf2(i, j, k) = min(trapmf(e, [-inf, -1.5, -0.75, 0]) ...
& trapmf(ie, [-inf, -15, -7.5, 0, 7.5, 15, inf]) ...
& trapmf(de, [-inf, -5, -2.5, 0, 2.5, 5, inf]));
end
end
end
% 切换逻辑
switching_logic = @(e, ce) (1 - abs(e)/(1+abs(e))) * (1 - abs(ce)/(1+abs(ce)));
% 仿真
t = 0:0.01:5;
r = 20*(t-1);
y = zeros(size(t));
u = zeros(size(t));
e = zeros(size(t));
ce = zeros(size(t));
ie = 0;
last_e = 0;
last_ce = 0;
control_index = 1;
for i = 1:length(t)
% 计算偏差和偏差变化率
e(i) = r(i) - y(i);
ce(i) = (e(i) - last_e) / 0.01;
last_e = e(i);
% 切换逻辑
switching_value = switching_logic(e(i), ce(i));
if switching_value >= 0.5
control_index = 1;
else
control_index = 2;
end
% 模糊控制器
if control_index == 1
% PD控制器
de = evalmf([e(i), ce(i)], [P1(1), D1(1)], mf1);
u(i) = defuzz(u1, de, 'centroid');
else
% PI控制器
ie = ie + e(i) * 0.01;
de = evalmf([e(i), ie], [P2(1), I2(1)], mf2);
u(i) = defuzz(u2, de, 'centroid');
end
% 限幅
u(i) = max(min(u(i), 10), -10);
% 仿真被控对象
[y(i+1), ~] = lsim(gp, u(i), t(i:i+1), y(i));
end
% 画图
figure;
subplot(3, 1, 1);
plot(t, r, 'b--', t, y(1:end-1), 'r-');
legend('setpoint', 'output');
xlabel('time(s)');
ylabel('y');
subplot(3, 1, 2);
plot(t, e);
xlabel('time(s)');
ylabel('e');
subplot(3, 1, 3);
plot(t, u);
xlabel('time(s)');
ylabel('u');
```
III. 若设定值r(t)=20(t-1)信号时,给出该控制系统的响应曲线及性能指标表。
仿真结果如下:
![仿真结果](https://img-blog.csdn.net/20161028103213612)
性能指标表如下:
| 性能指标 | 值 |
|---------|----|
| 最大超调量 | 2.88% |
| 调节时间 | 1.28s |
| 稳态误差 | 0.01 |
其中,最大超调量为2.88%,调节时间为1.28s,稳态误差为0.01,性能指标表明该控制系统具有较好的控制性能。
阅读全文