7 de octubre de 2012

Comunicación entre un PLC Beckhoff BC8150 y un panel Pro-face GP4105

En las entradas anteriores me preparé para la programación de un PLC Beckhoff BC8150. Al puerto serie de este PLC, haciendo la función de HMI, voy a conectar un panel táctil Pro-Face GP4105. En esta entrada voy a explicar los pasos que he dado para comunicar ambos dispositivos.


El protocolo de comunicación que se va a utilizar es Modbus RTU. En el PLC simplemente hay que darle una dirección entre 40 y 59 en los interruptores rotatorios que tiene en el frontal (con una dirección superior a 40 el PLC se configura automáticamente en Modbus RTU).

El cable de comunicación tendrá por un extremo un conector DB9 macho para el PLC y el otro lo embornaremos en el panel, con el siguiente conexionado:


Vamos ahora por el panel; no es primera vez que trabajo con esta gama de paneles, en esta entrada probé el mismo panel pero con interfaz Profibus. Para programarlo se usa el software de Pro-Face GP-Pro EX Limited Edition, que es gratuito. Se puede obtener en el portal de descargas de Pro-face con un usuario y contraseña que te debe facilitar tu distribuidor. Si te registras en el portal, la versión que te bajarás es la GP-Pro EX Trial, que no permite transferir el programa al panel.

Entonces ejecutamos el GP-Pro EX Limited Edition y le diremos que vamos a crear un proyecto nuevo.


Aceptamos y seleccionamos el modelo de panel que tengamos, en mi caso el GP4105, y la orientación en la que lo vamos a instalar, siendo Landscape (horizontal) lo adecuado para mí.


Al pulsar Next nos preguntará por el protocolo de comunicación con el PLC. Entre la amplia gama de posibilidades seleccionaremos Modbus-IDA.



Se creará a continuación el proyecto, visualizando la pantalla System.


Pulsamos sobre el enlace Device/PLC1 para entrar en los detalles de comunicación. Aquí simplemente deberemos cambiar la velocidad a 9600 baudios


y en la parte inferior, al lado de la casilla PLC1 pulsamos en el pequeño botón que hay justo a la derecha (entre Device Name y Settings).

Aparecerá una ventana donde deberemos especificar la dirección que hayamos ajustado en los interruptores rotativos del PLC, en mi caso la 40.


Y listo, la comunicación ya está lista. Bastará con conectar el cable serie al panel y al PLC, y alimentar el conjunto para que estos se entiendan perfectamente. El panel tendrá acceso al área de marcas (flag area) del PLC. Si nuestra comunicación involucra pocas variables podemos direccionarlas a mano. Por ejemplo, la dirección %MX0.0 del PLC será la 416385.0 para el panel, estando mapeado el resto del área de marcas a continuación. Deberemos tener en cuenta que el área de marcas del PLC está direccionado en bytes y el panel, por defecto, direcciona en words.

Pero introducir variables a mano en el programa del panel no es práctico. Para hacernos la vida más sencilla, David, un entusiasta colaborador del fantástico portal de automatización infoPLC ha programado una pequeña y útil aplicación que traduce del formato de exportación de TwinCAT a un formato aceptado por el GP-Pro EX. El enlace para descargar la aplicación la tienes en este hilo del foro de infoPLC.

El primer paso será crear las variables que queramos exportar al panel como variables globales en TwinCAT.


Vamos entonces al menú Proyecto -> Exportar...


Y seleccionamos las variables globales.


Y le damos el nombre de "VARIABLES GLOBALES.EXP".


El contenido del fichero tendrá un contenido como el siguiente:

(* @NESTEDCOMMENTS := 'Yes' *)
(* @GLOBAL_VARIABLE_LIST := 'Variables_globales' *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '2048' *)
(* http://notasdeautomatizacion.blogspot.com *)
VAR_GLOBAL
Contador AT %MW0: INT;
Rearme AT %MX2.0: BOOL;
En_Origen AT %MX2.1: BOOL;
END_VAR
(* @OBJECT_END := 'Variables_globales' *)
(* @CONNECTIONS := Variables_globales
FILENAME : ''
FILETIME : 0
EXPORT : 0
NUMOFCONNECTIONS : 0
*)

Ahora ejecutamos el programa de David y vamos al menú Herramientas -> Generar variables globales


A continuación pulsamos en el botón Generar todas las variables


Seleccionamos el directorio donde tengamos el fichero "VARIABLES GLOBALES.EXP" generado previamente.


Y obtendremos un nuevo fichero llamado "Variables GP.csv", que está en un formato aceptado por el GP-Pro EX.

GP-Pro EX
"File Type","SymbolVariable"
"File Version","1","0"
"Name","Index","Type","Internal/External","Address","Keep","Comment"
Contador,,WordAddress,PLC1,416385,,
Rearme,,BitAddress,PLC1,"416386,0",,
En_Origen,,BitAddress,PLC1,"416386,1",,

Volvemos ahora al GP-Pro EX y vamos al menú Common Settings -> Symbol Variable


Se abrirá la pantalla Symbol, donde deberemos pinchar en el enlace Utility en la parte derecha.


Y seleccionar Import -> GP-Pro EX Format


Y buscamos el fichero "Variables GP.csv"


Ya tenemos nuestras variables listas para ser usadas en el programa del panel.


Como conclusión puedo decir que comunicar un PLC Beckhoff BC8150 con un panel Pro-Face GP4105 es sencillo, rápido y fiable. Sin embargo existe un inconveniente. Debido a que los puertos serie de programación y de comunicación del PLC son internamente el mismo, no se puede estar en línea con el PLC y tener el panel enchufado simultáneamente. Es más, como el protocolo de comunicación difiere entre el modo de programación y el modo del panel, deberemos cambiar la configuración de los interruptores rotatorios cada vez que queramos cambiar de un modo a otro, lo cual es bastante engorroso.

En descargo diré que el comercial de Beckhoff me advirtió de esta situación y, a decir verdad, me arrepiento de no haber elegido el PLC y el panel con puertos ethernet. El ahorro de precio no compensa la pérdida de comodidad al programar.

Como siempre, cualquier comentario será bienvenido.

1 comentario:

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