domingo, 30 de junio de 2013

Comunicación S7-1200 y un PLC Unitronics en Modbus TCP

Hoy me he puesto "manos a la obra" dispuesto a comunicar un S7-1200 de Siemens con un PLC V350 de Unitronics.

Conozco en detalle la programación de los PLC's de Siemens, sin embargo, mi experiencia con los autómatas programables de la firma Unitronics se limita a unas horas de "jugueteo" con su software VisiLogic y un V350, no obstante, creo que es suficiente como para llevar a buen puerto la siguiente actividad.
Para la experiencia he utilizado el ejemplo de aplicación que Unitronics dispone en su web (descargar aquí), al cual he realizado pequeños cambios para comprobar que la comunicación es correcta mediante la activación de salidas en ambos PLC's desde las entradas del contrario.
Para el montaje se han utilizado los siguientes componentes hardware:
  • Un S7-1214 con  firmware 2.2.
  • Un OPLC Unitronics V350 al cual se le ha añadido una con tarjeta de comunicación Ethernet.
  • Todo el conjunto se ha conectado con cables Ethernet a mi red doméstica a través de un router convencional. 
  • En un PC se ha instalado el software:
    • VisiLogic 9.5.0 para la programación del cotrolador Unitronics
    • TIAA Portal 11 para la programación del controlador de Siemens
La comunicación se realiza bajo el protocolo Modbus sobre el medio físico de una red Ethernet. El S7-1200 permite este tipo de comunicación a través del puerto Ethernet que tiene incorporado de serie, sin embargo, el PLC Unitronics requiere una tarjeta específica que se debe insertar en su interior.
En este caso el PLC Unitronics actúa como Servidor y el S7-1200 como Cliente.
Se han mantenido las direcciones IP que dispone el ejemplo facilitado por Unitronics, no obstante pueden utilizarse otras diferentes, siempre que se hagan las modificaciones pertinentes en los programas de ambos PLC's.
El intercambio entra zonas de memoria de ambos PLC's se realiza de la siguiente forma:
El PLC Unitronics envía datos desde los registros MI3, MI4 y MI5 y el S7-1200 los recibe en el Bloque de Datos 2 (DB2) en las variables (filas) que tienen el mismo nombre.
De igual forma el S7-1200 envía datos a través de las variables MI0, MI1 y MI2 de su bloque de datos DB2, y el Unitronics las recibe en los registros MI0, MI1 y MI2 respectivamente.

 

El programa de prueba.

Para comprobar que el intercambio de información entre ambos PLC's es correcto, han realizado dos sencillos programas de usuario sin modificar nada del programa de ejemplo de Unitronics.
Envío de datos PLC Unitronics --->> S7-1200
1- Mediante el VisiLogic se abre el archivo MASTER-SLAVE UNITRONICS.vlp
2- Si es necesario (en nuestro caso si lo ha sido), se adapta el hardware del ejemplo al del equipo real que se disponga. Para ello se hace doble clic en la opción "HW Configuration", del árbol de proyecto, y se selecciona el PLC y el sistema I/O que trae de serie.
2- Se observa que hay dos bloques o módulos de programa. La subrutina MODBUS_COMM es la que establece las condiciones de comunicación y, en principio, no debe ser modificada. La rutina principal ! Main Routine tiene un pequeño programa que inicializa la tarjeta Ethernet con una dirección IP y establece un nombre para el PLC. Además en esta rutina se hace la llamada a las subrutina MODBUS_COMM.
3- Para evitar trabajar con las dos rutinas del ejemplo, se crea una nueva que hemos llamado "Programa usuario".
En ella escribimos un pequeño programa que va a permitir enviar datos desde el PLC Unitronics, a través del registro MI3, al bloque de datos  DB2 del S7-1200. En este caso, cada vez que se accione una de las entradas del V350, se escribirán los números 255, 170 y 0 en el registro MI3.

4- La nueva subrutina se debe llamar desde el bloque principal.
5- Se carga el programa en el PLC.
6- El siguiente paso es elaborar el programa de recepción en el S7-1200. Para ello se abre el TIA Portal y el proyecto del ejemplo SIEMENS_MODBUS R02. De igual forma que en el PLC Unitronics, lo primero que se debe hacer es adaptar el hardware al autómata real que se disponga. Para ello se hace clic con el botón derecho del ratón sobre el equipo que aparece en la Vista de dispositivos del TIA Portal y en el cuadro de diálogo emergente, se elige la referencia exacta de equipo físico disponible.
7- El programa del ejemplo consta de tres bloques: el OB1 Main en el que se llaman las funciones de comunicación en modo Modbus_Cliente y dos bloques de datos, el DB2 y el DB3.
8- De igual forma que se ha realizado en el Unitronics, se crea un nuevo bloque (FC1) donde escribir el programa para recibir los datos del PLC Unitronics. 
Con una simple operación de transferencia (Move) se pasa el valor del registro MI3 del DB2 al Byte de salidas QB0. Así, cuando este recibe el dato MI3 del PLC Unitronics, las salidas digitales del S7-1200 se activan en función del valor de dicho dato.
8- No se debe olvidar llamar a la función FC1 el el programa principal (OB1) y transferir el programa al PLC.
Ya es posible comprobar el funcionamiento del conjunto. Para ello ambos PLC's deben estar en modo RUN y accionar las entradas del Unitronics utilizadas en el programa. Si todo es correcto deben activarse las salidas del S7-1200 correspondientes al dato transferido.

Envío de datos S7-1200 --->> Unitronics
Para el intercambio de datos a la inversa, es decir desde el S7-1200 al PLC Unitronics, se han añadido los siguientes segmentos en los bloques o subrutinas de usuario creadas anteriormente.
En el  S7-1200 se escriben tres segmentos para transferir un valor numérico al registro MI1 del bloque de datos DB2.


En el Unitronics se inserta la función NUM to BIT para pasar el dato recibido en MI1 a 8 bits de salida a partir de la dirección O0.


No hay comentarios:

Publicar un comentario