¿cómo obtener los parámetros de la respuesta al escalón dentro de matlab en bucle abierto?

0

Tengo una respuesta escalonada en bucle abierto de mi modelo que almacené en el espacio de trabajo y quiero usar Matlab para obtener la constante de tiempo: T, el tiempo muerto L y A (vea la figura a continuación). Hay un comando para eso. la información paso a paso?  Louséymientrasusounaplanta,simulélaplantaconlaentradadepasosyguardéelVoutdesalidaenseriestemporalescomomemostróanteriormenteehiceestescript:

time=Vout.Time;%xY=Vout.Data;%yForK,usethefinalvalueofYK=Y(end);L_index=find(Y>=.05*K,1);L=time(L_index);T_index=find(Y>=(1-exp(-1))*K,1);T=time(T_index);D=diff(Y)./diff(time);inflex=find(diff(D)./diff(time(1:end-1))<0,1);A=D(inflex)*time(inflex)-Y(inflex);tangent=D(inflex)*time-A;plot(time,Y),holdon,plot(time,tangent),plot(L,Y(L_index),'*'),plot(T,Y(T_index),'*')

calculótodoslosparámetros(L,TyA)peroelresultadoparece: aquí, ¿la modificación que incluí es correcta a pesar de no ver la tangente?

    
pregunta Yaakov

1 respuesta

3

Un sistema de ejemplo y su respuesta a pasos:

s = tf('s');
SYS = 1/(s^2+s+1);
[Y,time] = step(SYS);

Para K, usa el valor final de Y.

K = Y(end);

Para L y T, use un criterio de umbral de amplitud. Aquí considero que L es cuando la amplitud supera el 5% del valor final, y T cuando supera el 63%.

L_index = find(Y>=.05*K,1);
L = time(L_index);
T_index = find(Y>=(1-exp(-1))*K,1);
T = time(T_index);

Use diff dos veces para detectar el punto de inflexión, determinar la pendiente de la línea tangencial y el negativo de su coeficiente lineal es igual a A.

D = diff(Y)./diff(time);
inflex = find(diff(D)./diff(time(1:end-1))<0,1);
A = D(inflex)*time(inflex)-Y(inflex);

Ahora hay una trama para probar que todo está en orden.

tangent = D(inflex)*time - A;
step(SYS), hold on, plot(time,tangent), plot(L,Y(L_index),'*'), plot(T,Y(T_index),'*')

    
respondido por el Vicente Cunha

Lea otras preguntas en las etiquetas