Bucle de control para encontrar el valor máximo [cerrado]

0

Estoy tratando de construir un sistema de control que controle la variable x con una respuesta y , el objetivo es encontrar el valor máximo de y mientras evito sobrepasar tanto como sea posible . Supongamos que y tiene una forma bien definida con un máximo (por lo tanto, no hay máximos locales para confundir el sistema), como el que se muestra a continuación.

Busqué bucle de control PID y aunque el principio parece aplicarse pero requiere un conjunto de definido por el usuario punto , pero en mi caso el objetivo es el máximo que se desconoce. ¿Cómo puedo modificar el PID para que funcione en mi caso?

En una nota aparte, el valor de retroalimentación y tiene ruido. No es un gran problema cuando x está lejos del máximo ya que la pendiente es alta, pero se convierte en un problema cuando se acerca al máximo a medida que la pendiente se vuelve plana. ¿Cómo puedo mitigar el problema del ruido y asegurarme de que el sistema sea estable en la parte superior?

    
pregunta LWZ

4 respuestas

1

Supongo que X comienza en cero o en escala completa.

Configure X para que aumente a una velocidad predeterminada y observe la velocidad de cambio en Y con respecto al tiempo; cuando comienza a aproximarse a cero, reduzca la velocidad de X y vuelva a calcular la tasa de cambio ahora mucho más lenta de Y a medida que Se acerca al pico.

Sospecho que con una parábola, que si hay dos puntos medidos en Y con respecto a X, puede hacer un cálculo casi instantáneo para predecir el pico. Ambos puntos deben estar en un lado de la paraboa, por supuesto.

El ruido en la parte superior de la parábola puede mitigarse con un filtro digital adecuado.

    
respondido por el Andy aka
1

Su pregunta es abstracta, pero desea un controlador que intente mantener la cantidad Y en su máximo. El controlador afecta a la cantidad X y hay un solo máximo que causa dependencia, como Y = -A * (X-B) ^ 2 + C, donde al menos A es positivo.

¿Por qué simplemente no busca el máximo con algoritmos matemáticos conocidos (método de gradiente y otros? Déjeme adivinar: quiere un controlador porque

  • A, B y C no se conocen exactamente, tal vez toda la fórmula sea un poco confusa, solo la existencia de un solo máximo es segura
  • hay algunas perturbaciones que deben ser compensadas; por ejemplo, B o C o ambos tienen cierta dependencia de tiempo aleatorio.
  • X no es directamente accesible, X es la salida de algún subsistema inamovible, ese subsistema tiene inercia y otras propiedades dañinas bien conocidas, puede ingresar algo a X solo a través de ese subsistema.

La diferencia entre este y los sistemas de control normales: en los sistemas de control normales, el controlador siempre sabe cuánto hay un error. El controlador PID toma en cuenta también la rapidez con que cambia el error y cuando el error es lo suficientemente pequeño, el integrador se enciende para llevar el error a cero.

En su caso, el valor Y medido no le da nada útil al controlador PID. Debe agregar alguna búsqueda temporal o espacial que encuentre si existe una Y más grande con una X diferente.

Búsqueda temporal: su sistema oscila al variar X intencionalmente y se utiliza un detector de fase para ver, donde sea posible, se puede encontrar una Y más grande

Búsqueda espacial: ha duplicado su sistema de medición, otro sensor verifica la cantidad de Y con algún desplazamiento en X

Las diferencias medidas dan una estimación de cuán lejos o al menos en qué dirección está el máximo. Esto es como el error medido en los sistemas de control normales.

El controlador obtiene ahora el mismo tipo de información que en los sistemas de control normales, por lo que los controladores normales pueden ser posibles, ya sea P, PI, PD, PID o algo moderno e inteligente, depende de lo que haya entre el controlador y X.

Si su sistema es un modelo de algo práctico, obviamente hay algo entre el controlador y X y ese algo tiene cierta inercia y no se puede eliminar.

Piense en un juguete (= mascota robot) que trata de mantenerse en la parte superior de la tuerca de una persona que camina. Y es la altitud del robot, X (bidimensional) es la posición plana del robot, el sistema de medición tiene dedos sensoriales que se inclinan hacia el cráneo e intentan encontrar dónde todavía es posible escalar. La búsqueda espacial está en uso. La posición del plano solo se puede cambiar moviendo el robot con algunos motores. Hay un sistema dinámico complejo entre X y el controlador.

La búsqueda temporal es teóricamente posible. El robot tiene un solo medidor de altitud. Para usarlo, el robot se mueve rápido aquí y allá para encontrar la dirección para escalar. La inercia del sistema que finalmente produce el movimiento (= cambios X) fácilmente hace inútil la búsqueda temporal.

Espero que esta historia altamente gratuita haya dado luz a tu problema.

    
respondido por el user287001
0

No está claro lo que realmente estás intentando construir.

Los bucles de control minimizan el error entre un punto de ajuste y un valor medido desde un sistema físico o "planta". Aunque podría ser posible observar el valor del integrador en un PID y determinar cuándo su valor comienza a disminuir, sería difícil.

Para encontrar el valor máximo de una señal analógica, consulte circuitos de detección de picos . Recuerdan el voltaje más alto visto. Un error es que necesitará un reinicio para enviar el voltaje nuevamente a cero, lo que se puede lograr con un interruptor a través del condensador. La caída de cuánto tiempo "mantiene" el circuito el valor máximo que encuentra se determina principalmente por el valor del condensador.

Fuente: Learning About Electronics

    
respondido por el laptop2d
0

Esto es más un pensamiento en proceso que una respuesta correcta, pero podría ayudar. Tuve el mismo pensamiento inicial que los demás de que se requiere cierta oscilación del valor X para determinar si estamos al máximo o no.

simular este circuito : esquema creado usando CircuitLab

Figura 1. Circuito analógico de búsqueda de respuesta de pico.

Cómo funciona:

  • C2 se descarga inicialmente y V1 es 0 V. X es 0 V.
  • V1 va alto, lo que da un débil impulso a OA2 a través de R4. La salida X aumenta ligeramente.
  • V1 también activa SW1 (un interruptor analógico CD4016 o similar) que conecta la salida de CMP1 al filtro de paso bajo formado por R2 & C2.
  • Si Y es más alto que el valor promedio mantenido en C1, CMP1 sube y C2 se carga un poco más alto. Si no, entonces C2 se descarga un poco.
  • El circuito debe continuar ajustando y oscilando un poco alrededor del punto máximo.

El sistema podría funcionar mejor con un ciclo de trabajo bajo para la señal alta de onda cuadrada, ya que esto permitirá que C1 sea más representativo del valor de Y cuando X no está perturbado.

Esta solución no intenta solucionar el problema de ruido mencionado en el OP.

    
respondido por el Transistor

Lea otras preguntas en las etiquetas