MATLAB在自动控制原理中的应用
传递函数
1、利用matlab构建传递函数
复制代码
1
2
3
4
5
6
7%% 方法一 G_s = tf([1 1],[1 5 6]) %% 方法二 s = tf('s') G_s1 = (s+1)/(s^2+5*s+6)
复制代码
1
2
3
4
5
6
7
8
9
10sys_engine = tf([1],[0.02 0.2]); sys_acturator = tf([0.1],[0.5 2]); system = sys_engine*sys_acturator; %%方法二 system = series(sys_engine,sys_acturator); s = tf('s'); sys_ctrl = 1/s; %积分控制器 %系统的开环传递函数 system_ol = sys_ctrl*system;
第二步:搭建闭环传递函数
复制代码
1
2
3
4
5
6
7
8%系统的闭环传递函数 %方法一: system_clo = system_ol/(1+system_ol); %化简: minreal(system_clo); %方法二 system_cl_k1 = feedback(system_ol,1); %反馈函数可以换成H(S)
阶跃响应:函数step(闭环系统)
复制代码
1
2step(system_cl_k1);
伯德图:bode(闭环系统):
复制代码
1
2
3bode(system_cl_k1); grid on
乃氏图:nyquist(闭环系统):
根轨迹图:rlocus(开环系统)
复制代码
1
2
3
4
5
6
7
8rlocus(system_ol); %打开栅格 sgrid %或者 grid on %打开根轨迹编辑器 rltool(system_ol);
复制代码
1
2
3
4sys_ctrl = 5/s; system_ol_5 = sys_ctrl*system; system_cl_k5 = feedback(system_ol,1);
当有两种不同的输出响应时
状态空间方程
1、MATLAB中的状态空间方程及能控性能观性判断
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43%% 判断系统的能控性质 clc clear %线性定常连续系统:dx=Ax+Bu %状态完全能控的充分必要条件:rank(Uc)=n % Uc = [B AB .....A(n-1)B] %例 %输入系统矩阵 A = [1 2 1;0 1 0;1 0 3]; B = [1 0;0 1;0 0]; %求解矩阵Uc Uc = [B A*B A^2*B]; %求解矩阵Uc的秩 rank(Uc) %% 判断系统的状态能控性和输出能控性 % rank(Uc)=n % 判断系统的状态能控性 A = [-4 1;2 -3]; B = [1;2]; Uc = [B A*B]; % 函数ctrb,计算可控性矩阵 uc = ctrb(A,B); rank(Uc) % 判断系统的输出能控性 % rank(Uco)=q q为输出个数 C = [1 0]; Uco = [C*B C*A*B]; rank(Uco) %% 判断系统的能观性 %rank(U0)=n % 输入系统矩阵 A = [0 1 0 0;3 0 0 2;0 0 0 1;0 -2 0 0]; B = [0;1;0;0]; C = [1 0 0 0]; D = 0; % 求矩阵U0 U0 = [C;C*A;C*A^2;C*A^3]; % 求矩阵U0的秩 rank(U0)
以能控性为例:
2、MATLAB构建状态空间方程及输出
复制代码
1
2
3
4
5
6
7
8
9
10
11
12A = [0 1;-2 -3]; B = [0;1]; C = [1 0]; D = 0; sys = ss(A,B,C,D); %阶跃响应 step(sys); %伯德图 bode(sys); %乃氏图 nyquist(sys);
状态空间方程与传递函数之间的转换
以上面的数据为例
复制代码
1
2system = tf(sys)
复制代码
1
2ss(system)
MATLAB构建离散系统
配置一个离散系统,采样时间为0.1
复制代码
1
2sys_ls = tf([0 1],[2 3],'Ts',0.1)
MATLAB离散系统与连续系统的转换
相关概念见离散化资料
零阶保持器转换
复制代码
1
2c2d(system,0.01,'zoh')
一阶保持器转换
复制代码
1
2c2d(system,0.01,'foh')
双线性变换
复制代码
1
2c2d(system,0.01,'tustin')
复制代码
1
2d2c(ans)
利用MATLAB对控制系统进行仿真
1、以某个系统为例
复制代码
1
2
3
4system = tf([1],[1 3 2]) % lsim输入有三部分:系统,输入向量,输入时间 lsim(system,[1;1;2;2;3;3],[0:0.1:0.5])
复制代码
1
2
3
4
5
6
7function dx = mysystem(t,x) %输入第一个向量必须是时间,第二个为状态向量,假设x为二维向量 dx = [0;0]; dx(1) = x(2); dx(2) = -x(1); end
命令行窗口调用求解
复制代码
1
2
3ode45(@mysystem,[0 10],[1;2]) %括号内变量为函数句柄(调用函数,仿真时间,初始状态),出图 [t,y] = ode45(@mysystem,[0 10],[1;2]) %不绘制图形,直接输出数据(时间和状态变量)
最后
以上就是不安吐司最近收集整理的关于MATLAB与自动控制原理MATLAB在自动控制原理中的应用的全部内容,更多相关MATLAB与自动控制原理MATLAB在自动控制原理中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复