从传递函数到差分方程的转换
来源:互联网 发布:淘宝抢单软件 编辑:程序博客网 时间:2024/05/23 15:48
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);
0 0
- 从传递函数到差分方程的转换
- 从传递函数到差分方程的转换
- 如何把传递函数转换为差分方程
- MATLAB实现系统传递函数模型的建立与转换
- 传递函数
- MATLAB实现闭环传递函数与状态空间之间的相互转换
- 初步的 MPI消息传递函数
- 传递函数的第二种表达
- 从函数方程的角度解全排列问题
- 用指针传递函数参数的问题
- va_list 传递函数变参到下一个函数的使用方法:
- CIC滤波器传递函数的存在性问题
- c/c++按值传递函数的初始化
- android______________jni和java的参数传递函数
- addObserver和postNotification函数传递函数的区别
- ARM下传递函数使用的方法
- 典型环节的传递函数及其电路图-20151103
- matlab-自控原理 传递函数的MATLAB表达
- Android Jni调用浅述
- 修改Wifi模块
- CUDA-OpenGL互操作
- 算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 习题(12/14)
- JDK1.8 十大新特性详解
- 从传递函数到差分方程的转换
- Java数据结构----树
- Codeforces-600B Queries about less or equal elements(二分)
- c++ operator 转换构造函数
- hdu 2602 Bone Collector
- 欢迎使用CSDN-markdown编辑器
- Android TextUtils.isEmpty()的误解
- 【LeetCode OJ 225】Implement Stack using Queues
- 【回忆的沙漏——半年总结】