Borrar filtros
Borrar filtros

Simulink Constant Ramp Controller

14 visualizaciones (últimos 30 días)
Alexander Reiter
Alexander Reiter el 6 de Jul. de 2023
Comentada: Alexander Reiter el 7 de Jul. de 2023
Hi all,
In order to explain my problem, I've attached a Simulink model to this post. It consists of a classic PID control loop which calculates the response of the system to a signal step at the input. What I am looking for is a controller to replace the PID, which guarantees a constant slope over the entire step response, ideally without any remaining controll error. I've already tried different approaches, none of them seem to work reliably. Any ideas?:)
Cheers
Alex
  2 comentarios
Nikhil
Nikhil el 6 de Jul. de 2023
Can you explain what you mean by ' a constant slope over the entire step response ' ?
Alexander Reiter
Alexander Reiter el 6 de Jul. de 2023
Does this help?

Iniciar sesión para comentar.

Respuesta aceptada

Sam Chak
Sam Chak el 6 de Jul. de 2023
I didn't check the Simulink model. However, the desired response can be achieved with a nonlinear controller. See example below.
tspan = linspace(0, 4, 10001);
x0 = 0;
opts = odeset('RelTol', 1e-12, 'AbsTol', 1e-9);
[t, x] = ode45(@odefcn, tspan, x0, opts);
% Solution Plot
plot(t, x, 'linewidth', 1.5), hold on,
plot(t, heaviside(t - 1), 'r--'), grid on,
xlabel('t'), ylabel('x(t)')
legend('output', 'input', 'location', 'east')
function xdot = odefcn(t, x)
k = 1; % parameter that determines the strength of u
g = 1000; % parameter that determines steepness of u
ref = heaviside(t - 1); % reference input to be tracked
% controller
u = - k*tanh(g*(x - ref)); % nonlinear controller
% system
xdot = u; % equivalent to the plant transfer function, Gp(s) = 1/s
end
  1 comentario
Alexander Reiter
Alexander Reiter el 7 de Jul. de 2023
Hi Sam,
thanks a lot, this works perfectly!

Iniciar sesión para comentar.

Más respuestas (1)

Nikhil
Nikhil el 6 de Jul. de 2023
Editada: Nikhil el 6 de Jul. de 2023
Yes, It helps. You can derive the transfer function for the controller since you know the transfer function for the system and the desired output from the equation:
where Y(s) is the output, which would be for a signal of constant slope m,
G(s) is C(s)*P(s), where P(s) is the system tranfer function, which in your case is as your system is an integrator,
H(s) is the feedback transfer function, which is 1,
U(s) is the input signal, which would be for the case of a step input.
The controller transfer function would then turn out to be
You can then use a Transfer Function block to implement the controller.
  3 comentarios
Alexander Reiter
Alexander Reiter el 6 de Jul. de 2023
just one more question: While the transfer function produces a perfect ramp response, I won't stop after reaching the height of the step. Is there any chance to force the system to stop, as soon as the control deviation becomes zero? Check the attached file for the Simulink model.
Cheers
Alex
Nikhil
Nikhil el 6 de Jul. de 2023
You can limit the output of the integrator block by enabling Limit output option.

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by