Archive for marzo, 2010

Arquitectura de un Control de Posición : “Una cuestión de lazos”

 

Para poder controlar la posición de un servoactuador, se acostumbra a realizar una regulación de tres lazos en cascada (tipo PI)  (existen otros algoritmos más complejos, pero en la práctica no son necesariamente mejores).

Los controles tipo PI se basan en una reacción del controlador proporcional al error (diferencia entre consigna y valor real del motor).

En infoplc.net hay un blog dedicado a regulación, por lo que me imagino que allí estará mejor detallado como funciona un control PID, por lo que voy a ser conciso… resumiendo:

PI+D (Control basado en Feedback) y FeedForward:

El termino P (proporcional) está relacionado con una acción proporcional al error y tiene un efecto inmediato en la respuesta, al aumentar este término, el sistema se vuelve más ‘vivo’, si nos pasamos con la ganancia… el sistema oscilará… (demasiado ‘vivo’).  Una analogía mecánica sería la constante ‘K’ de un muelle, cuanto más fuerte sea el muelle (K más alta), más brusca será su respuesta. A su vez.. cuanto mayor sea el ‘error’ (cuanto más lejos esté de su posición de reposo) mayor será la fuerza que hará el muelle.

Todos hemos tenido la experiencia con un muelle, de que para posiciones muy cercanas a su posición de reposo el muelle ‘no recupera’, esto se debe a que la fuerza es proporcional a la elongación del muelle y, podría darse el caso de que para posiciones muy cercanas a la de reposo no fuera suficiente para vencer el rozamiento que p.e. pueda tener la carga

Esta es una característica común a todos los controles proporcionales, acostumbran a estabilizarse ‘cerca’ de la posición comandada pero tienen un pequeño error residual que no consiguen recuperar (ya que al hacerse pequeño el error… el efecto de la constante de proporcionalidad Kp, es despreciable.

El termino I (integral), es una constante proporcional al error acumulado, y tiene como objetivo eliminar el error residual de un control proporcional. Un control P+I (proporcional + Integral) teóricamente logrará el objetivo de que el error sea nulo, el problema… en ocasiones es que el efecto integral es demasiado lento.

Para aumentar el ritmo de ‘correción’ del error es posible añadir un término proporcional a la variación del error ( D), de este modo tenemos un control PID. El efecto ‘Derivativo’ intenta anticiparse al error,  operando en función de su derivada temporal.

Complementando los algoritmos PI+D (que se basan en un valor de realimentación (FeedBack)), existen otras estrategias, que no necesitan Feedback, y que son compatibles con el hecho de utilizar un control con realimentación.

FeedForward (Pro-alimentación (vaya nombre más feo…, aunque ahora lo haya puesto de moda una serie de televisión…), se basa en sumar a la consigna una ‘pro-alimentación’ proporcional a la consigna…  si queremos que la locomotora corra más… pues… quememos ‘más madera!’. En el caso de los servos… lo que se hace es sumar al resultado del PI un ‘empuje’ extra proporcional a la consigna. Este tipo de ‘control’ es más ‘rápido’ que el PI puesto que no necesita esperar una realimentación (reacción del motor), y actua desde el primer momento. Cabe decir que al utilizar feedforwards el motor se vuelve más ‘vivo’.

Casi todos los servos tienen la posibilidad de utilizar un feedforward de velocidad.

Algunos ,como el Accurax G5 de OMRON tienen también la posibilidad de un feedforward de aceleración.

El uso del Feedforward de velocidad nos permitirá reducir al mínimo el error de seguimiento a velocidad constante, pero tendrá un efecto moderado cuando se produzcan variaciones de velocidad.

El uso del Feedforward de aceleración nos permitirá reducir al mínimo el error de seguimiento durante los procesos de aceleración y deceleración.

La siguientes gráficas muestran el efecto de los feedforwards sobre un servomotor:

Sistema sin uso de FeedForward

 
 
 

Sistema con un Máximo FeedForward de velocidad

Sistema con máximo FeedForward de velocidad y aceleración

Lazos y… más lazos…

Tanto las ganancias como los feedforwards se aplican sobre unos bloques de control encargados de los lazos de corriente, velocidad y posición.

El primer lazo es el de corriente (o par) y es el encargado de garantizar que el comando de par (corriente) entregado al motor se traduzca en el par efectivo necesario, para ello es necesario tener una realimentación (o estimación) de la corriente que consume el motor.

El segundo lazo es el lazo de velocidad, y se encarga de dar al regulador de par la consigna adecuada en ‘par’ para que la velocidad del motor coincida con la comandada.

El tercer lazo es el lazo de posición, este lazo sólo existe (obviamente) cuando se realiza un control de posición, es  decir… variadores de frecuencia que no tengan control de posición… no tendrán este lazo. El resultado de este lazo es la consigna de velocidad que nos garantice que el motor se posiciona correctamente.

Este lazo no es ‘obligatorio’ tenerlo en cualquier servo (puesto que este lazo puede ‘cerrarse’ en un controlador de posición y enviar una consigna de velocidad (tradicionalmente analógica): esta estrategia ha sido la utilizada durante muchos años en occidente, pero hoy  está prácticamente olvidada para servos de una cierta ‘entidad’  debido a la existencia de buses digitales (‘motion bus’). Curiosamente los variadores japoneses, desde un principio adoptaron la estrategia de cerrar el lazo de posición en el servo  y utilizar el controlador de posición como generador de perfiles, en el pasado… la interconexión se realizaba mediante un tren de pulsos, hoy en día.. son buses digitales.

Un dato importante es el tiempo de respuesta de los lazos. Cuanto más rápidos sean estos… más fino será el control. En la actualidad  existen en el mercado servos capaces de cerrar el lazo de par en menos de 0.05 ms y lazos de velocidad/posición del orden de los 0.08 ms

El siguiente esquema muestra la disposición de los lazos de corriente, velocidad y posición, así como el generador de perfiles (motion  controller).

Esquema simplificado de los bloques de regulación

En este post se ha obviado deliberadamente hablar sobre ajuste ‘tuning’. Este tema se abordará en detalle en un siguiente post.

El Convertidor de Frecuencia (III): Control Vectorial

En post anterior nos centramos en el control escalar, o lo que es lo mismo en un sistema de control basado en mantener la relación tensión frecuencia constante.
Una de las limitaciones del control escalar es el poco control de flujo que ofrece, podríamos decir que es un método de control ‘poco fino’, si lo comparamos con el control orientado al flujo.

El control vectorial es un control centrado en el flujo (Flux Oriented Control).
En este post se explicarán los fundamentos de este tipo de control. Cabe decir… que en la práctica no es necesario conocer la teoría de control del flujo, pero tal vez resulte interesante…, y nos podrá servir para entender cuándo no  utilziar variadores ‘escalares’ y porqué estos últimos són más ‘economicos’ que los primeros.

En una cierta ‘referencia vectorial privilegiada’ se cumple que el par motor es directamente proporcional a la corriente. El control vectorial… se basa en  una serie de transformaciones algebraicas que permiten trabajar sobre esa referencia ‘especial’ en la que podemos ‘ver’ directamente con  la corriente  de par.

En esa referencia ‘privilegiada’ podemos ‘asemejar’ el motor de inducción a un motor de continua.  Par= K*Iq   (siendo Iq la corriente de par)
Vamos por pasos…

La suma vectorial de las corrientes del sistema trifásico del estator da como resultado un vector corriente que se utilizará para :

  • Generar Par
  • Generar corriente inducida en el rotor. (y a su vez flujo en el rotor)

Es decir… tenemos tres vectores de corriente (que varían con el tiempo) … uno por fase… I_U(t), I_V(t), I_W(t), que sumados… nos daran una corriente resultante I_Stator(t) (que varía con el tiempo) .

La corriente I_Stator a su vez se puede proyectar adecuadamente sobre el eje U (el de la fase I_U(t)) y un nuevo eje ‘imaginario’  ortogonal a U.Este es un simple artilugio matemático para pasar de tres vectores de corriente a dos vectores:

  • El primero I_a(t) sobre el eje U
  • El segundo I_b(t) sobre el eje ortogonal

Esta transformación (llamada de Clarke) no es la más importante… se trata de  un paso intermedio.

Si se tratara de un juego de magia, un juego de cartas… ahora… damas y caballeros es cuando se les pediría que prestaran más atención, pues ahora llega el truco final…

¿Porqué gira un motor de inducción?…  porque el flujo del rotor intenta ‘alcanzar’ al flujo del estator, existe pues un desfase (deslizamiento) entre stator y rotor.

El truco final es la transformación a los vectores d-q , (llamada de Park) consite en proyectar las corrientes I_a(t), I_b(t)  sobre una nueva base, solidaria al vector flujo del rotor … y… no es un truco cualquiera… puesto que… de este modo.. hemos conseguido pasar de tres corrientes trifásicas a dos:

  • Una siempre alineada con el flujo del rotor,la corriente de flujo (Id)
  • Otra ortogonal a la misma, dedicada a generar par. (Iq).

De este modo, ahora el convertidor es capaz de controlar de una forma eficiente la corriente destinada a par, por tanto es posible reaccionar de una forma muy fina ante una variacion en la demanda de par o, directamente aplicar par prácticamente constante durante todo el rango de operación (recordemos que en el control escalar… el par a bajas vueltas… nos cae por los suelos…)

Esto está muy bien… pero… queda álgo pendiente…

¿Cómo calculamos el ángulo de deslizamiento?

El cálculo del deslizamiento es fundamental para poder alinear el vector ‘I_d’ con el flujo del rotor y así hacer cierto que la corriente de par se corresponda con el vector ortogonal ‘I_q’.

Existen varios métodos para poder calcular o estimar este ángulo.

  • Los variadores vectoriales llamados de lazo abierto, sensorless vector,.., ‘estiman’ el valor del ángulo sin utilizar sistemas de realimentación adicionales (como un encoder…).
  • Los variadores vectoriales con lazo cerrado, precisan de un sistema de realimentación (generalmente encoder o resolver) para determinar (que no estimar..) el desplazamiento entre estator y rotor.

En un varidor sin realimentación… nos ahorramos el coste del encoder… pero… el resultado… dependará de la ‘bondad’ del algoritmo utilizado por el fabricante del equipo.