您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页基于MATLAB的PID控制

基于MATLAB的PID控制

来源:小侦探旅游网
基于MATLAB的PID 控制

一、原传递函数

8 G(s),对其进行PID控制器的设计

(s5)(s2)(2s1)二、传递函数性能分析

稳定性分析:(文件名:Untitled1.m)

s=tf('s');

G0=8/(s*(s+5)*(s+2)*(2*s+1)); %原系统开环传递函数 [Gm,Pm]=margin(G0); %返回系统相对稳定参数 figure(1)

pzmap(G0) %零极点分布图 figure(2)

margin(G0) %系统Bode图 figure(3)

step(feedback(G0,1)) %系统单位阶跃响应

得出的零极点分布图、Bode图和阶跃响应曲线分别如图1、图2、图3所示:

图1 原函数零极点分布图

图2 原函数Bode图

图3 原函数阶跃响应曲线

Simulink环境下的原函数方框图及其阶跃响应分别如图4和图5所示:

图4 Simulink下的原函数模型

图5 原函数阶跃响应(simulink)

三、在MATLAB下实现PID控制器的设计与仿真

1、参数计算(文件名:Untitled2.m)

num=[8];

den=conv([1 5],conv([1 2],[2 1])); step(num,den); k=dcgain(num,den)

图6 参数计算

输出参数结果:

k =

0.8000

由图可知,取L=0.615 T=3.18。于读图存在误差,因此参数仍需整定。 2、设计PID控制器

(1)已知对象的K、L 和T 值后,根据Ziegler — Nichols整定公式编写一 个MATLAB函数ziegler_std ( )用以设计PID控制器。(文件名:Ziegler_std.m)

function [num,den,Kp,Ti,Td,H]=Ziegler_std (key,vars)

Ti=[ ];Td=[ ];H=[ ]; K=vars(1); L=vars(2); T=vars(3); a=K*L/T; if key==1

num=1/a; %判断设计P 控制器 elseif key==2

Kp=0.9/a;Ti=3.33*L; %判断设计PI 控制器 elseif key==3

Kp=1.2/a;Ti=2*L;Td=L/2; %判断设计PID控制器 end

switch key case 1

num=Kp;den=1; % P控制器 case 2

num=Kp*[Ti,1];den=[Ti,0]; % PI控制器 case 3 % PID控制器 p0=[Ti*Td,0,0];

p1=[0,Ti,1];p2=[0,0,1]; p3=p0+p1+p2; p4=Kp*p3; num=p4/Ti; den=[1,0]; end

退出M文件

>>K=0.8000;L=0.615;T=3.16;[num,den,Kp,Ti,Td]=Ziegler_std (3,[K,L,T])

num =

2.3700 7.7073 12.5322 den = 1 0 Kp = 7.7073 Ti = 1.2300 Td = 0.3075

(2)动态仿真集成环境 Simulink下构造系统模型

图7 Simulink下的PID模型图

图8 PID模型的阶跃响应(Simulink)

由图可以看出,经过调节参数之后超调量明显减小,响应曲线平滑,调节时

间理想,可以采用。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务