Introducción
Primero, debemos considerar qué es exactamente esto que se llama respuesta de impulso de de un sistema y qué significa. Este es un concepto abstracto que requiere un poco de pensamiento para visualizar. No voy a entrar en matemáticas rigurosas. Mi punto es tratar de dar alguna intuición de lo que es esto, lo que luego conduce a cómo puedes usarlo.
Ejemplo de problema de control
Imagina que tuvieras una gran resistencia de potencia con un sensor de temperatura montado. Todo comienza a temperatura ambiente. Cuando enciende la alimentación, sabe que la temperatura en el sensor eventualmente aumentará y se estabilizará, pero la ecuación exacta sería muy difícil de predecir. Digamos que el sistema tiene una constante de tiempo de alrededor de 1 minuto, aunque la "constante de tiempo" no es completamente aplicable ya que la temperatura no aumenta en un exponencial agradable como lo haría en un sistema con un solo polo y, por lo tanto, una constante de tiempo única . Supongamos que desea controlar la temperatura con precisión y hacer que cambie a un nuevo nivel y permanezca allí de manera constante mucho más rápido de lo que haría si se encendiera al nivel de potencia adecuado y esperara.
Básicamente, tienes un problema con el sistema de control. La respuesta de bucle abierto es razonablemente repetible y hay en algún lugar una ecuación que lo modela lo suficientemente bien, pero el problema es que hay demasiadas incógnitas para que pueda derivar esa ecuación.
Control PID
Una forma clásica de resolver esto es con un controlador PID. En el pleistoceno, cuando esto tenía que hacerse en electrónica analógica, las personas se volvieron inteligentes y elaboraron un esquema que funcionaba bien con las capacidades analógicas disponibles. Ese esquema se llamó "PID", para Proporcional , Integral y Derivado .
Término P
Empiezas midiendo el error. Esta es solo la respuesta medida del sistema (la temperatura informada por el sensor en nuestro caso) menos la entrada de control (la configuración de temperatura deseada). Por lo general, estos podrían estar disponibles para estar disponibles como señales de voltaje, por lo que encontrar el error fue solo una diferencia analógica, lo cual es bastante fácil. Puedes pensar que esto es fácil. Todo lo que tiene que hacer es conducir la resistencia con mayor potencia cuanto mayor sea el error. Eso intentará automáticamente hacer que sea más caliente cuando hace demasiado frío y más frío cuando hace demasiado calor. Eso funciona, más o menos. Tenga en cuenta que este esquema necesita algún error para provocar una salida de control distinta de cero (potencia que impulsa la resistencia). De hecho, significa que cuanto mayor sea la potencia necesaria, mayor será el error, ya que esa es la única forma de obtener la alta potencia. Ahora puede decir que todo lo que tiene que hacer es aumentar la ganancia para que el error sea aceptable incluso con una alta potencia. Después de todo, esa es la base de cómo se usan los opamps en muchos circuitos. Tienes razón, pero el mundo real no suele permitirte salirte con la tuya. Esto puede funcionar para algunos sistemas de control simples, pero cuando hay todo tipo de arrugas sutiles en la respuesta y cuando puede llevar un tiempo significativo, terminas con algo que oscila cuando la ganancia es demasiado alta. Dicho de otra manera, el sistema se vuelve inestable. pero cuando hay todo tipo de arrugas sutiles en la respuesta y cuando puede llevar un tiempo significativo, terminas con algo que oscila cuando la ganancia es demasiado alta. Dicho de otra manera, el sistema se vuelve inestable. pero cuando hay todo tipo de arrugas sutiles en la respuesta y cuando puede llevar un tiempo significativo, terminas con algo que oscila cuando la ganancia es demasiado alta. Dicho de otra manera, el sistema se vuelve inestable.
Lo que describí anteriormente fue la parte P (proprotional) de PID. Al igual que puede hacer que la salida sea proporcional a la señal de error, también puede agregar términos proporcionales a la derivada de tiempo e integral del error. Cada una de estas señales P, I y D tiene su propia ganancia separada antes de sumarlas para producir la señal de salida de control.
Yo termino
El término I permite que el error se anule con el tiempo. Mientras haya algún error positivo, el término I seguirá acumulándose, y eventualmente elevará la salida de control hasta el punto en que el error general desaparezca. En nuestro ejemplo, si la temperatura es constantemente baja, aumentará constantemente la potencia en la resistencia hasta que la temperatura de salida ya no sea baja. Esperemos que pueda ver que esto puede volverse inestable incluso más rápido que solo un término P alto. El término AI por sí solo puede causar sobreimpulsos fácilmente, que se convierten fácilmente en oscilaciones.
Término D
El término D a veces se deja de lado. El uso básico del término D es agregar un poco de estabilidad para que los términos P e I sean más agresivos. El término D básicamente dice que si ya estoy yendo en la dirección correcta, deje el acelerador un poco ya que lo que tengo ahora parece estar llevándonos allí .
PID de sintonización
Los conceptos básicos del control PID son bastante simples, pero obtener los términos P, I y D correctamente no lo es. Esto generalmente se hace con mucha experimentación y ajustes. El objetivo final es obtener un sistema general en el que la salida responda lo más rápido posible pero sin excesos ni timbres excesivos, y, por supuesto, debe ser estable (no comenzar a oscilar por sí solo). Se han escrito muchos libros sobre control PID, cómo agregar pequeñas arrugas a las ecuaciones, pero particularmente cómo "ajustarlas". El ajuste se refiere a adivinar las ganancias óptimas de P, I y D.
Los sistemas de control PID funcionan, y ciertamente hay muchos conocimientos y trucos para que funcionen bien. Sin embargo, el control PID no es la única respuesta correcta para un sistema de control. La gente parece haber olvidado por qué se eligió PID en primer lugar, que tenía más que ver con las restricciones de la electrónica analógica que con algún tipo de esquema de control óptimo universal. Desafortunadamente, muchos ingenieros hoy en día equiparan el "sistema de control" con PID, que no es más que una reacción instintiva. Eso no hace que el control PID sea incorrecto en el mundo actual, pero solo es una de las muchas formas de atacar un problema de control.
Más allá de PID
Hoy, un sistema de control de circuito cerrado para algo como el ejemplo de temperatura se haría en un microcontrolador. Estos pueden hacer muchas más cosas que simplemente tomar la derivada e integral de un valor de error. En un procesador puede hacer divisiones, raíces cuadradas, mantener un historial de valores recientes y mucho más. Son posibles muchos esquemas de control distintos del PID.
Respuesta impulsiva
Así que olvídate de las limitaciones de la electrónica analógica y retrocede y piensa cómo podríamos controlar un sistema volviendo a los primeros principios. ¿Qué pasaría si por cada pequeño trozo de salida de control supiéramos qué haría el sistema? La salida de control continuo es entonces la suma de muchas piezas pequeñas. Como sabemos cuál es el resultado de cada pieza, podemos saber cuál es el resultado de cualquier historial anterior de salidas de control. Ahora observe que "una pequeña parte" de la salida de control encaja perfectamente con el control digital. Vas a calcular cuál debería ser la salida de control y configurarlo para eso, luego regresar y medir las entradas nuevamente, calcular la nueva salida de control de esas y configurarla nuevamente, etc. Estás ejecutando el algoritmo de control en un bucle, y mide las entradas y establece la salida de control de nuevo en cada iteración del bucle. Las entradas se "muestrean" en momentos discretos, y la salida también se establece en nuevos valores en un intervalo fijo. Mientras pueda hacer esto lo suficientemente rápido, puede pensar que esto sucederá en un proceso continuo. En el caso de un calentamiento por resistencia que normalmente tarda unos minutos en instalarse, ciertamente varias veces por segundo es mucho más rápido de lo que el sistema responde de manera significativa de manera inherente que la actualización de la salida a unos 4 Hz parecerá continua al sistema. Esto es exactamente lo mismo que la música grabada digitalmente que en realidad cambia el valor de salida en pasos discretos en el rango de 40-50 kHz y que es tan rápido que nuestros oídos no pueden escucharlo y suena continuo como el original. Puedes pensar que esto suceda en un proceso continuo. En el caso de un calentamiento por resistencia que normalmente tarda unos minutos en instalarse, ciertamente varias veces por segundo es mucho más rápido de lo que el sistema responde de manera significativa de manera inherente que la actualización de la salida a unos 4 Hz parecerá continua al sistema. Esto es exactamente lo mismo que la música grabada digitalmente que en realidad cambia el valor de salida en pasos discretos en el rango de 40-50 kHz y que es tan rápido que nuestros oídos no pueden escucharlo y suena continuo como el original. Puedes pensar que esto suceda en un proceso continuo. En el caso de un calentamiento por resistencia que normalmente tarda unos minutos en instalarse, ciertamente varias veces por segundo es mucho más rápido de lo que el sistema responde de manera significativa de manera inherente que la actualización de la salida a unos 4 Hz parecerá continua al sistema. Esto es exactamente lo mismo que la música grabada digitalmente que en realidad cambia el valor de salida en pasos discretos en el rango de 40-50 kHz y que es tan rápido que nuestros oídos no pueden escucharlo y suena continuo como el original. ciertamente, varias veces por segundo es mucho más rápido de lo que el sistema responde inherentemente de manera significativa que la actualización de la salida a, digamos, 4 Hz se verá continua en el sistema. Esto es exactamente lo mismo que la música grabada digitalmente que en realidad cambia el valor de salida en pasos discretos en el rango de 40-50 kHz y que es tan rápido que nuestros oídos no pueden escucharlo y suena continuo como el original. ciertamente, varias veces por segundo es mucho más rápido de lo que el sistema responde inherentemente de manera significativa que la actualización de la salida a, digamos, 4 Hz se verá continua en el sistema. Esto es exactamente lo mismo que la música grabada digitalmente que en realidad cambia el valor de salida en pasos discretos en el rango de 40-50 kHz y que es tan rápido que nuestros oídos no pueden escucharlo y suena continuo como el original.
Entonces, ¿qué podríamos hacer si tuviéramos esta forma mágica de saber qué hará el sistema con el tiempo debido a cualquier muestra de salida de control? Dado que la respuesta de control real es solo una secuencia de muestras, podemos sumar la respuesta de todas las muestras y saber cuál será la respuesta del sistema resultante. En otras palabras, podemos predecir la respuesta del sistema para cualquier forma de onda de respuesta de control arbitraria.
Eso es genial, pero simplemente predecir la respuesta del sistema no resuelve el problema. Sin embargo, y aquí está el momento aha, puede darle la vuelta y encontrar la salida de control que habría requerido para obtener la respuesta deseada del sistema. Tenga en cuenta que está resolviendo exactamente el problema de control, pero solo si de alguna manera podemos conocer la respuesta del sistema a una única muestra de salida de control arbitrario.
Entonces probablemente estés pensando, eso es fácil, solo dale un pulso grande y mira lo que hace. Sí, eso funcionaría en teoría, pero en la práctica generalmente no lo hace. Esto se debe a que cualquier muestra de control, incluso una grande, es tan pequeña en el esquema general de cosas que el sistema apenas tiene una respuesta medible. Y recuerde, cada muestra de control tiene que ser pequeña en el esquema de cosas para que la secuencia de muestras de control se sienta continua para el sistema. Entonces, no es que esta idea no funcione, sino que en la práctica la respuesta del sistema es tan pequeña que está oculta en el ruido de medición. En el ejemplo de la resistencia, golpear la resistencia con 100 W durante 100 ms no causará suficientes cambios de temperatura para medir.
Paso de respuesta
Pero, todavía hay un camino. Si bien poner una sola muestra de control en el sistema nos hubiera dado su respuesta a muestras individuales directamente, todavía podemos inferirlo al poner una secuencia conocida y controlada de respuestas de control en el sistema y medir su respuesta a esas. Por lo general, esto se hace poniendo un paso de controlin. Lo que realmente queremos es la respuesta a un pequeño error, pero la respuesta a un solo paso es solo la parte integral de eso. En el ejemplo de la resistencia, podemos asegurarnos de que todo esté en estado estable a 0 W, luego encender de repente la energía y poner 10 W en la resistencia. Eso causará un cambio de temperatura muy bien medible en la salida eventualmente. La derivada de eso con la escala correcta nos dice la respuesta a una muestra de control individual, aunque no pudimos medir eso directamente.
Para resumir, podemos poner una entrada de control de pasos en un sistema desconocido y medir la salida resultante. Eso se llama la respuesta escalonada . Luego tomamos el tiempo derivado de eso, que se llama la respuesta al impulso . La salida del sistema resultante de cualquier muestra de entrada de control es simplemente la respuesta de impulso ajustada adecuadamente a la fuerza de esa muestra de control. La respuesta del sistema a un historial completo de muestras de control es un conjunto completo de las respuestas de impulso sumadas, escaladas y sesgadas a tiempo para cada entrada de control. Esa última operación surge mucho y tiene el nombre especial de convolución .
Control de convolución
Entonces, ahora debería ser capaz de imaginar que para cualquier conjunto deseado de salidas del sistema, puede llegar a la secuencia de entradas de control para causar esa salida. Sin embargo, hay una trampa. Si te vuelves demasiado agresivo con lo que quieres del sistema, las entradas de control para lograrlo requerirán valores antiguos y bajos poco antiguos. Básicamente, cuanto más rápido espere que responda el sistema, mayores serán los valores de control en ambas direcciones. En el ejemplo de la resistencia, puede decir matemáticamente que desea que vaya inmediatamente a una nueva temperatura, pero eso requeriría una señal de control infinita para lograrlo. Cuanto más lento permita que la temperatura cambie al nuevo valor, menor será la potencia máxima que necesita para poder descargar la resistencia. Otra arruga es que la energía en la resistencia a veces también necesitará disminuir. Usted puede'
Una forma de lidiar con esto es que el sistema de control filtre paso bajo la entrada de control del usuario antes de usarla internamente. Los usuarios de la figura hacen lo que los usuarios quieren hacer. Déjelos cerrar la entrada rápidamente. Internamente, usted pasa el filtro de paso bajo para suavizarlo y reducirlo a la velocidad más rápida que sabe que puede obtener dada la potencia máxima y mínima que puede poner en la resistencia.
Ejemplo del mundo real
Aquí hay un ejemplo parcial que usa datos del mundo real. Esto proviene de un sistema embebido en un producto real que, entre otras cosas, tiene que controlar un par de docenas de calentadores para mantener varios depósitos químicos a temperaturas específicas. En este caso, el cliente eligió hacer el control PID (es con lo que se sintió cómodo), pero el sistema en sí todavía existe y se puede medir. Aquí están los datos sin procesar de la conducción de uno de los calentadores con una entrada de paso. El tiempo de iteración del bucle fue de 500 ms, que es claramente un tiempo muy corto considerando que el sistema todavía se está estableciendo visiblemente en este gráfico de escala después de 2 horas.
En este caso, puede ver que el calentador fue accionado con un paso de aproximadamente .35 de tamaño (el valor "Out"). Poner un paso completo de 1.0 durante mucho tiempo habría resultado en una temperatura demasiado alta. Se puede eliminar el desplazamiento inicial y escalar el resultado para tener en cuenta el pequeño paso de entrada para inferir la respuesta del paso unitario:
De esto pensarías que sería solo restar valores sucesivos de respuesta escalonada para obtener la respuesta al impulso. Eso es correcto en teoría, pero en la práctica se obtiene principalmente el ruido de medición y cuantización ya que el sistema cambia tan poco en 500 ms:
Tenga en cuenta también la pequeña escala de los valores. La respuesta al impulso se muestra escalada por 10 6 .
Claramente, las variaciones grandes entre las lecturas individuales o incluso unas pocas son solo ruido, por lo que podemos filtrar esto para eliminar las altas frecuencias (el ruido aleatorio), lo que con suerte nos permite ver la respuesta subyacente más lenta. Aquí hay un intento:
Eso es mejor y muestra que realmente hay datos significativos, pero aún hay demasiado ruido. Aquí hay un resultado más útil obtenido con más filtrado de paso bajo de los datos de impulso sin procesar:
Ahora, esto es algo con lo que realmente podemos trabajar. El ruido restante es pequeño en comparación con la señal general, por lo que no debería interferir. La señal parece estar todavía intacta. Una forma de ver esto es darse cuenta de que el pico de 240 es aproximadamente a partir de una revisión visual rápida y un globo ocular que filtra la trama anterior.
Así que ahora detente y piensa en lo que realmente significa esta respuesta de impulso. Primero, tenga en cuenta que se muestra por 1M, por lo que el pico es realmente 0.000240 de escala completa. Esto significa que, en teoría, si el sistema funcionara con un solo pulso de escala completa solo para uno de los intervalos de tiempo de 500 ms, esta sería la temperatura resultante con respecto a que se hubiera dejado solo. La contribución de cualquier período de 500 ms es muy pequeña, como tiene sentido intuitivamente. Esta es también la razón por la cual la medición de la respuesta al impulso directamente no funciona, ya que 0.000240 de escala completa (aproximadamente 1 parte en 4000) está por debajo de nuestro nivel de ruido.
Ahora puede calcular fácilmente la respuesta del sistema para cualquier señal de entrada de control. Para cada muestra de salida de control de 500 ms, agregue una de estas respuestas de impulso escaladas por el tamaño de esa muestra de control. El tiempo 0 de esa contribución de respuesta al impulso a la señal de salida del sistema final es en el momento de su muestra de control. Por lo tanto, la señal de salida del sistema es una sucesión de estas respuestas de impulso compensadas por 500 ms entre sí, cada una escalada al nivel de muestra de control en ese momento.
La respuesta del sistema es la convolución de la entrada de control con esta respuesta de impulso, calculada cada muestra de control, que es cada 500 ms en este ejemplo. Para hacer un sistema de control a partir de esto, trabaje hacia atrás para determinar la entrada de control que da como resultado la salida del sistema deseada.
Esta respuesta de impulso sigue siendo bastante útil incluso si desea hacer un controlador PID clásico. Ajustar un controlador PID requiere mucha experimentación. Cada iteración tomaría una o dos horas en el sistema real, lo que haría que el ajuste iterativo sea muy, muy lento. Con la respuesta de impulso, puede simular la respuesta del sistema en una computadora en una fracción de segundo. Ahora puede probar nuevos valores PID tan rápido como pueda cambiarlos y no tener que esperar una o dos horas para que el sistema real le muestre su respuesta. Por supuesto, los valores finales siempre deben verificarse en el sistema real, pero la mayor parte del trabajo se puede hacer con simulación en una fracción del tiempo. Esto es lo que quise decir con "Puede usar esto como una base de simulación para encontrar los parámetros para el control PID tradicional" en el pasaje que citó en su pregunta.
Los filtros FIR e IIR, como Jon mencionó, son filtros digitales que implementan directamente la convolución de la respuesta al impulso, como su nombre lo dice (Finite \ Infinite Impulse Response).
Convolucionar la respuesta de impulso a una señal (en el dominio del tiempo) es exactamente lo mismo que multiplicar la función de transferencia a la transformación de la señal (en el dominio de la frecuencia); y, básicamente, consiste en multiplicar la respuesta de impulso del filtro a la versión traducida de la señal (piense en el hecho de que la respuesta del filtro se fija en el tiempo, mientras que la señal varía continuamente en el tiempo).
En los filtros digitales, la respuesta al impulso se reduce a un número fijo de coeficientes que multiplican la señal en un punto determinado; los puntos están separados por retrasos, obteniendo que un 0 multiplique el valor instantáneo de la señal, mientras que k multiplica la misma señal después de k unidades de retraso.
La figura muestra la respuesta al impulso de un filtro genérico (paso bajo en este caso) donde se obtienen los coeficientes para un filtro FIR de 13 tomas (el número de retrasos).
Para obtener algunas funciones de transferencia, un filtro FIR requeriría un número infinito de coeficientes: en estos casos, se utiliza una retroalimentación para obtener filtros IIR (respuesta de impulso infinito). Estos filtros permiten obtener mejores funciones de transferencia (por ejemplo, una transición más estrecha entre la banda de paso y la banda suprimida en los filtros) pero pueden generar inestabilidad, mientras que los filtros FIR son estables por construcción.
Este tipo de filtros se puede diseñar con circuitos analógicos, pero requiere amplificadores precisos ajustados a los coeficientes y circuitos de retardo precisos, y tiene un gran aumento de hardware al aumentar el número de tomas. Con mayor frecuencia, estos filtros se implementan en DSP, donde las operaciones se ejecutan en señales digitales de una manera mucho más fácil.
Entonces, para responder directamente a su pregunta : el ajuste de los filtros digitales se realiza simplemente configurando los coeficientes a la respuesta de impulso discretizada.
Actualizar
OP preguntó sobre el paso y la respuesta al impulso; bueno, como dijeron Olin y Jon, la respuesta al impulso es la derivada de la respuesta escalonada, y obviamente la respuesta escalonada es la integral de la respuesta impulsiva.
La respuesta escalonada se usa ampliamente en los sistemas de control porque muestra las cosas más importantes sobre ellos: qué tan rápido responden a los cambios rápidos en la entrada, y si son estables y capaces de minimizar el error con el tiempo.
Pero la respuesta al impulso es muy importante porque se puede usar para calcular qué causará la señal de entrada en un determinado instante en la salida, por lo que se puede obtener la señal de salida completa apilando el resultado de la respuesta al impulso multiplicada por la señal de entrada: esto es la convolución, y es donde ocurre la magia. Sí, porque la respuesta al impulso no es más que el anti transformado de Fourier de la función de transferencia del regulador.
Así que este es el poder de los filtros digitales: implementan directamente la respuesta al impulso y, si queremos reproducir una respuesta escalonada (en el caso de un sistema de control) o una función de transferencia (en el caso de un filtro) solo tenemos que deriva la respuesta al impulso y extrae los coeficientes para el FIR.
fuente
La convolución es típicamente un filtro FIR, no un IIR como el que se obtiene con los polos y ceros en un filtro recursivo tradicional. Ahora, si tiene la respuesta escalonada, puede invertir esto y preconvolucionar su señal de respuesta con eso. El resultado final es que todo el sistema exhibe exactamente una respuesta escalonada. Sin embargo, en el caso general, esto introduce un retraso de grupo, porque necesita "precargar" la respuesta inversa. En un sistema de control, esto puede conducir a una latencia indeseable.
fuente
Le daría la vuelta a esto y le diría que si tiene la capacidad de medir la respuesta escalonada de su sistema, puede acortar gran parte de la teoría y simplemente continuar optimizando sus parámetros de control. En lugar de medir la respuesta de bucle abierto e intentar calcular los parámetros de control ideales (aunque eso es útil para encontrar un buen punto de partida para la optimización), puede ajustar su sistema midiendo la respuesta de bucle cerrado.
La idea principal es que medir la respuesta escalonada le permitirá ver (aproximadamente) si el sistema de control está insuficientemente amortiguado, demasiado amortiguado o gravemente amortiguado (el caso ideal).
Si mide la respuesta escalonada y ve que suena, sabe que está poco amortiguado. Si mide la respuesta escalonada y la salida solo llega lentamente al valor final, sabrá que está poco amortiguado. Si puede ajustar el controlador mientras mide repetidamente la respuesta escalonada, simplemente puede ajustarlo para obtener la respuesta más rápida sin sonar y saber que está cerca de la mejor respuesta.
Puede comenzar simplemente usando el término P. Si los resultados no son satisfactorios, agregue los términos I y D. El término que ayuda a deshacerse de las largas colas en la respuesta, o casos en que la salida nunca bastante alcanza el valor deseado. El término D es útil para acelerar la respuesta al "predecir" dónde irá la entrada a continuación. (Supongo que, aunque no soy un experto en controles, es que el término P se puede optimizar en términos absolutos, pero la mejor elección de los términos I y D dependerá no solo de la respuesta de su sistema bajo control, sino también de las características, como contenido de frecuencia y amplitud, de la señal de entrada)
Una vez que haya obtenido la respuesta más rápida que puede obtener sin sonar, ajústelo para que esté ligeramente amortiguado de manera que un cambio de temperatura o lo que no ajuste el sistema en oscilación.
fuente