700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab 传递函数转化差分方程 从传递函数到差分方程的转换

matlab 传递函数转化差分方程 从传递函数到差分方程的转换

时间:2020-03-31 18:23:24

相关推荐

matlab 传递函数转化差分方程 从传递函数到差分方程的转换

1、传递函数的形式

假设传递函数为:G(s)=exp^(-0.004s)*400/(s^2+50s);

其中^后表示指数,如:2^3=8;4^2=16;

在matlab里面建立这个传递函数的命令就是:sys=tf(400,[1,50,0],'inputdelay',0.004);

2、脉冲传递函数

把传递函数离散化就得到脉冲传递函数,这个我就不多说了。。。。

G(z) =z^(-4) *( 0.0001967 z + 0.0001935)/( z^2 - 1.951 z + 0.9512)

= z^(-4) *[0.0001967z ^(-1)+ 0.0001935z^(-2)]/[ 1 - 1.951 z^(-1) + 0.9512z^(-2)] =Y(z)/U(z)……(2)式

在matlab里面离散化命令是:dsys=c2d(sys,0.001,'z');其中0.001为采样时间;

(2)式可写成:

z^(-4) *[0.0001967 z ^(-1)+ 0.0001935z^(-2)] U(z) = [ 1 - 1.951 z^(-1) + 0.9512z^(-2)] Y(z) (3)式

3、差分方程形式

由(3)式可得

0.0001967 z ^(-5)+ 0.0001935z^(-6)]U(z) = [ 1 - 1.951 z^(-1) + 0.9512z^(-2)] Y(z) (4)式

把(4)式得z^(-n)中的(-n)写成(k-n),如z^(-5)U(z)写成u(k-5),可得:

0.0001967 u(k-5)+ 0.0001935u(k-6)= y(k) - 1.951 y(k-1) + 0.9512y(k-2) (5)式

由(5)式得

y(k) = 1.951 y(k-1) - 0.9512y(k-2)+0.0001967 u(k-5)+ 0.0001935u(k-6)

即差分方程形式

[num,den]=tfdata(dsys,'v')这个命令其实就是取式(2)的分子分母

ts=0.001;采样时间=0.001s

sys=tf(400,[1,50,0]);建立被控对象传递函数

dsys=c2d(sys,ts,'z');把传递函数离散化(问题1)

[num,den]=tfdata(dsys,'v');离散化后提取分子、分母

rin=1.0;输入为阶跃信号

u_1=0.0; u_2=0.0; 什么东西的初始状态(问题2)

y_1=0.0; y_2=0.0; 是不是输出的初始状态

error_1=0;初始误差

x=[0 0 0]';PID的3个参数Kp Ki Kd组成的数组

p=100;仿真时间100ms

for k=1:1:p

r(k)=rin;

u(k)=kpidi(1)*x(1)+kpidi(2)*x(2)+kpidi(3)*x(3)

if u(k)>=10

u(k)=10;

end

if u(k)<=-10

u(k)=-10;

end

yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;(问题3)

error(k)=r(k)-yout(k);

%返回pid参数

u_2=u_1;u_1=u(k);

y_2=y_1;y_1=yout(k);

x(1)=error(k);

x(2)=(error(k)-error_1)/ts;

x(3)=x(3)+error(k)*ts;

error_2=error_1;

error_1=error(k);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。