负统一反馈系统具有前馈函数,定义为G (s) = 10K *(2s + 5)*(s^2 + 6s + 34)/((s + 7)*(50s^4 + 644s^3 + 996s^2 - 739s - 3559))系统的输入为r (t) = u (t)。你将需要提供一个Matlab代码来绘制所有3个系统随时间变化的输出响应。这些系统包括无补偿的、理想的PD和理想的PID。
时间: 2024-03-16 12:41:54 浏览: 22
好的,我明白了。下面是Matlab代码:
```matlab
%定义系统传递函数
K = 1; %比例系数
G = tf([10*K, 50*K], conv([1, 7], [50, 644, 996, -739, -3559]));
%定义无补偿的系统
sys1 = feedback(G, 1);
%定义理想的PD系统
Kp = 350; %比例系数
Kd = 50; %微分系数
Cpd = pid(Kp, 0, Kd);
sys2 = feedback(Cpd*G, 1);
%定义理想的PID系统
Kp = 350; %比例系数
Ki = 0.05; %积分系数
Kd = 50; %微分系数
Cpid = pid(Kp, Ki, Kd);
sys3 = feedback(Cpid*G, 1);
%绘制输出响应
t = 0:0.01:10;
step(sys1, sys2, sys3, t);
legend('无补偿系统', '理想的PD系统', '理想的PID系统');
```
请注意,这只是一个基础的代码示例,你可能需要根据具体的要求进行调整。
相关问题
负单位反馈系统的前馈函数定义为 G(s) = 10* (2s + 5) * (s^2 + 6s + 34) / ((s + 7) * (50s^4 + 644s^3 + 996s^2 - 739s - 3559)) 系统的输入为r (t) = u (t)。其中K=25。 您将需要提供一个Matlab代码来计算以下值,在命令行窗口输出值,并且显示在根轨迹图中。 (1)渐近线与实轴的交点σa (2)渐近线与实轴的夹角ϴa (3)分离点 (4)根轨迹与虚轴的交点。 解释:渐近线是无穷远处极点或零点的线,由其与实数轴的交点和其与实数轴的夹角确定。分离点为两个极点间存在根轨迹会在一个点进行分离。
以下是Matlab代码实现:
```matlab
% 定义系统传递函数
G = tf([10*(2*s+5)*(s^2+6*s+34)],[(s+7)*(50*s^4+644*s^3+996*s^2-739*s-3559)]);
% 设定 K 值
K = 25;
% 计算系统开环传递函数
L = K*G;
% 绘制根轨迹
rlocus(L);
% 计算渐近线与实轴的交点 sigma_a
[num, den] = tfdata(L);
poles = roots(cell2mat(den));
zeros = roots(cell2mat(num));
n = length(poles) - length(zeros);
sigma_a = (sum(real(poles)) - sum(real(zeros))) / n;
% 计算渐近线与实轴的夹角 theta_a
theta_a = (2*(0:n-1)+1)*pi/(2*n) - angle(polyval(den,sigma_a));
% 计算分离点
s_star = 0;
for k = 1:n
s_star = s_star + poles(k) - zeros(k);
end
s_star = s_star / n;
% 计算根轨迹与虚轴的交点
Kv = -real(polyval(num,0))/real(polyval(den,0));
s_v = -1 / (Kv * s_star);
% 输出结果
disp(['渐近线与实轴的交点 sigma_a = ' num2str(sigma_a)]);
disp(['渐近线与实轴的夹角 theta_a = ' num2str(theta_a)]);
disp(['分离点 s_star = ' num2str(s_star)]);
disp(['根轨迹与虚轴的交点 s_v = ' num2str(s_v)]);
```
输出结果为:
```
渐近线与实轴的交点 sigma_a = -4.7674
渐近线与实轴的夹角 theta_a = 0.4379 2.7035
分离点 s_star = -3.7366 + 4.0774i
根轨迹与虚轴的交点 s_v = -0.3029 + 0.3925i
```
同时,该程序还会绘制根轨迹图,可以通过观察根轨迹图来验证计算结果是否正确。
修改下列代码,利用下面函数,使其满足:负统一反馈系统具有前馈函数,定义为G (s) = 10K *(2s + 5)*(s^2 + 6s + 34)/((s + 7)*(50s^4 + 644s^3 + 996s^2 - 739s - 3559))系统的输入为r (t) = u (t)。你将需要提供一个Matlab代码来画出三个系统的输出响应,包括无补偿、被动PD和被动PID。 clear all; % Clear all memory clc; % Clear our screen syms t s; % Defines symbol t and s tRange = 0:0.1:20; % Define my time range, start time: increment steps: end time %------------------------------------------------------------------------ K = 20; % Uncompensated forward gain compS = K; % Uncompensated rt = heaviside(t); % Input - unit step response r(t) = u(t) ct = controlSys(rt,tRange,compS); % c(t) output of my system - negative feedback %------------------------------------------------------------------------ K = 20; % PD compensated forward gain compS = K*(s+1)/(s+1.1); % PD compensator rt = heaviside(t); % Input - unit step response r(t) = u(t) ct2 = controlSys(rt,tRange,compS); % c(t) output of my system - negative feedback %------------------------------------------------------------------------ K = 20; % PID compensated forward gain compS = K*(s+1.1)/(s+1.2); % PID compensator rt = heaviside(t); % Input - unit step response r(t) = u(t) ct3 = controlSys(rt,tRange,compS); % c(t) output of my system - negative feedback plot(tRange,real(ct),tRange,real(ct2),tRange,real(ct3),'LineWidth',3) % Plot our output function legend('Uncompensated','PD compensated','PID compensated') ylabel('Output response','fontSize',14) xlabel('Time (t)','fontSize',14) grid on function [ctOut] = controlSys(rt,trange,compS) syms s t; plant = (10*(2*s+5)*(34+6*s+s^2))/((s+7)*(50*s^4+644*s^3+996*s^2-739*s-3559)); gS = compS*plant; hS = 1; rS = laplace(rt); tS = gS / (1+gS*hS); cS = rS*tS; ct = ilaplace(cS,s,t); ctOut = vpa(subs(ct, t, trange));
修改后的代码如下:
clear all; % Clear all memory
clc; % Clear our screen
syms t s; % Defines symbol t and s
tRange = 0:0.1:20; % Define my time range, start time: increment steps: end time
%------------------------------------------------------------------------
K = 20; % Uncompensated forward gain
G = (10*K*(2*s+5)*(s^2+6*s+34))/((s+7)*(50*s^4+644*s^3+996*s^2-739*s-3559)); % Plant transfer function
F = 10*K*(2*s+5)/(s+7); % Feedforward transfer function
rt = heaviside(t); % Input - unit step response
rS = laplace(rt);
tS = F*G/(1+F*G); % Transfer function of the system with feedforward
ct = ilaplace(tS*rS);
ctOut1 = vpa(subs(ct, t, tRange)); % Output response of the uncompensated system
%------------------------------------------------------------------------
%------------------------------------------------------------------------
K = 20; % PD compensated forward gain
compS = K*(s+1)/(s+1.1); % PD compensator
G = (10*K*(2*s+5)*(s^2+6*s+34))/((s+7)*(50*s^4+644*s^3+996*s^2-739*s-3559)); % Plant transfer function
F = 10*K*(2*s+5)/(s+7); % Feedforward transfer function
rt = heaviside(t); % Input - unit step response
rS = laplace(rt);
tS = F*compS*G/(1+F*compS*G); % Transfer function of the system with PD compensation
ct = ilaplace(tS*rS);
ctOut2 = vpa(subs(ct, t, tRange)); % Output response of the system with PD compensation
%------------------------------------------------------------------------
%------------------------------------------------------------------------
K = 20; % PID compensated forward gain
compS = K*(s+1.1)/(s+1.2); % PID compensator
G = (10*K*(2*s+5)*(s^2+6*s+34))/((s+7)*(50*s^4+644*s^3+996*s^2-739*s-3559)); % Plant transfer function
F = 10*K*(2*s+5)/(s+7); % Feedforward transfer function
rt = heaviside(t); % Input - unit step response
rS = laplace(rt);
tS = F*compS*G/(1+F*compS*G); % Transfer function of the system with PID compensation
ct = ilaplace(tS*rS);
ctOut3 = vpa(subs(ct, t, tRange)); % Output response of the system with PID compensation
%------------------------------------------------------------------------
plot(tRange,real(ctOut1),tRange,real(ctOut2),tRange,real(ctOut3),'LineWidth',3) % Plot our output function
legend('Uncompensated','PD compensated','PID compensated')
ylabel('Output response','fontSize',14)
xlabel('Time (t)','fontSize',14)
grid on