我是靠谱客的博主 害怕向日葵,最近开发中收集的这篇文章主要介绍二阶系统pid matlab仿真,simulink如何整定二阶模型的pid参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

下面是薛定宇老师那本书上提供的得到一节阶跃响应近似模型的函数,由于没有看见怎么插入附件,只好把程序给贴上来了哈

function [K,L,T,G1]=getfolpd(key,G)

K=dcgain(G);

switch key

case 1

[y,t]=step(G);

fun = inline('x(1)*(1-exp(-(t-x(2))/x(3))).*(t>x(2))','x','t');

x=lsqcurvefit(fun,[1 1 1],t,y); K=x(1); L=x(2); T=x(3);

case 2

[Kc,Pm,wc,wcp]=margin(G); ikey=0;

L=1.6*pi/(3*wc); T=0.5*Kc*K*L;

if isfinite(Kc), x0=[L;T];

while ikey==0,

u=wc*x0(1); v=wc*x0(2);

FF=[K*Kc*(cos(u)-v*sin(u))+1+v^2; sin(u)+v*cos(u)];

J=[-K*Kc*wc*sin(u)-K*Kc*wc*v*cos(u),-K*Kc*wc*sin(u)+2*wc*v;

wc*cos(u)-wc*v*sin(u), wc*cos(u)];

x1=x0-inv(J)*FF;

if norm(x1-x0)<1e-8,

ikey=1; else, x0=x1;

end, end

L=x0(1); T=x0(2);

end

case 3

[n1,d1]=tfderv(G.num{1},G.den{1});

[n2,d2]=tfderv(n1,d1);

K1=dcgain(n1,d1); K2=dcgain(n2,d2);

Tar=-K1/K; T=sqrt(K2/K-Tar^2); L=Tar-T;

case 4

Gr=opt_app(G,0,1,1);  L=Gr.ioDelay;

T=Gr.den{1}(1)/Gr.den{1}(2); K=Gr.num{1}(end)/Gr.den{1}(2);

end

G1=tf(K,[T 1],'iodelay',L);

%tfderv is internal to getfod

function [e,f]=tfderv(b,a)

f=conv(a,a); na=length(a); nb=length(b);

e1=conv((nb-1:-1:1).*b(1:end-1),a);

e2=conv((na-1:-1:1).* a(1:end-1),b);

maxL=max(length(e1),length(e2));

e=[zeros(1,maxL-length(e1)) e1]-[zeros(1,maxL-length(e2)) e2];

你试试看,不是所有的模型都可得到一节近似模型的

最后

以上就是害怕向日葵为你收集整理的二阶系统pid matlab仿真,simulink如何整定二阶模型的pid参数的全部内容,希望文章能够帮你解决二阶系统pid matlab仿真,simulink如何整定二阶模型的pid参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部