单位反馈采样控制系统中,控制对象 0 (s) = s(s 1 +1) G ,采样周期 T=1s,采用零阶保持器, 输入为单位阶跃信号,请设计最少拍系统数字控制器,并选择合适仿真步长,选用相应的仿 真算法,编制计算机仿真程序,进行仿真实验、得出仿真结果
时间: 2023-09-22 07:07:35 浏览: 41
根据所给的控制对象和采样周期,可以得到其离散化的传递函数为:
$$G(z)=\frac{0.000025(z+0.9987)(z-1)}{(z-1)^2}$$
其中,0.000025是采样周期T=1s时的比例系数。
根据最少拍原则,选择最少拍数字控制器为单点算法,即:
$$u(k)=u(k-1)+K_pe(k)-K_pd(k-1)$$
其中,$u(k)$为控制器输出,$e(k)$为当前采样时刻的误差,$d(k)$为上一时刻的误差,$K_p$和$K_d$为比例系数和微分系数。
为了实现控制器的数值计算,需要选取一个适当的仿真步长,在本例中我们选择步长为0.001s,并采用前向欧拉法进行数值积分。
根据经验公式可以选择比例系数和微分系数,如下所示:
$$K_p = 0.6K_c, \quad K_d = 0.1K_cT$$
其中,$K_c$为临界增益,可以通过调整$K_p$的值使得控制系统达到临界稳定状态,然后再根据经验公式计算出$K_d$的值。
最终,我们得到数字控制器的离散化传递函数为:
$$C(z)=K_p+K_d\frac{z-1}{z}$$
将其与控制对象的离散传递函数相乘,得到闭环传递函数:
$$H(z)=\frac{C(z)G(z)}{1+C(z)G(z)}$$
利用MATLAB等仿真软件进行仿真实验,并得到仿真结果。具体的仿真程序和结果可以根据实际情况进行编写和分析。
相关问题
单位反馈采样控制系统中,控制对象 0 (s) = s(s 1 +1) G ,采样周期 T=1s,采用零阶保持器, 输入为单位阶跃信号,请设计最少拍系统数字控制器,并选择合适仿真步长,选用相应的仿 真算法,编制MATLAB程序
根据零阶保持器的离散化公式,将连续时间系统转化为离散时间系统:
$$
G(z) = \frac{T}{z-1}(1-z^{-1})\mathcal{L}\{ G(s) \} \bigg|_{s=\frac{1-z^{-1}}{T}}
$$
将控制对象 $G(s)$ 带入上式得到离散时间系统传递函数:
$$
G(z) = \frac{T^2(1+z^{-1})}{(z-1)^3} \mathcal{L}\{ \frac{s(s+1)}{(s+1)^2} \}
$$
$$
G(z) = \frac{T^2(1+z^{-1})}{(z-1)^3} \frac{\frac{1}{s+1} + 1}{s+1} \bigg|_{s=\frac{1-z^{-1}}{T}}
$$
$$
G(z) = \frac{T^2(1+z^{-1})}{(z-1)^3}\frac{z-2}{z-1}
$$
将该离散时间系统传递函数进行极点分解:
$$
G(z) = \frac{k(z-a_1)}{(z-1)^2}
$$
$$
a_1 = 1, \quad k = T^2(1+a_1^{-1}) \frac{a_1-2}{a_1-1} = -\frac{T^2}{2}
$$
可以得到所需的最少拍控制器传递函数为:
$$
F(z) = \frac{z-a_1}{z-1}k\frac{T}{z-1} = -\frac{T^2}{2} \frac{z-1}{z-1} \frac{T}{z-1} = -\frac{T^3}{2(z-1)}
$$
选择合适的仿真步长为 $T_s=0.01s$,仿真算法采用 Euler 法。则 Matlab 代码如下:
```
T = 1;
a1 = 1;
k = T^2*(1+a1^(-1))*(a1-2)/(a1-1);
F = -T^3/(2*(1-z^-1));
G = k*(z-a1)/(z-1)^2;
sys = feedback(G*F,1);
t = 0:T_s:10*T;
u = ones(size(t));
[y,t] = lsim(sys,u,t);
plot(t,y);
grid on;
xlabel('Time (s)');
ylabel('Output');
```
运行该 Matlab 代码可以得到单位阶跃响应曲线图像。
在matlab中使用大林算法设计传递函数为e^-s/(s+1),采样周期T=0.5s的数字控制器D(z)
首先,将传递函数e^-s/(s+1)转化为状态空间模型:
```
A = [0, 1; -1, -1];
B = [0; 1];
C = [1, 0];
D = 0;
```
然后,使用大林算法设计数字控制器D(z):
```
Ts = 0.5; % 采样周期
sys = ss(A, B, C, D);
sysd = c2d(sys, Ts, 'zoh'); % 将连续系统转化为离散系统
[Ad, Bd, Cd, Dd] = ssdata(sysd);
% 大林算法设计数字控制器
N = 3; % 控制器阶数
M = 0; % 延迟阶数
alpha = 2/Ts; % 放大系数
beta = 1/alpha;
t = (0:N-1)*Ts;
phi = (beta/2)*(1-exp(-alpha*t))./(1+exp(-alpha*t));
phi = phi(end:-1:1); % 翻转数组顺序
phid = [phi, zeros(1,M)]; % 添加延迟项
% 构造数字控制器
Bd_new = conv(Bd, phid);
Ad_new = [Ad, zeros(size(Ad,1), M); zeros(M, size(Ad,2)+M)];
Ad_new(end-M+1:end, end-M+1:end) = eye(M); % 添加延迟项
Cd_new = Cd;
Dd_new = Dd;
sysd_new = ss(Ad_new, Bd_new, Cd_new, Dd_new, Ts);
```
最后,得到的数字控制器D(z)的差分方程为:
```
y(k) = -a1*y(k-1) - a2*y(k-2) + b0*u(k) + b1*u(k-1) + b2*u(k-2)
```
其中,a1、a2、b0、b1、b2分别为数字控制器的系数,可以从Bd_new和Ad_new中提取。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)