我是靠谱客的博主 聪慧飞鸟,最近开发中收集的这篇文章主要介绍Day16--S函数设计与应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

该系列博客主要讲述Matlab软件在自动控制方面的应用,如无自动控制理论基础,请先学习自动控制系列博文,该系列博客不再详细讲解自动控制理论知识。
自动控制理论基础相关链接:https://blog.csdn.net/qq_39032096/category_10287468.html?spm=1001.2014.3001.5482
博客参考书籍:《MATLAB/Simulink与控制系统仿真》。



4.综合实例

4.1 综合实例1

实验要求:给定 R L C {rm RLC} RLC网络,如下图所示,其中, u i ( t ) u_i(t) ui(t)为输入量, u o ( t ) u_o(t) uo(t)为输出量。求解此系统的传递函数模型、零极点增益模型、状态空间模型(假设 R 1 = 1 Ω , R 2 = 1 Ω , C = 1 F , L = 1 H {rm R_1=1Omega,R_2=1Omega,C=1F,L=1H} R1=R2=C=1FL=1H)。

1

解:

【STEP1】:求解系统的传递函数。

根据电路的基本定理,结合 R L C {rm RLC} RLC网络示意图,列出该电路的微分方程,如下:
R 1 i 1 + L d i 3 d t + u o = u i i 1 = i 2 + i 3 , u o = i 3 R 2 , i 2 = C d d t ( L d i 3 d t + u o ) begin{aligned} &R_1i_1+Ldisplaystylefrac{{rm d}i_3}{{rm d}t}+u_o=u_i\\ &i_1=i_2+i_3,u_o=i_3R_2,i_2=Cdisplaystylefrac{{rm d}}{{rm d}t}left(Ldisplaystylefrac{{rm d}i_3}{{rm d}t}+u_oright) end{aligned} R1i1+Ldtdi3+uo=uii1=i2+i3uo=i3R2i2=Cdtd(Ldtdi3+uo)
整理并化简上述方程,可得:
R 1 C L R 2 d 2 u o d t 2 + ( L R 2 + R 1 C ) d u o d t + ( 1 + R 1 R 2 ) u o = u i frac{R_1CL}{R_2}frac{{rm d^2}u_o}{{rm d}t^2}+left(displaystylefrac{L}{R_2}+R_1Cright)displaystylefrac{{rm d}u_o}{{rm d}t}+left(1+displaystylefrac{R_1}{R_2}right)u_o=u_i R2R1CLdt2d2uo+(R2L+R1C)dtduo+(1+R2R1)uo=ui
在零初始条件下,对上式取拉普拉斯变换,整理可得:
G ( s ) = U o ( s ) U i ( s ) = 1 ( R 1 C s + 1 ) ( L R 2 s + 1 ) + R 1 R 2 G(s)=frac{U_o(s)}{U_i(s)}=frac{1}{(R_1Cs+1)left(displaystylefrac{L}{R_2}s+1right)+displaystylefrac{R_1}{R_2}} G(s)=Ui(s)Uo(s)=(R1Cs+1)(R2Ls+1)+R2R11
代入具体数值 R 1 = 1 Ω , R 2 = 1 Ω , C = 1 F , L = 1 H R_1=1Omega,R_2=1Omega,C=1{rm F},L=1{rm H} R1=R2=C=1FL=1H,可得系统传递函数模型,有:
G ( s ) = 1 s 2 + 2 s + 2 G(s)=frac{1}{s^2+2s+2} G(s)=s2+2s+21
【STEP2】:使用 M A T L A B {rm MATLAB} MATLAB建立系统模型。

% 实例Chapter4.4 综合实例
clc;clear;

% 传递函数分子、分母多项式系数行向量
num=[0,1];den=[1,2,2];

% 建立传递函数模型
sys_tf=tf(num,den);

% 从传递函数模型获取系统的零极点增益
[z,p,k]=tf2zp(num,den);

% 建立系统的零极点增益模型
sys_zpk=zpk(z,p,k);

% 从零极点增益模型获取系统的状态空间模型
[A,B,C,D]=zp2ss(z,p,k);

% 建立系统的状态空间模型
sys_ss=ss(A,B,C,D);

% 显示模型
sys_tf,sys_zpk,sys_ss
% 结果显示:
% 传递函数模型
sys_tf = 
        1
  -------------
  s^2 + 2 s + 2 
Continuous-time transfer function.

% 零极点模型
sys_zpk = 
        1
  --------------
  (s^2 + 2s + 2) 
Continuous-time zero/pole/gain model.

% 状态空间模型
sys_ss = 
  A = 
           x1      x2
   x1      -2  -1.414
   x2   1.414       0
 
  B = 
       u1
   x1   1
   x2   0
 
  C = 
           x1      x2
   y1       0  0.7071
 
  D = 
       u1
   y1   0 
Continuous-time state-space model.

【STEP3】:求阶跃响应。

% 求阶跃响应
step(sys_tf);
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);

% 添加栅格
grid on;

2

4.2 综合实例2

实验要求:已知某双环调速的电流环系统的结构如下图所示,采用 S I M U L I N K {rm SIMULINK} SIMULINK动态结构图求该系统线性模型。

3

解:

【STEP1】:建立 S I M U L I N K {rm SIMULINK} SIMULINK动态结构图。

# 1.把所需模块拖曳到模型窗口;
# 2.线连接起来,保存为"Experiment4_4_2.mdl"文件;

4

【STEP2】:求取系统的线性状态空间模型。

% matlab命令行窗口下运行如下命令,得到一个线性状态空间模型
[A,B,C,D]=linmod('Experiment4_4_2')
% 结果显示:
A =
   1.0e+03 *

   -0.0781         0         0    1.7964         0
         0   -0.5000         0         0         0
    0.0141         0   -0.5000         0         0
         0    0.1600   -0.1600   -0.0599    0.0250
         0    0.5000   -0.5000         0         0

B =
     0
     1
     0
     0
     0

C =
  195.3125         0         0         0         0

D =
     0

【STEP3】:求系统的传递函数模型。

% 命令行窗口下
>> [num,den]=ss2tf(A,B,C,D);
>> printsys(num,den,'s');

% 结果显示:
num/den =  
             56137724.5509 s^2 + 32454622005.988 s + 2192879865269.461
   -----------------------------------------------------------------------------
   s^5 + 1138.0052 s^4 + 392683.3832 s^3 + 43221369.7605 s^2 + 3506268712.5748 s

   + 157887350299.401

最后

以上就是聪慧飞鸟为你收集整理的Day16--S函数设计与应用的全部内容,希望文章能够帮你解决Day16--S函数设计与应用所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部