7 de enero de 2010

Comunicación Profibus entre un PLC Beckhoff CX9010 y un servomotor Festo MTR-DCI (parte 1ª)

En mi PLC Beckhoff CX9010 tengo pinchada una tarjeta maestra de Profibus EL6731. Con ella voy a controlar un servomotor Festo MTR-DCI, exactamente el mismo modelo que probé en esta entrada, solo que en aquella ocasión el control lo hacía desde un Siemens S7-300.

Empecemos por instalar los ficheros de configuración GSD del servomotor. Para ello vamos al CD que viene con el servomotor (o en la web de Festo) y los copiamos al directorio C:\TwinCAT\Io\Profibus (la ruta depende de donde hayamos instalado el TwinCAT).


NOTA: Voy a suponer que el servomotor tiene dirección Profibus 6 y una configuración similar a la mostrada en esta entrada.

Ahora voy a configurar la red Profibus para comunicarme con el servomotor. En el TwinCAT System Manager, selecciono:
Configuración E/S => Dispositivos de E/S => Dispositivo 4 (EL6731)
y voy a la pestaña 'EL6731'.


Dejo la dirección Profibus 1 para la tarjeta EL6731 y ajusto la velocidad a 12 megas (el servomotor la ajusta automáticamente), el resto de parámetros los dejo tal y como están.
Vamos a introducir nuestro servomotor. Botón derecho sobre 'Dispositivo 4 (EL6731)' y pulsamos sobre 'Agregar Box...'


Buscamos en el árbol de componentes, dentro de Festo, nuestro servomotor, que es el 'Festo MTR-DCI DP-V0' y pulsamos OK (si no aparece comprobar que hemos colocado los ficheros de configuración GSD en el directorio correcto).


Ya aparece el servomotor como un Box en el árbol de componentes.


Lo seleccionamos y vamos a la pestaña 'Profibus', donde le asignamos la misma dirección Profibus que le hayamos puesto al Servomotor, en mi caso la 6.


Pulsamos con el botón derecho sobre el box del servomotor y seleccionamos 'Agregar módulo...'.


Selecciono 'FHPP Standard'.


Compruebo el tipo de datos que vienen configurados, tanto para la entrada como para la salida, y en ambos casos es una tabla ('Array') de 8 bytes (USINT). Para comprobarlo seleccionar Entradas => FHPP Standard_0_0 y Salidas => FHPP Standard_1_0.


A continuación voy a las variables globales de mi proyecto y creo dos tablas de 8 USINT, una en la zona de entradas y otra en la zona de salidas (verifico previamente que estén en una zona que no use ninguna otra tarjeta).
VAR_GLOBAL

(* Variables para leer y escribir en el servomotor *)
MTR_DCI_E AT %IB0: ARRAY[0..7] OF USINT;
MTR_DCI_A AT %QB0: ARRAY[0..7] OF USINT;

END_VAR
Ahora, estas variables que acabo de crear las voy a vincular al servomotor. Selecciono Entradas => FHPP Standard_0_0, en la pestaña 'Variable' pulso el botón 'Vinculado a'.


Selecciono la variable de entradas y a continuación repito el proceso para las salidas.



Ya está la configuración terminada, solo nos queda activarla con el botón correspondiente.


Ahora, si todo ha ido correctamente, al ponernos sobre la pestaña 'En línea' podremos ver los valores instantáneos que estamos leyendo y escribiendo en el servomotor. Por ejemplo, si movemos el eje del servomotor con la mano podremos ver como los últimos 4 bytes de las entradas varían, puesto que son la lectura del encóder del servomotor.

Terminada la configuración, en una próxima entrada me meteré con la programación.

Cualquier comentario será bienvenido.

2 comentarios:

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