Main Content

stepinfo

Tiempo de subida, tiempo de estabilización y otras características de respuesta al escalón

Descripción

stepinfo permite calcular características de respuesta al escalón para un modelo de sistema dinámico o para un arreglo de datos de respuesta al escalón. Para una respuesta al escalón y(t), stepinfo calcula las características relacionadas con yinit y yfinal, donde yinit es el desplazamiento inicial, es decir, el valor antes de aplicar el escalón, y yfinal es el valor de estado estacionario de la respuesta. Estos valores dependen de la sintaxis que utilice.

  • En un modelo de sistema dinámico sys, stepinfo utiliza yinit = 0 e yfinal = valor de estado estacionario.

  • En un arreglo de datos de respuesta al escalón [y,t], stepinfo utiliza yinit = 0 y yfinal = último valor de muestreo de y, a no ser que especifique de manera explícita estos valores.

Para obtener más información sobre cómo stepinfo calcula las características de respuesta al escalón, consulte Algoritmos.

La siguiente figura ilustra alguna de las características que stepinfo calcula para una respuesta al escalón. Para esta respuesta, supongamos que y(t) = 0 para t < 0, por tanto yinit = 0.

Step response characteristics. The figure shows peak response, peak time, rise time, settling time, and transient time of the response.

ejemplo

S = stepinfo(sys) calcula las características de respuesta al escalón para un modelo de sistema dinámico sys. Esta sintaxis utiliza yinit = 0 y yfinal = valor de estado estacionario para calcular las características que dependen de estos valores.

S = stepinfo(y,t) calcula las características de respuesta al escalón a partir de un arreglo de datos de respuesta al escalón y y un vector de tiempo t correspondiente. En las respuestas de sistemas SISO, y es un vector con el mismo número de entradas que t. En los datos de respuesta MIMO, y es un arreglo que contiene respuestas de cada canal de E/S. Esta sintaxis utiliza yinit = 0 y el último valor en y (o el último valor en los datos de respuesta correspondientes de cada canal) como yfinal.

ejemplo

S = stepinfo(y,t,yfinal) calcula las características de respuesta al escalón relacionadas con el valor de estado estacionario yfinal. Esta sintaxis es útil cuando se sabe que la respuesta esperada del sistema de estado estacionario es diferente del último valor en y por razones como el ruido en las mediciones. Esta sintaxis utiliza yinit = 0.

En las respuestas SISO, t e y son vectores con la misma longitud NS. En los sistemas con NU entradas y NY salidas, puede especificar y como un arreglo de NS por NY por NU (consulte step) e yfinal como un arreglo de NY por NU. Luego, stepinfo devuelve un arreglo de estructuras S de NY por NU de las características de respuesta correspondiente a cada par E/S.

ejemplo

S = stepinfo(y,t,yfinal,yinit) calcula las características de respuesta al escalón relacionadas con el valor inicial de respuesta yinit. Esta sintaxis es útil cuando los datos y cuentan con un desplazamiento inicial; es decir, y es distinto de cero antes de que se produzca el escalón.

En las respuestas SISO, t e y son vectores con la misma longitud NS. En los sistemas con NU entradas y NY salidas, puede especificar y como un arreglo de NS por NY por NU e yinit como un arreglo de NY por NU. Luego, stepinfo devuelve un arreglo de estructuras S de NY por NU de las características de respuesta correspondiente a cada par E/S.

ejemplo

S = stepinfo(___,'SettlingTimeThreshold',ST) permite especificar el umbral ST utilizado en la definición del tiempo de estabilización y del tiempo transitorio. El valor predeterminado es ST = 0.02 (2%). Puede utilizar esta sintaxis con cualquiera de las combinaciones de entrada/argumento anteriores.

ejemplo

S = stepinfo(___,'RiseTimeLimits',RT) permite especificar el umbral inferior y superior utilizados en la definición del tiempo de subida. De manera predeterminada, el tiempo de subida es el tiempo que tarda la respuesta en subir del 10% al 90% del recorrido desde el valor inicial hasta el valor de estado estacionario (RT = [0.1 0.9]). El umbral superior RT(2) también se utiliza para calcular SettlingMin y SettlingMax. Estos son los valores mínimos y máximos de la respuesta que se produce una vez que la respuesta alcanza el umbral superior. Puede utilizar esta sintaxis con cualquiera de las combinaciones de entrada/argumento anteriores.

Ejemplos

contraer todo

Calcule las características de respuesta al escalón, tales como tiempo de subida, tiempo de estabilización y sobreimpulso, en un modelo de sistema dinámico. Para este ejemplo, cree una función de transferencia de tiempo continuo:

sys=s2+5s+5s4+1.65s3+5s2+6.5s+2

Cree la función de transferencia y examine la respuesta al escalón.

sys = tf([1 5 5],[1 1.65 5 6.5 2]);
step(sys)

Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

La gráfica muestra que la respuesta sube en pocos segundos y, luego se produce un ringdown hasta un valor de estado estacionario de unos 2,5. Calcule las características de esta respuesta con stepinfo.

S = stepinfo(sys)
S = struct with fields:
         RiseTime: 3.8456
    TransientTime: 27.9762
     SettlingTime: 27.9762
      SettlingMin: 2.0689
      SettlingMax: 2.6873
        Overshoot: 7.4915
       Undershoot: 0
             Peak: 2.6873
         PeakTime: 8.0530

En este caso, la función utiliza yinit= 0 para calcular características en el modelo de sistema dinámico sys.

De forma predeterminada, el tiempo de estabilización es el tiempo que tarda el error en permanecer por debajo del 2% de |yinit-yfinal|. El resultado S.SettlingTime muestra que para sys, esta condición se produce después de 28 segundos. La definición predeterminada de tiempo de subida es el tiempo que tarda la respuesta en ir del 10% al 90% del recorrido desde yinit=0 a yfinal. S.RiseTime muestra que para sys, esta subida se produce en menos de 4 segundos. El sobreimpulso máximo se devuelve en S.Overshoot. En este sistema, el valor pico S.Peak, que se produce en el tiempo S.PeakTime, rebasa en aproximadamente un 7,5% el valor de estado estacionario.

En un sistema MIMO, stepinfo devuelve un arreglo de estructuras en el que cada entrada contiene las características de respuesta del correspondiente canal de E/S del sistema. Para este ejemplo, utilice un sistema de tiempo discreto de dos salidas y dos entradas. Calcule las características de respuesta al escalón.

A = [0.68 -0.34; 0.34 0.68];
B = [0.18 -0.05; 0.04 0.11];
C = [0 -1.53; -1.12 -1.10];
D = [0 0; 0.06 -0.37];
sys = ss(A,B,C,D,0.2);

S = stepinfo(sys)
S=2×2 struct array with fields:
    RiseTime
    TransientTime
    SettlingTime
    SettlingMin
    SettlingMax
    Overshoot
    Undershoot
    Peak
    PeakTime

Acceda a las características de respuesta para un canal de E/S concreto indexando en S. Por ejemplo, examine las características de respuesta para la respuesta desde la primera entrada hasta la segunda salida de sys, correspondiente a S(2,1).

S(2,1)
ans = struct with fields:
         RiseTime: 0.4000
    TransientTime: 2.8000
     SettlingTime: 3
      SettlingMin: -0.6724
      SettlingMax: -0.5188
        Overshoot: 24.6476
       Undershoot: 11.1224
             Peak: 0.6724
         PeakTime: 1

Para acceder a un valor concreto, utilice notación de puntos. Por ejemplo, extraiga el tiempo de subida del canal (2, 1).

rt21 = S(2,1).RiseTime
rt21 = 0.4000

Puede utilizar SettlingTimeThreshold y RiseTimeThreshold para cambiar el porcentaje predeterminado para los tiempos de estabilización y de subida, respectivamente, como se describe en la sección Algoritmos. Para este ejemplo, utilice el sistema dado por:

sys=s2+5s+5s4+1.65s3+6.5s+2

Cree la función de transferencia.

sys = tf([1 5 5],[1 1.65 5 6.5 2]);

Calcule el tiempo que tarda el error en la respuesta de sys en permanecer por debajo del 0,5% del intervalo |yfinal-yinit|. Para ello, establezca SettlingTimeThreshold en 0.5% o 0.005.

S1 = stepinfo(sys,'SettlingTimeThreshold',0.005);
st1 = S1.SettlingTime
st1 = 46.1325

Calcule el tiempo que tarda la respuesta de sys en subir del 5% al 95% del recorrido desde yinit hasta yfinal. Para ello, establezca RiseTimeThreshold en un vector con esos límites.

S2 = stepinfo(sys,'RiseTimeThreshold',[0.05 0.95]);
rt2 = S2.RiseTime
rt2 = 4.1690

Puede definir porcentajes tanto para el tiempo de estabilización como para el tiempo de subida en el mismo cálculo.

S3 = stepinfo(sys,'SettlingTimeThreshold',0.005,'RiseTimeThreshold',[0.05 0.95])
S3 = struct with fields:
         RiseTime: 4.1690
    TransientTime: 46.1325
     SettlingTime: 46.1325
      SettlingMin: 2.0689
      SettlingMax: 2.6873
        Overshoot: 7.4915
       Undershoot: 0
             Peak: 2.6873
         PeakTime: 8.0530

Puede extraer las características de respuesta a partir de los datos de respuesta al escalón, incluso si no dispone de un modelo del sistema. Por ejemplo, supongamos que ha medido la respuesta del sistema para una entrada en escalón y que ha guardado los datos de respuesta resultantes en un vector y de valores de respuesta en los tiempos almacenados en otro vector t. Cargue los datos de respuesta y examínelos.

load StepInfoData t y
plot(t,y)

Figure contains an axes object. The axes object contains an object of type line.

Calcule las características de respuesta al escalón a partir de estos datos de respuesta con stepinfo. Si no especifica el valor de respuesta de estado estacionario yfinal, entonces stepinfo asume que el último valor del vector de respuesta y es la respuesta de estado estacionario. Dado que los datos tienen ruido, es posible que el último valor en y no sea el valor de respuesta de estado estacionario verdadero. Cuando sepa cuál debería ser el valor de estado estacionario, puede proporcionarlo en stepinfo. En este ejemplo, supongamos que la respuesta de estado estacionario es 2.4.

S1 = stepinfo(y,t,2.4)
S1 = struct with fields:
         RiseTime: 1.2897
    TransientTime: 19.6478
     SettlingTime: 19.6439
      SettlingMin: 2.0219
      SettlingMax: 3.3302
        Overshoot: 38.7575
       Undershoot: 0
             Peak: 3.3302
         PeakTime: 3.4000

Debido al ruido en los datos, la definición predeterminada del tiempo de estabilización es demasiado estricta, lo que da como resultado un valor arbitrario de casi 20 segundos. Para permitir ruido, aumente el umbral del tiempo de estabilización del valor predeterminado 2% al 5%.

S2 = stepinfo(y,t,2.4,'SettlingTimeThreshold',0.05)
S2 = struct with fields:
         RiseTime: 1.2897
    TransientTime: 10.4201
     SettlingTime: 10.4149
      SettlingMin: 2.0219
      SettlingMax: 3.3302
        Overshoot: 38.7575
       Undershoot: 0
             Peak: 3.3302
         PeakTime: 3.4000

El tiempo de estabilización y el tiempo transitorio son iguales cuando el error pico emax es igual al intervalo |yfinal-yinit| (consulte Algoritmos), que es el caso de los modelos con subimpulso o que no disponen de alimentación y que presentan menos del 100% de sobreimpulso. Tienden a ser diferentes en los modelos con alimentación, ceros en el origen, ceros inestables (subimpulso) o con gran sobreimpulso.

Considere los siguientes modelos.

s = tf('s');
sys1 = 1+tf(1,[1 1]);                        % feedthrough
sys2 = tf([1 0],[1 1]);                      % zero at the origin
sys3 = tf([-3 1],[1 2 1]);                   % non-minimum phase with undershoot
sys4 = (s/0.5 + 1)/(s^2 + 0.2*s + 1);        % large overshoot

step(sys1,sys2,sys3,sys4)
grid on
legend('Feedthrough','Zero at origin','Non-minimum phase with undershoot','Large overshoot')

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Feedthrough, Zero at origin, Non-minimum phase with undershoot, Large overshoot.

Calcule las características de respuesta al escalón.

S1 = stepinfo(sys1)
S1 = struct with fields:
         RiseTime: 1.6095
    TransientTime: 3.9121
     SettlingTime: 3.2190
      SettlingMin: 1.8005
      SettlingMax: 2.0000
        Overshoot: 0
       Undershoot: 0
             Peak: 2.0000
         PeakTime: 10.5458

S2 = stepinfo(sys2)
S2 = struct with fields:
         RiseTime: 0
    TransientTime: 3.9121
     SettlingTime: NaN
      SettlingMin: 2.6303e-05
      SettlingMax: 1
        Overshoot: Inf
       Undershoot: 0
             Peak: 1
         PeakTime: 0

S3 = stepinfo(sys3)
S3 = struct with fields:
         RiseTime: 2.9198
    TransientTime: 6.5839
     SettlingTime: 7.3229
      SettlingMin: 0.9004
      SettlingMax: 0.9991
        Overshoot: 0
       Undershoot: 88.9466
             Peak: 0.9991
         PeakTime: 10.7900

S4 = stepinfo(sys4)
S4 = struct with fields:
         RiseTime: 0.3896
    TransientTime: 40.3317
     SettlingTime: 46.5052
      SettlingMin: -0.2796
      SettlingMax: 2.7571
        Overshoot: 175.7137
       Undershoot: 27.9629
             Peak: 2.7571
         PeakTime: 1.8850

Examine las gráficas y las características. En estos modelos, el tiempo de estabilización y el tiempo transitorio son diferentes porque el error pico sobrepasa el intervalo entre el valor inicial y el final. En modelos como sys2, el tiempo de estabilización se devuelve como NaN porque el valor de estado estacionario es cero.

En este ejemplo, calcule las características de respuesta al escalón a partir de datos de respuesta al escalón con un desplazamiento inicial. Esto significa que el valor de los datos de respuesta es distinto de cero antes de que se produzca el escalón.

Cargue los datos de respuesta al escalón y examine la gráfica.

load stepDataOffset.mat
plot(stepOffset.Time,stepOffset.Data)

Figure contains an axes object. The axes object contains an object of type line.

Si no especifica yfinal ni yinit, stepinfo asume que yfinal es el último valor en el vector de respuesta y y que yinit es cero. Cuando sepa cuáles son los valores de estado estacionario e iniciales, puede proporcionarlos en stepinfo. En este caso, el estado estacionario de la respuesta yfinal es 0.9 y el desplazamiento inicial yinit es 0.2.

Calcule las características de respuesta al escalón a partir de estos datos de respuesta.

S = stepinfo(stepOffset.Data,stepOffset.Time,0.9,0.2)
S = struct with fields:
         RiseTime: 0.0084
    TransientTime: 1.0662
     SettlingTime: 1.0662
      SettlingMin: 0.8461
      SettlingMax: 1.0878
        Overshoot: 26.8259
       Undershoot: 0.0429
             Peak: 0.8878
         PeakTime: 1.0225

En este caso, el valor pico de esta respuesta es 0.8878 porque stepinfo mide la desviación máxima a partir de yinit.

Argumentos de entrada

contraer todo

Sistema dinámico, especificado como un modelo de sistema dinámico SISO o MIMO. Se admiten los siguientes tipos de sistemas dinámicos:

  • Modelos LTI numéricos de tiempo continuo o de tiempo discreto, como modelos tf, zpk o ss.

  • Modelos LTI generalizados o con incertidumbre, como modelos genss o uss (Robust Control Toolbox). El uso de modelos con incertidumbre requiere el software Robust Control Toolbox™. En el caso de modelos generalizados, stepinfo calcula las características de respuesta al escalón con el valor actual de los bloques ajustables y el valor nominal de los bloques con incertidumbre.

  • Modelos LTI identificados, como modelos idtf (System Identification Toolbox), idss (System Identification Toolbox) o idproc (System Identification Toolbox). El uso de modelos identificados requiere el software System Identification Toolbox™.

Datos de respuesta al escalón, especificados como una de las siguientes opciones:

  • En el caso de datos de respuesta SISO, un vector de longitud Ns, donde Ns es el número de muestras en los datos de respuesta

  • En el caso de datos de respuesta MIMO, un arreglo de Ns por Ny por Nu, donde Ny es el número de salidas del sistema y Nu, el de entradas al sistema

Vector de tiempo correspondiente a los datos de respuesta en y, especificado como un vector de longitud Ns.

Valor de estado estacionario, especificado como un escalar o un arreglo.

  • En el caso de datos de respuesta SISO, especifique un valor escalar.

  • En el caso de datos de respuesta MIMO, especifique un arreglo de Ny por Nu, donde cada entrada proporciona el valor de respuesta de estado estacionario para el canal del sistema correspondiente.

Si no proporciona yfinal, stepinfo utiliza el último valor del canal correspondiente de y como valor de respuesta de estado estacionario.

Este argumento solo es admisible cuando se proporcionan datos de respuesta al escalón como una entrada. En el caso de un modelo de sistema dinámico sys como una entrada, stepinfo utiliza yfinal = valor de estado estacionario para calcular las características que dependen de este valor.

Valor de y antes de que se produzca el escalón, especificado como un escalar o un arreglo.

  • En el caso de datos de respuesta SISO, especifique un valor escalar.

  • En el caso de datos de respuesta MIMO, especifique un arreglo de Ny por Nu, donde cada entrada proporciona el valor de respuesta inicial para el canal del sistema correspondiente.

Si no proporciona yinit, stepinfo utiliza cero como valor de respuesta inicial.

La respuesta y(0) en t = 0 es igual a yinit en los sistemas sin alimentación. No obstante, ambas cantidades son diferentes en presencia de alimentación, debido a la discontinuidad en t = 0.

Por ejemplo, la siguiente figura muestra la respuesta al escalón de un sistema con alimentación sys = tf([-1 0.2 1],[1 0.7 1]).

Step response of a system with feedthrough equal to negative1

En este caso, yinit es cero y el valor de alimentación es –1.

Este argumento solo es admisible cuando se proporcionan datos de respuesta al escalón como una entrada. En el caso de un modelo de sistema dinámico sys como una entrada, stepinfo utiliza yinit = 0 para calcular las características que dependen de este valor.

Umbral para definir el tiempo transitorio y el tiempo de estabilización, especificado como un valor escalar entre 0 y 1. Para cambiar las definiciones predeterminadas de tiempo transitorio y de estabilización (consulte Algoritmos), establezca ST con un valor diferente. Por ejemplo, para medir cuando el error cae por debajo del 5%, establezca ST en 0.05.

Umbral para definir el tiempo de subida, especificado como un vector fila de 2 elementos con valores no descendientes entre 0 y 1. Para cambiar la definición predeterminada de tiempo de subida (consulte Algoritmos), establezca RT con un valor diferente. Por ejemplo, para definir el tiempo de subida como el tiempo que tarda la respuesta en subir del 5% al 95% desde el valor inicial hasta el valor de estado estacionario, establezca RT en [0.05 0.95].

Argumentos de salida

contraer todo

Características de respuesta al escalón, devueltas como una estructura con los campos:

  • RiseTime

  • TransientTime

  • SettlingTime

  • SettlingMin

  • SettlingMax

  • Overshoot

  • Undershoot

  • Peak

  • PeakTime

Para obtener más información sobre cómo stepinfo define estas características, consulte Algoritmos.

En los modelos o datos de respuestas MIMO, S es un arreglo de estructuras en el que cada entrada contiene las características de respuesta al escalón del correspondiente canal de E/S. Por ejemplo, si proporciona un modelo con 3 entradas y 3 salidas o un arreglo de datos de respuesta, S(2,3) contiene las características de la respuesta de la tercera entrada a la segunda salida. Para ver un ejemplo, consulte Características de respuesta al escalón de un sistema MIMO.

Si sys es inestable, todas las características de respuesta al escalón son NaN, salvo Peak y PeakTime, que son Inf.

Algoritmos

En el caso de respuestas al escalón y(t), stepinfo calcula las características relativas a yinit y yfinal. En un modelo de sistema dinámico sys, stepinfo utiliza yinit = 0 e yfinal = valor de estado estacionario.

Esta tabla muestra cómo stepinfo calcula cada característica.

Característica de respuesta al escalónDescripción
RiseTimeTiempo que tarda la respuesta en subir del 10% al 90% del recorrido desde yinit hasta yfinal
TransientTime

El primer tiempo T es tal que el error |y(t) – yfinal| ≤ SettlingTimeThreshold × emax para tT, donde emax es el error máximo |y(t) – yfinal| para t ≥ 0.

De forma predeterminada, SettlingTimeThreshold = 0.02 (2% del error pico). El tiempo transitorio mide la rapidez con la que la dinámica transitoria desaparece.

SettlingTime

El primer tiempo T es tal que el error |y(t) – yfinal| ≤ SettlingTimeThreshold × |yfinalyinit| para tT.

De forma predeterminada, SettlingTime mide el tiempo que tarda el error en permanecer por debajo del 2% de |yfinalyinit|.

SettlingMinValor mínimo de y(t) una vez que ha subido la respuesta
SettlingMaxValor máximo de y(t) una vez que ha subido la respuesta
OvershootPorcentaje de sobreimpulso. Relacionado con la respuesta normalizada ynorm(t) = (y(t) – yinit)/(yfinalyinit), el sobreimpulso es el mayor de cero y 100 × max(ynorm(t) – 1).
UndershootPorcentaje con subimpulso. Relacionado con la respuesta normalizada ynorm(t), el subimpulso es el menor de cero y –100 × max(ynorm(t) – 1).
PeakValor pico de |y(t) – yinit|
PeakTimeTiempo en el que se produce el valor pico

Historial de versiones

Introducido en R2006a

expandir todo

Consulte también

|