4 votos

Cómo estabilizar este sistema de control?

Tengo un problema de control de la saturación. Es casi lineal en la no-zona de saturación.

Problema: http://i.stack.imgur.com/9NqrK.jpg

De vez en cuando me la medida de error grandes picos. Que no tiene que molestar a mi control de rutina. Quiero llegar hasta el 50% (de la tensión de referencia) en mi voltaje de salida. En el momento en que hago esto por pisar un paso hacia arriba o hacia abajo dependiendo de si el resultado es mayor o menor que 50%. Esto conduce a las oscilaciones.

Oscilaciones: http://i.stack.imgur.com/DytFy.jpg

Si puedo esperar un poco más de tiempo antes de medir el voltaje de salida y, a continuación, ajustar la tensión de control de las oscilaciones de ir hacia abajo. Pero esto también se extiende mi tiempo de puesta en marcha que es un problema, ya que no sé cual de control de valor de la tensión que produce 50% de la tensión de salida. Tengo que buscar un buen tiempo.

¿Cómo puedo controlar las oscilaciones sin ralentizar mi velocidad de muestreo?

En el control PID se dice que el error estacionario se reduce a cero si una parte integral es añadido pero, ¿cómo puedo hacer algo similar aquí?

De lo contrario, ¿cuál sería su estrategia para el control de esto?

3voto

SandeepJ Puntos 1339

Si usted tiene enorme error transitorio picos, entonces usted necesita un derivado de la parte (i.e el D PID) para el manejo de estos.

Un simple PID sistema no es difícil escribir en el código, es la sintonía que esa es la parte difícil - usted necesita saber aproximadamente. La parte integral controlará el desplazamiento de DC, la parte proporcional de la ganancia, y la derivada de la reacción al cambio.

Aquí está el código que escribí para un control de temperatura del grabado tanque hice con un PIC16F y un sensor de temperatura DS18B20 hace años (utiliza algunos de alambre de nicromo impulsado a través de la PWM envuelto alrededor de un par de baldosas de cerámica para el elemento de calefacción, por lo que tenía una gran capacidad térmica)
Los resultados, una vez afinado, fueron un rebasamiento una de menos de 2 grados en el poder, y una variación de menos de un grado a partir de entonces. Es muy viejo código para un proyecto articuló rápidamente, por lo que probablemente puede ser mejorado un poco justo.
He encontrado este documento "PID sin un DOCTORADO" bastante útil. Además, Matlab, Scilab o de Octava puede ser utilizado para simular y sintonizar el PID de los sistemas.

/** Control variables **/

int DEADBAND = 0;   // Range where no change will be made

// PID gain values 
double Kp = 10;
double Ki = 0.02;
double Kd = 5;

// Accumulator variable for Integral calculation
double I_acc = 0;

// Returns out the proportional term
double get_prop(int error)
{
    double p;
    p = (Kp * error); 
    return p;
}

// Returns the integral term
double get_int(int error)
{
    double i;
    I_acc += (error);

    i = (double)(Ki * I_acc);
    if(i > 1000) i = 1000;
    if(i < 0) i = 0;
    return i;
}

// Returns the derivative term
double get_deriv(int error)
{
    double d;
    static int prev_error;
    d = (Kd * (error - prev_error));
    prev_error = error;
    return d;
}

double get_pid(int error)
{
    double result;
    double p, i, d;

    p = get_prop(error);
    i = get_int(error);
    d = get_deriv(error);
    result = p + i + d;
    return result;
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X