26 de diciembre de 2011

Probando un servomotor Posmo A para posicionamiento simple (parte 2ª)

Habiendo dejado en la entrada anterior el Posmo configurado, ahora toca realizar un proyecto en Step7 para controlarlo. Como maestro Profibus voy a usar un PLC S7-315-2DP al que voy a conectar una tarjeta simuladora de entradas / salidas digitales para dar las órdenes necesarias al servomotor y visualizar su estado.


Alimento el PLC y el servomotor, conecto el cable Profibus entre ambos y al borne 1 del servomotor un detector inductivo que hará las veces de leva de referenciado.

Ejecuto el Administrador Simatic y creo un proyecto vacío. Inserto un equipo Simatic 300 y abro la configuración hardware. Inserto mi referencia de PLC, la tarjeta simuladora, creo una red Profibus y finalmente añado el Posmo, con lo que me quedaría algo como esto:


Al PLC le he asignado la dirección Profibus número 2 y al servomotor la dirección 3, que debe coincidir con la que hayamos configurado con los microinterruptores del Posmo. La velocidad la dejo en 1,5 Mbps. Es importante que tanto la dirección inicial hardware de entradas como la de la salidas coincidan, ya que en la programación solo podremos especificar una. Para mi ejemplo he dejado la 256.

Al transferir la configuración deben desaparecer los fallos de comunicación de nuestra red Profibus, luciendo en verde el led de la parte trasera del Posmo. En caso contrario verificar el conexionado, el estado de las resistencias terminadoras y las direcciones asignadas. En mi caso no tuve ninguna dificultad.

Ya nos podemos concentrar en la programación. Siemens tiene en su página web disponible un ejemplo de programación. De este ejemplo he usado dos FB, el FB10 y FB11 que ya tienen programada la comunicación con el Posmo. El primero sirve para controlar el Posmo: referenciar, posicionar, jog, fallos, etc., y el segundo permite leer o escribir parámetros de configuración.

Yo he incorporado estos dos FB en mi proyecto y el FB10 lo usaré para referenciar, posicionar en MDI y gestión de fallos. Entre la información del Posmo que me ofrece el FB10 no está la posición instantánea, así que necesito el FB11 para leer el parámetro 40, que contiene dicho dato. Todas las variables referidas al control del Posmo las he agrupado en un bloque de datos (DB9).

Los parámetros de entrada que he necesitado para el FB10 son:

  • I_O_Adresss - Dirección hardware del Posmo.
  • Initialization - Para la puesta en servicio del Posmo, deberá ser lo primero que activemos.
  • Referencing - Señal que nos permitirá definir el punto actual donde se encuentre el servomotor como cero. En mi ejemplo no lo voy a usar, puesto que usaré una secuencia de referenciado.
  • Jogging_1 y Jogging_2 - Señales para hacer girar el servomotor en un sentido o en el contrario mientras estén activadas.
  • Jogging_override - Limitación de velocidad en porcentaje para los movimientos de Jog.
  • Start - Señal para iniciar una secuencia de desplazamiento. Debe ser activada al menos un ciclo de scan después haber modificado los parametros del bloque a ejecutar.
  • No_intermediate_stop y No_stop - Señales para indicar que no se realicen paradas en el cambio de bloques. En el ejemplo de Siemens las mantiene siempre a uno y las he dejado igual.
  • Automatic_operation, External_blockchange, Read_in_enable y Brake_release - No son necesarias en mi ejemplo.
  • Fault_acknowledgement - Esta señal permite borrar los fallos y avisos del Posmo. También tiene el efecto de detener el servomotor si está en movimiento.
  • Block_number - Número de bloque que se ejecutará cuando se dé la señal Start. Para mi ejemplo usaré el bloque número 3 para el posicionamiento en MDI y el 13 para realizar el referenciado.
  • Override - Limitación general de velocidad en porcentaje.
  • Start_byte - Condiciones auxiliares de inicio, no necesarias en mi ejemplo.
  • MDI_Type - Si esta señal está a cero, el desplazamiento se hará en modo absoluto. Si está a uno el movimiento será realizado relativo a la posición actual del servomotor. Para mi ejemplo usaré el modo absoluto.
  • MDI_Velocity y MDI_Acceleration - Velocidad y aceleración del movimiento en MDI expresadas en porcentaje respecto de la velocidad y aceleración máximas configuradas.
  • MDI_Position - Cota en formato REAL para realizar el posicionamiento en MDI.
  • Timer_for_wait - Temporizador que usa internamente el FB10, no debemos usarlo en otra parte del programa.
  • FB_Coordination - Esta señal sirve para coordinar los distintos FB de acceso al Posmo. Entiendo que es una especie de semáforo para que los FB no se pisen. No debemos escribir en ella en ninguna parte del programa.
El FB10 me devuelve la siguiente información:
  • Warning y Fault - Señales que nos indican si existe alguna advertencia en el Posmo o si este está en fallo.
  • Ready - Señal que nos indica que el Posmo está listo para el servicio.
  • Status_word - Palabra donde cada bit indica el estado del Posmo, más abajo lo describiré.
  • Actual_block - Número de bloque actualmente seleccionado en el Posmo.
  • Warm_number, Warm_infoFault_number - Códigos numéricos que nos indican, cuando hay un fallo o advertencia, qué está pasando en el Posmo. Estos códigos están descritos en la documentación.
En el Status_word tenemos la siguiente información:
  • Bit 0 - Sin error de seguimiento
  • Bit 1 - No usado
  • Bit 2 - En posición de consigna.
  • Bit 3 - El servomotor está referenciado
  • Bit 4 - El servomotor aceptó la secuencia de desplazamiento.
  • Bit 5 - El servomotor se está moviendo.
  • Bit 6 - El servomotor está ejecutando una secuencia de desplazamiento.
  • Bit 7 - Alimentación de potencia presente.
  • Bit 8 - Posmo alimentado.
  • Bit 9 - Posmo listo para el servicio.
  • Bit 10 - Servicio habilitado
  • Bit 11 - Posmo en fallo
  • Bit 12 - Ningún DES2 aplicado
  • Bit 13 - Ningún DES3 aplicado
  • Bit 14 - Posmo en bloqueo de conexión.
  • Bit 15 - Posmo en alarma.
Para obtener la posición instantánea del Posmo llamo al FB11 como sigue:


En la llamada indico la dirección hardware del Posmo, el número de parámetro a leer, le indico que quiero leer y no escribir, y obtengo en formato DWORD el parámetro pedido. Tenemos que tener la precaución de solo dar por buena la lectura cuando el valor de coordinación (FB_Coordination) tenga valor cero.

En mi proyecto de prueba he hecho toda la programación en el FC50. Las distintas órdenes las he dado desde las entradas digitales, que deberán ser adaptadas para un proyecto "real".

El proyecto de Step7 lo tienes aquí y si quieres echar un vistazo a la parametrización del Posmo también está disponible.

En el pasado he programado varios Posmo A de esta manera y hasta ahora no he tenido el más mínimo problema. Si tienes alguna sugerencia o ves algo que no esté del todo bien, te agradeceré que lo comentes.

1 comentario:

  1. Muy buenas germán, sigues con este blog en activo? te he mandado un correo con una duda con respecto a este proyecto, ya que cuando le doy click para echar un vistazo al proyecto, me direcciona a mi correo electronico.
    Un saludo.

    ResponderEliminar

Por favor, no pidas copias de programas comerciales, licencias o números de serie.