离散相似法仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:将传递函数为

s s 2612 的环节与单位反馈组成系统,将其离散化

1.实验原理

1 )离散相似法 所谓离散相似法,就是将一个连续系统进行离散化处理,从而得到等价的系统离散模型,此种方法按系统的动态结构图建立仿真模型。在计算过程中,按各典型环节离散相似模型,根据环节的输入来计算环节的输出。

2) 环节的离散化模型

将连续系统按下图所示对其进行离散化处理,在系统的输入、输出端加上虚拟采样开关,T 为采样周期。为保证输入信号复现原信号,在输入端加上一个保持器。

使用零阶保持器,可得到离散化状态方程的解:

3) 仿真算法实现过程

当给定连续系统的动态结构图后,将其等效为各典型环节的组合,按前面讨论的典型环节离散系数 表达式,经程序处理,事先将各环节的类型、参数、初始条件、各环节连接关系矩阵、输入输出连接矩阵等参量送入程序中,既可通过离散相似的模型求出在特定信号作用下,系统中各环节输出变量的变化情况,从而得到系统的仿真结果。

3.实验方案

1)连续系统的结构图

这是一个单位反馈的二阶系统。

2)引入采样开关将其离散

Zero-Order (零阶保持器)及采样开关对系统进行离散化,采用状态转移法进行离散化

3)将传递函数转化成状态方程并对其进行离散化

传递函数 1261)()()(2++==

s s s U s Y s G 变形得)()()(2)(62s U s Y s sY s Y s =++

假设其为零状态响应取Laplace 反变换得

u y y y =+''+''26

将其转变成状态方程有

u x x ⎥⎦⎤⎢⎣⎡+⎥⎥⎦⎤⎢⎢⎣⎡--=10016131

x y ]01[=

通过求矩阵指数及相关变化将状态方程离散化得

)(]01[)()

()()1(k u k y k Bu k x A k x =+=+

由于矩阵A ,B 过于复杂,这里简写,详细表达式见后面程序

4.实验程序

1)由传递函数求状态方程

建立传递函数并转化为状态方程

clear

clc

A = tf2ss([1],[6 2 1]) %建立传递函数模型

%并转化为状态方程

运行结果:

2)将状态方程离散化

对应脚本程序:

A =[-1/3 -1/6;1 0] %

syms s t

B= [s 0;0 s] % SI

D = inv(B-A) %求逆矩阵

AI = ilaplace(D,s,t)%laplace 变换 求A 阵

BI = AI*[0 ;1]

BI =int(BI,'0','t') %积分求B 阵

pretty(AI) %A 转化陈易读形式。

pretty(BI) %B

运行结果:(这里是离散后的A ,B 阵)

AI =

[ (cos((5^(1/2)*t)/6) - (5^(1/2)*sin((5^(1/2)*t)/6))/5)/exp(t/6)

-(5^(1/2)*sin((5^(1/2)*t)/6))/(5*exp(t/6));

(6*5^(1/2)*sin((5^(1/2)*t)/6))/(5*exp(t/6))

(cos((5^(1/2)*t)/6) + (5^(1/2)*sin((5^(1/2)*t)/6))/5)/exp(t/6)]

BI=

[(6*5^(1/2)*(sin((5^(1/2)*t)/6)/6 + (5^(1/2)*cos((5^(1/2)*t)/6))/6))/(5*exp(t/6)) - 1;

(4*5^(1/2)*sin((5^(1/2)*t)/6))/(5*exp(t/6)) - (2*cos((5^(1/2)*t)/6))/exp(t/6) + 2] 3)由离散后的状态仿真求响应,这里以阶跃相应为例(u = 10)

对应脚本程序:

clear %假设为零状态响应

clc

close

t = 0.1 %采样周期0.1s

A =[(cos((5^(1/2)*t)/6) - (5^(1/2)*sin((5^(1/2)*t)/6))/5)/exp(t/6) -(5^(1/2)*sin((5^(1/2)*t)/6))/(5*exp(t/6));

(6*5^(1/2)*sin((5^(1/2)*t)/6))/(5*exp(t/6)) (cos((5^(1/2)*t)/6) + (5^(1/2)*sin((5^(1/2)*t)/6))/5)/exp(t/6)]

B = [1 - (6*5^(1/2)*(sin((5^(1/2)*t)/6)/6 + (5^(1/2)*cos((5^(1/2)*t)/6))/6))/(5*exp(t/6));

(2*cos((5^(1/2)*t)/6))/exp(t/6) - (4*5^(1/2)*sin((5^(1/2)*t)/6))/(5*exp(t/6)) - 2]

y0 = 0 %初值

uN = 50

t = 0.1; %步长0.1

u =0:t:uN;

N = length(u);

x0 = [0;0] %零初始状态

dy = 0

uc = 10; %阶跃输入u = 10

j = 1

yk = 0;

for j = 1:N

% xk = diffsubf(x0,1,t,A,B)

yk = [1 0]*x0;

xk =A*x0 +B*uc;

x0 = xk;

data(j) = yk(1);

end

for j = 1:N %与真实值比较

comparedata(j) =10 - (10*(cos((5^(1/2)*u(j))/6) + (5^(1/2)*sin((5^(1/2)*u(j))/6))/5))/exp(u(j)/6);

end

plot(u,data,'r-',u,comparedata,'bO')

legend('相似法','解析法',4)

grid on

4)运行结果:

相关文档
最新文档