Estoy tratando de aplicar un controlador PID
a mi función de transferencia en MATLAB para obtener la respuesta al paso, el código, el polo cero, etc. Este es el código que estoy usando para crear la función de transferencia y abrir el Aplicación PID Tuner
:
s = tf('s');
R = 10; % Load resistor
Rc = 130*10e-3; % Output cap ESR
C = 1410e-6; % Output capacitance
Rl = 100e-3; % Inductor resistance
L = 500e-6; % Inductor value
Vi = 30; % Input voltage
% Buck converter transfer function
G = Vi * ( (R + (s*R*Rc*C))/((s^2) * (L*C*(R+Rc)) + s*(R*Rc*C + Rl*C*(R+Rc) + L) + R + Rl) )
% PID Tuner
pidTuner(G, 'PID')
La respuesta que obtengo es la siguiente después de algunos ajustes (haga clic para verla más grande):
ElvalorKp
esrealmentebajoencomparaciónconelparámetroKi
,loquemehacepensarquehayalgomal.Perolarespuestaalpasoparececorrecta,asíqueseguiradelante.AhorausoesteprogramaparasimularmicontroladorPIDyhaceralgunosgráficos:
%PIDParametersfromPIDTunerKp=0.175Ki=371.22Kd=0%PIDControllerH=pid(Kp,Ki,Kd)%ClosetheloopT_pid=feedback(G,H)%Plotthestepresponsefigure(1);step(T_pid)gridontitle('Respuestatransitoriaenlazocerrado(planocontinuo)')xlabel('Tiempo')ylabel('Amplitud')
Yestaeslarespuestaalpasoqueestoyrecibiendo:
QueeswaaaaaaaydiferentedeloquePIDTunermedioantes.Deacuerdoconlosdocumentosdelafunciónfeedback()
,creoqueloestoyusandocorrectamente:
Pero en algún lugar de Internet lo encontré usado así:
T_pid = feedback(H*G, 1)
¡Y esto me da exactamente la misma respuesta al paso que PID Tuner
pero no entiendo por qué! ¿Cuál es la forma correcta de usarlo?