2. Control Predictivo DMC (Parte 2)

2. Control Predictivo DMC (Parte 2)
5 (100%) 5 votes

En esta entrada continuaremos con el tema del control predictivo, especificamente con el DMC (Dinamic Matrix Control). Veremos como podemos llevar a la practica con un ejemplo sin restricciones este tipo de control

Ejemplo

Diseñar un controlador DMC para el siguiente proceso.

G(s)=\dfrac{e^{-0.41s}}{s^{2}+ 1.1 s + 1}

Si te sirvió de algo la información de la pagina, podrías invitarme a un café y ayudarme a seguir manteniendo en pie el sitio WEB. Solo cuesta $2USD y me ayudarías enormemente a seguir con mi trabajo. Muchas Gracias por tu visita.




Esta entrada tiene 7 comentarios

  1. Saludos muy cordiales Sergio tal vez me podría aclarar las siguientes dudas, estoy realizado el control DMC de nivel de agua de un sistema SISO el sensor que utilizo es (ultrasonico) y el actuador una (servoválvula) los datos que adquirir son

    nit=15
    Setpoint 20

    Posición Acción_control (U) Señal sensor (Ym)
    vector

    0 0 15,27
    1 2,9 2,93
    2 13,42 13,52
    3 17,4 17,54
    4 18,91 19,06
    5 19,49 19,64
    6 19,7 19,86
    7 19,79 19,94
    8 19,82 19,98
    9 19,834 19,992
    10 19,838 19,997
    11 19,84 19,999
    12 19,841 19,999
    13 19,841 20
    14 19,841 20
    15 19,842 20

    1) La posición cero del vector de acción de control(U) debería tener un valor constante de cero para cada ejecución del algoritmo o debería retroalimentarse con el ultimo valor del vector, en este caso 19.842?

    2) La acción de control (U) que va hacia el actuador deberían ir todos los datos del vector del (0-15) o solo el ultimo dato del vector, cuando se ha estabilizado la señal 19.842?

    3) Cuando el valor del sensor (Ym) llegue a ser igual al Setpoint (20) que debería hacer para que la acción de control(U) apague el actuador (servoválvula) y el nivel de agua ya no siga subiendo ya que el algoritmo DMC empieza a recalcular los datos pero la acción de control no llega ha tener un valor de (cero) en todos los datos del vector (0-15)?

    1. Hola Pablo, no entiendo que me quieres expresar con esos 3 vectores que colocas. Acá en la entrada usamos esos vectores para simular el comportamiento dinámico del sistema de control. Ahora en tu caso, para el proceso de nível primero debes formar la matriz de coeficientes G, para eso colocas un escalon en la servovalvula puede ser de 10 y tomas todos los datos para formar esa matriz, como es un sistema integrador el tanque terminará desbordandose por eso debes tomar hasta cierto instante. Todavia no he tenido el tiempo de explicar como tratar este tipo de sistemas inestables en la pagina, por lo tanto si usas este algoritmo, muy probablemente tendras un error de offset en el caso de alguna perturbación. La acción de control es solo una, nunca es un vector, seria la u(k), el vector se utiliza para calcular las predicciones del sistema. Formando la matriz G, le estas indicando al DMC que es un sistema tipo integrador y él eventualmente volverá cero la acción de control cuando llegue al setpoint.

      1. Esos vectores son los datos de mi planta calculados con las perturbaciones no medibles y muchas gracia por aclararme que solo se utiliza el valor U(K) en el actuador y no todo el vector como yo suponía .

  2. Saludos Sergio, una pregunta para realizar un control en lazo cerrado, la señal de mi sensor en la parte del algoritmo iría en esta parte:?
    % calcula salida de proceso
    ym(k)=B(1)*u(k-d)+B(2)*u(k-1-d)+B(3)*u(k-2-d)-A(2)*ym(k-1)-A(3)*ym(k-2)+do(k);
    O estoy equivocado, porque ym es mi salida del proceso real según entendí, o esta siempre se calcula como tenemos en tu algoritmo. Te agradeseria si me ayudaras gracias de antemano.

    1. Es correcto Jonathan, la salida de tu sensor es ym(k). En el algoritmo por ser una simulación debe emplearse la ecuación en diferencias para simular la señal del sensor del proceso, en tu caso, iria directamente en ym(k).

      1. Muchas gracias por la respuesta me ayudo, y otra cosa si quisiera trabajar en tiempo real con mi planta como lo haría?, ya que la salida me entrega un vector de datos, porque entiendo que el algoritmo trabaja en un instante de tiempo quisiera saber como hago para que mi planta trabaje conjunto con el algoritmo.

        1. Hola Jonathan. En tu proceso tu siempre tendrás una salida que viene de tu sensor que será el “ym(k)”, eso es un dato (escalar) que entra al algoritmo, hace todos los calculos y al final el algoritmo te entregar una acción de control “u(k)” también es un dato (escalar) ese dato debe ir a tu elemento final de control que no se que sea, por ejemplo si controlaras una resistencia con un PWM a través de un relé de estado solido, el u(k) seria el ancho de pulso del PWM, deberia estar escalizado de 0 – 100, así si tu u(k) calculado dá por ejemplo 50, entonces aplicara un PWM de 50% sobre el relé de estado solido, haciendo que mitad del tiempo en la frecuencia la resistencia este activa y la otra mitad del tiempo este desactivada.
          Puedes por ejemplo darle un vistazo a la entrada donde se hace un PID para un proceso real (click aqui) es basicamente lo que deberias hacer solo que cambiando el tipo de control. Saludos.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

2. Control Predictivo DMC (Parte 2)
Menú de cierre