Non linear plant equation and design the PID controller

5 views (last 30 days)
I have a set of equation which is non linear equation and I want to design a non a PID controller for the the equation. The equation and the condition are in thre attachments. Please give me any hints that might help me with equation. Where u is the PID controller equation.

Answers (1)

Sam Chak
Sam Chak on 16 Jan 2024
The motion dynamics of your Z-axis robot can be expressed through the following equation:
Here, the combined effects of friction and gravity are represented as a lumped disturbance. While the friction force exhibits nonlinear behavior, resembling a mathematically-saturated function (not easily visualized in If-Else or Piecewise forms), the motion system without disturbance can be characterized as linear:
Upon taking the Laplace transform, the transfer function of the plant is derived as:
,
This clearly represents a Double Integrator system. With this understanding, a classical PID controller can be designed with a specific focus on Disturbance Rejection.
From the simulation result, the amplitude (max) of the output response (red curve) resulting from a unit step disturbance is marginally below 0.0025 m. With a friction force of 50 Nm, this disturbance will induce a maximum change in height of less than 0.125 m, dissipating within the subsequent 5 seconds.
%% Plant
t = 0:0.01:8;
s = tf('s');
m = 20; % robot mass
P = 1/(m*s^2) % Plant transfer function
P = 1 ------ 20 s^2 Continuous-time transfer function.
%% Classical PID Controller with a focus on Disturbance Rejection
wc = 6; % <-- Tune this parameter to make the response faster or slower
opt = pidtuneOptions('DesignFocus', 'Disturbance-Rejection');
[C, info] = pidtune(P, 'PID', wc, opt)
C = 1 Kp + Ki * --- + Kd * s s with Kp = 360, Ki = 289, Kd = 112 Continuous-time PID controller in parallel form.
info = struct with fields:
Stable: 1 CrossoverFrequency: 6 PhaseMargin: 60.0000
%% Closed-loop TF from Reference R(s) to Output Y(s)
Gcl = feedback(C*P, 1)
Gcl = 112 s^2 + 360 s + 289.4 -------------------------------- 20 s^3 + 112 s^2 + 360 s + 289.4 Continuous-time transfer function.
yc = step(Gcl, t);
%% Closed-loop TF from Disturbance D(s) to Output Y(s)
Gdl = feedback(P, C)
Gdl = s -------------------------------- 20 s^3 + 112 s^2 + 360 s + 289.4 Continuous-time transfer function.
yd = step(Gdl, t);
%% Step responses
yyaxis left
plot(t, yc),
ylabel('Height, z (m)')
yyaxis right
plot(t, yd), grid on
xlabel('Time, t (s)')
legend('Response to a Step Reference', 'Response to a Step Disturbance', 'location', 'East')
title('Step Responses')

Community Treasure Hunt

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

Start Hunting!