¿Cómo inferir coeficientes de controlador PID equivalentes a partir de un controlador de caja negra existente?

Tengo un sistema de 2 entradas y 2 salidas que he registrado en respuesta a 1. pasos (en realidad cuasi-pasos, con un tiempo de subida de 50 ms + algo de rebasamiento) y 2. ondas sinusoidales de 0,5 a 50 Hz, tanto en abierto como en abierto. bucle cerrado. En la configuración de lazo abierto , puedo inferir los parámetros internos basados ​​en el conocimiento de la estructura del sistema. En la configuración de lazo cerrado, a controller with ~60 ms delay brings the output close to a given target (which is separate from the input signal), but I can't figure out what the controller parameters are. I've attempted to model it as a PID controller using numerical (euler) simulations, but it seems to quickly become unstable when either I or D components are increased. In contrast, I can create the model in transfer function form and predict the frequency response, but I don't know howto then predict the response to arbitrary inputs (such as the quasi-steps, or sine waves where the control signal might differ from the input).

The system (u2 is the "goal/setpoint", F is the controller feedback with 60 ms delay, y2 is just a second output that I use to compare to data to infer H):

Diagrama de bloques

Por ejemplo, aquí está la salida de la función de transferencia (sólida) frente a la simulación numérica (discontinua) de todo el modelo en bucle cerrado, para una entrada de 0,5 Hz:Producción

Mi pregunta es: 1. ¿Hay una mejor manera de inferir los parámetros PID de F que usar un enfoque de simulación numérica + fminsearch (matlab)?

  1. (Tal vez esta es una pregunta separada, lo siento). Si no, ¿cómo pensar en la discrepancia entre la respuesta TF implícitamente estable y la respuesta numérica oscilante? ¿Cómo puedo evitar las oscilaciones en la respuesta numérica?

Respuestas (2)

Si la respuesta de cualquier sistema lineal invariante en el tiempo a una entrada es la convolución de la entrada con la respuesta de impulso del sistema.

Entonces, si ha medido la respuesta al impulso, puede encontrar la salida usando convolución.

Si no puede crear las condiciones para medir con precisión una respuesta de impulso, puede medir la respuesta de paso. La respuesta al impulso es entonces la derivada de la respuesta al escalón.

http://lpsa.swarthmore.edu/Transient/TransInputs/TransImpulseTime.html

Obviamente, a medida que avanza el tiempo, una convolución de fuerza bruta requiere demasiado cálculo porque estaría integrando numéricamente en tiempos cada vez más largos.

La solución suele ser limitar el alcance de la convolución en el tiempo modelando el sistema como un sistema de respuesta de impulso finito (FIR).

La otra forma es usar algún tipo de atajo matemático (como la recursividad) para determinar la siguiente salida en función de la señal de entrada y la salida anterior. Esta es la respuesta de impulso infinito (IIR).

Sí, hay una manera de averiguar cuáles son los parámetros:

1) Debe registrar todas las entradas y salidas

2) Utilice la identificación del sistema para averiguar cuáles son los parámetros de su planta. Aquí hay otro enlace que tiene una mejor descripción.

Si no vienes de un fondo de controles, los conceptos serán difíciles de entender. Aquí hay otro buen recurso para entender el fondo.

La idea básica es que tienes un sistema y ( t ) = h ( t ) x ( t ) if you take the laplace transform you get y ( s ) = h ( s ) x ( s ) or what your really after is y ( s ) / x ( s ) = h ( s ) .

Esto se vuelve mucho más complicado si su muestreo, agrega ruido o tiene un sistema MIMO como el suyo. Otra cosa, es realmente útil tener datos que capturen toda la dinámica del sistema. Si desea modelar todo el ancho de banda del sistema, es mejor una onda cuadrada, una función de paso o delta de dirac (Golpearlo con un martillo). Estos tienen contenido de frecuencia en todas las frecuencias donde una onda sinusoidal solo tiene contenido de frecuencia en unas pocas frecuencias.