Having problems with PID Control...

6 views (last 30 days)
JAVIER
JAVIER on 1 Nov 2023
Commented: Sam Chak on 4 Nov 2023
Hi, I'm designing an ideal robotic arm which is controlled by a PD. The functioning is very simple: The overshoot and stablishment time conditions are introduced and the dominant poles will be calculated. After that the Derivative control will act and control the system using the argument criterion, calculating the gain and where the Zero has to be introduced.
The problem comes that if I introduce certain conditions like 40% ovreshoot and 5 stab. time will not act as it is supposed to be even if the argument criterion can be satisfied.
If i increase the stablishment time the overshoot will be satisfied until 40% or even 50%, but not anymore... Anyone know why this can occur?
Thanks!

Answers (1)

Sam Chak
Sam Chak on 1 Nov 2023
Based on the provided information and without the mathematical model of the robotic arm and the PD controller gains, it's not clear what specific technical issue you are facing. However, one common reason for your difficulties in achieving the desired overshoot and settling time criteria is that the PD controller gains may not be appropriately tuned. (This could be the main reason).
  6 Comments
Sam Chak
Sam Chak on 3 Nov 2023
Moved: Sam Chak on 3 Nov 2023
I'm not very familiar with digital control design; hence, I converted the system to continuous time to see if it can be controlled to achieve your desired settling time of 4 seconds. If successful, then the designed controller can be discretized.
Perhaps you can edit your question to update the title (regarding the Discrete System) as well as to attach the relevant MATLAB files. This can attract experts in discrete-time systems.
K = 1;
c = 0.8;
num = K;
den = [1 c-1 -c];
G = tf(num, den, 0.1);
Gp = d2c(G, 'tustin')
Gp = 2.5 s^2 - 100 s + 1000 ---------------------- s^2 + 180 s Continuous-time transfer function.
% step(Gp)
% c2d(Gp, 0.1,'tustin') % check if it returns the original discrete model G
Sam Chak
Sam Chak on 4 Nov 2023
Here is the update. I am unfamiliar with your dominant-pole-based design approach. Therefore, I used the tuning tool to attempt to design a PD controller that meets the desired settling time and overshoot requirements. If you can adjust the parameters in the dominant-pole technique to produce similar PD gain values, you should obtain similar performance as shown below.
% Discrete-time Plant
K = 1;
c = 0.8;
num = K;
den = [1 c-1 -c];
Gp = tf(num, den, 0.1)
Gp = 1 ----------------- z^2 - 0.2 z - 0.8 Sample time: 0.1 seconds Discrete-time transfer function.
% Discrete-time PD Controller
w = 1.25;
[Gc, info] = pidtune(Gp, 'pd', w)
Gc = z-1 Kp + Kd * ------ Ts with Kp = 0.225, Kd = 0.0112, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PD controller in parallel form.
info = struct with fields:
Stable: 1 CrossoverFrequency: 1.2500 PhaseMargin: 86.0206
% Discrete-time Closed-loop control system
Gcl = feedback(Gc*Gp, 1)
Gcl = 0.1124 z + 0.1124 ------------------------ z^2 - 0.08757 z - 0.6876 Sample time: 0.1 seconds Discrete-time transfer function.
step(Gcl), grid on
S = stepinfo(Gcl);
S.SettlingTime
ans = 3
S.Overshoot
ans = 0

Sign in to comment.

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!