BlockWerk Documentación
A-B-C-D (z)

Discrete State-Space

Discrete

El bloque Discrete State-Space implementa un sistema lineal en espacio de estados en tiempo discreto. En cada instante de muestreo, actualiza el vector de estado interno mediante las ecuaciones de recurrencia y calcula la salida como una combinación lineal del estado actual y la entrada. El bloque equivale a la función de transferencia matricial en el dominio z H(z) = C(zI - A)^-1 B + D.

Los usos típicos incluyen la implementación de modelos de planta en tiempo discreto, dinámicas de observadores y estimadores, filtros digitales prediseñados en forma de espacio de estados y cualquier sistema lineal discretizado a partir de un diseño en tiempo continuo mediante métodos de retención de orden cero (ZOH) o Tustin.

Simular en BlockWerk

Simulador interactivo en tu navegador — sin instalación, motor WebAssembly.

Simular en BlockWerk →

Modelo Matemático

x[k+1]=Ax[k]+Bu[k]y[k]=Cx[k]+Du[k]\begin{aligned} x[k+1] &= Ax[k] + Bu[k] \\ y[k] &= Cx[k] + Du[k] \end{aligned}

Donde:

  • x[k] — vector de estado en el paso k (longitud n, orden del sistema)
  • u[k] — vector de entrada en el paso k (coincide con el número de columnas de B)
  • y[k] — vector de salida en el paso k (coincide con el número de filas de C)
  • A — matriz de transición de estados n×n
  • B — matriz de entrada n×m
  • C — matriz de salida p×n
  • D — matriz de transmisión directa p×m
  • k — índice de tiempo discreto; tiempo real = k · sampleTime

Entradas y Salidas

Direction ID Label Tipo Status
→ In u Input(s) number Required
← Out y Output(s) number Output

Parámetros

Parámetros Label Tipo Por defecto Descripción
A A Matrix vector 0.9
B B Matrix vector 1
C C Matrix vector 1
D D Matrix vector 0
initialState Initial State vector 0
sampleTime Sample Time number 0.01

Ejemplos de Uso

Filtro paso bajo de primer orden a 100 Hz

Un filtro paso bajo discreto de primer orden con polo en z = 0.9 y ganancia estática unitaria:

Step → DiscreteStateSpace → Display
       A=0.9  B=0.1  C=1  D=0  T=0.01s

Sistema de segundo orden (doble integrador, Euler)

Doble integrador discretizado con T = 0.01 s:

Force → DiscreteStateSpace → Position
        A=[1 0.01; 0 1]  B=[0.00005; 0.01]  C=[1 0]  D=0

Observaciones y Buenas Prácticas

  • Dimensiones matriciales: A debe ser cuadrada (n×n). B debe tener n filas. C debe tener n columnas. D debe tener el mismo número de filas que C y el mismo número de columnas que B. Dimensiones no coincidentes causarán un error de simulación.
  • Entradas y salidas múltiples (MIMO): Conecte múltiples señales al puerto de entrada para sistemas MIMO; el bloque las agrupa en el vector u según el orden de conexión.
  • Estabilidad: El sistema es estable solo cuando todos los autovalores de A se encuentran estrictamente dentro del círculo unitario. Una matriz A inestable hará que el estado crezca indefinidamente.
  • Estados discretos: El bloque asigna internamente hasta 32 ranuras para estados discretos; mantenga el orden del sistema en 32 o menos.
  • Alineación del tiempo de muestreo: Al combinar este bloque con otros bloques discretos, configure todos los valores de sampleTime de forma consistente o inserte un bloque Rate Transition en la transición.

Bloques Relacionados

  • RateTransition: Para cruzar límites de frecuencia de muestreo al conectarse a subsistemas con diferente velocidad.
  • TransferFunction: Equivalente en tiempo continuo; utilizar para diseño en el dominio s antes de la discretización.
  • Integrator: Acumulación de estados en tiempo continuo; utilizar en lugar de DiscreteStateSpace cuando el solver global gestione la integración.