网站首页 > 技术文章 正文
1. 滞后校正的步骤
(1)给定的相角裕度指标计算剪切频率Wgc,即φ(Wgc)=-180°+Pmd+5°~10°;
(2)根据Wgc计算校正环节零极点的转折频率Wc1;
(3)有Wc1和幅值的分贝数确定β,即-20logβ=L(Wc1);
(4) 为了最大滞后相位角在系统开环截止频率附件,通常要交接频率W1远小于剪切频率,一般取0.1 Wgc;
(5)有交接频率W1和β确定T,即T=1/(β*W1);
(6)有T和β确定校正环节的传递函数Gc=(1+Ts)/(1+βTs)。
2. 滞后校正举例应用
2.1 系统传递函数与性能指标要求
被控对象传递函数:
Gp=k/(s*(0.1s+1)*(0.2s+1));
性能指标:
(1) 开环增益K>=30;
(2) 相位裕度>45°;
(3) 截止频率Wc>=2.3rad/s
(4) 幅值裕度>10db;
2.2 滞后校正MATLAB代码实现
k=30;
num=1;
den=conv(conv([1 0],[0.1 1]),[0.2 1]);
Gp=tf(k*num,den);
[mag,phase,w]=bode(Gp);
fm=-180+45+7;
for i=1:1:length(phase)
m(i)=phase(:,:,i);
end
wc1=spline(m,w,fm);
magdb=20*log10(mag);
Lg=spline(w,magdb,wc1);
B=10^(-Lg/20);
w1=0.1*wc1;
T=1/(B*w1);
nc=[B*T 1];
dc=[T 1];
Gc=tf(nc,dc);
disp('校正环节传递函数:');
printsys(nc,dc,'s');
G=Gc*Gp;
figure(1)
margin(Gp);
grid on
figure(2)
bode(Gc)
grid on
figure(3)
margin(G);
grid on
num1=G.num{1};
den1=G.den{1};
disp('加上校正环节传递函数:');
printsys(num1,den1,'s');
[Gm, Pm1, Wcg, Wcp]=margin(G);
Gm1=20*log10(Gm);
if Gm1>=10 && Pm1>=45 && wc1>=2.3
disp(['设计后相位裕度:',num2str(Pm1),...
'设计后相角裕度',num2str(Gm1),...
'设计后穿越频率',num2str(wc1),...
'满足设计要求']);
else
disp(['设计后相位裕度:',num2str(Pm1),...
'设计后相角裕度',num2str(Gm1),...
'设计后穿越频率',num2str(wc1),...
'不满足设计要求']);
end
figure(4)
bode(Gp,G);
grid on
Gclose_bef=feedback(Gp,1);
Gclose_aft=feedback(G,1);
disp('校正前后阶跃响应对比:')
figure(5)
subplot(1,2,1)
step(Gclose_bef);
subplot(1,2,2)
step(Gclose_aft);
2.3 结果输出
1. 校正前传递函数
Gp=k/(s*(0.1s+1)*(0.2s+1));
伯德图如下
2. 校正环节传递函数:
num/den =
4.3045 s + 1
-------------
49.1016 s + 1
伯德图如下:
3. 加上校正环节传递函数:
num/den =
129.1338 s + 30
--------------------------------------------
0.98203 s^4 + 14.7505 s^3 + 49.4016 s^2 + s
伯德图如下:
设计后相位裕度:46.6747设计后相角裕度14.5513设计后穿越频率2.3232满足设计要求
4. 校正前后性能对比
校正前后伯德图曲线对比:
5 校正前后阶跃响应对比
闭环传递函数阶跃响应对比
滞后环节校正之后,系统从不稳定,变成稳定的系统。
猜你喜欢
- 2024-12-31 发那科机器人2DV码垛功能
- 2024-12-31 如何使用python进行正确的四舍五入?这个坑有点大
- 2024-12-31 有没有通俗易懂的动态代理示例可供参考学习?
- 2024-12-31 运算符,i.MXRT,管理工具,嵌入式,XECC技术文章分享
- 2024-12-31 第十九天:EXCEL万能字符串转换函数TEXT那些普拉斯的神操作
- 2024-12-31 C语言 | 由小到大输出两个数
- 2024-12-31 C++笔记:函数
- 2024-12-31 十万个怎么办-不清楚机器人TEST指令怎么办?
- 2024-12-31 一个 print 函数,挺会玩啊?
- 2024-12-31 Excel公式计算
- 05-16在实际操作过程中如何避免出现SQL注入漏洞
- 05-16MySQL中 in数量限制
- 05-16一文讲懂SQL筛选子句HAVING子句
- 05-16性能调优实战:Spring Boot 多线程处理SQL IN语句大量值的优化方案
- 05-16sqlserver数据库中的模糊查询like和通配符的使用
- 05-16SQL必备 和 表关联
- 05-16SQL Server优化50法
- 05-16他们一直都在!最新强军大片来了
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- js数组插入 (83)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)