PID tuning to meet conditions for settling time and overshoot while a stable system with minimum peak time and zero velocity error.
clc clear all % plant transfer function G = tf([1], [0.5 1.5 1]) kp = 1 ki = 1 % PI controller C = tf([kp ki], [1 0]) % closed loop transfer function T = feedback(C*G, 1) rlocus(T) % Find the poles poles = pole(T) % step response figure; step(T); title('Step Response'); grid on; % Step analysis info = stepinfo(T) % Ramp Input t = 0:0.01:10; ramp = t; % System response to ramp figure; lsim(T, ramp, t); title('Ramp Response') legend grid on
Here is the solution using pidtune(). There is no direct way to input the desired settling time and overshoot percentage; however, you can enter the desired phase margin. This has been a concern for me in MATLAB for many years. Nevertheless, based on the desired overshoot percentage, you can apply the formula from your lecture notes to determine the desired phase margin.
%% The Plant Gp = tf([1], [0.5 1.5 1])
Gp = 1 ------------------- 0.5 s^2 + 1.5 s + 1 Continuous-time transfer function.
%% Using pidtune Pm = 68.2; % desired Phase Margin opt = pidtuneOptions('PhaseMargin', Pm, 'DesignFocus', 'balanced'); [Gc, info] = pidtune(Gp, 'pidf', opt)
Gc = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 2.02, Ki = 1.87, Kd = 0.489, Tf = 0.00619 Continuous-time PIDF controller in parallel form. info = struct with fields: Stable: 1 CrossoverFrequency: 1.4142 PhaseMargin: 72.6977
%% Closed-loop system Gcl = feedback(Gc*Gp, 1)
Gcl = 81.01 s^2 + 328.2 s + 302.2 ------------------------------------------------- 0.5 s^4 + 82.31 s^3 + 324.4 s^2 + 489.8 s + 302.2 Continuous-time transfer function.
S = stepinfo(Gcl)
S = struct with fields: RiseTime: 1.1479 TransientTime: 3.6131 SettlingTime: 3.6131 SettlingMin: 0.9088 SettlingMax: 1.0499 Overshoot: 4.9883 Undershoot: 0 Peak: 1.0499 PeakTime: 2.3938
step(Gcl), grid on, grid minor xline(S.SettlingTime, '--', sprintf('Settling Time: %.3f s', S.SettlingTime), 'color', '#7F7F7F', 'LabelVerticalAlignment', 'bottom') yline(1+S.Overshoot/100, '--', sprintf('Overshoot: %.3f %%', S.Overshoot), 'color', '#7F7F7F', 'LabelVerticalAlignment', 'top')
Matlabsolutions.com provides guaranteed satisfaction with a
commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain
experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support
to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been
empanelled after extensive research and quality check.
Matlabsolutions.com provides undivided attention to each Matlab
assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services
include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work
done at the best price in industry.