从传递函数到差分方程的转换
生活随笔
收集整理的這篇文章主要介紹了
从传递函数到差分方程的转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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)?
即差分方程形式?
? ? ? ? ? ? ?假設傳遞函數為: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);
總結
以上是生活随笔為你收集整理的从传递函数到差分方程的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模糊神经网络PID控制的一个例子
- 下一篇: unique函数