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.


jueves, 20 de junio de 2013

Configuración de un red PROFINET

Nuevo trabajo de uno de nuestros alumnos. En este caso se trata de la integración de varios dispositivos en una red PROFINET para controlar el funcionamiento y regulación de velocidad de un motor trifásico de inducción.

Hardware utilizado:
  • PLC's: S7-1214 C, S7-300
  • Panel de operación: TP 177B Color PN/DP
  • Periferia descentralziada: ET200S PN
  • Variador de velocidad: Sinamic G120 PN
  • Switch: Scalance.
Software utilizado:
  • Simatic Step 7 V5.5
  • Simatic TIA Portal V12
  • WinCC Flexible 2008
  • Simatic Starter
Realizado por el alumno: Candido Martín Gómez (2013)


Entrenador para servomotor con un accionamiento Unidrive.

El compañero Victor Hernández ha terminado el entrenador (que comenzó Jesús Gómez hace algún tiempo) para el control de un servomotor a través de un Driver Unidrive de Control Technics. Aquí se puede ver un vídeo en funcionamiento.
En nuestro instituto se "respira" automatización. ¡¡¡Genial!!!

miércoles, 19 de junio de 2013

Nuevas maquetas programadas por los alumnos.

Nueva versión, más pequeña pero con más prestaciones, de nuestra estación de taladrado y avellanado, construida con piezas Fischertechnik.
El control se realiza mediante un S7-300 de Siemens, programado en KOP a partir de un GRAFCET, y un sencillo panel de operación realizado mediante WinCC Flexlible.
También hemos mejorado la versión de nuestra maqueta del ascensor con puerta. En este caso está controlado mediante un S7-300 en lenguaje KOP a partir de un GRAFCET.

lunes, 17 de junio de 2013

Impresora-Fresadora 3D (Probando, probando)

¡¡¡Ya se mueve!!!
Después de numerosos problemas mecánicos y de ajuste, el sistema de control de ejes que está construyendo nuestro compañero Miguel Ángel Casanova, ya está funcionando. 
A continuación se muestra un vídeo en el que se muestra el movimiento de los motores de los ejes mediante una tarjeta Arduino.
También colgamos unas cuantas fotos del proceso de montaje. El siguiente paso consistirá en instalar un cabezal de fresado basado en un minitaladro tipo Dremel.
Primera prueba de movimiento.
 
Fotografías del proceso de construcción.




martes, 11 de junio de 2013

Comparaciones en KOP de tiempos S5TIME

En los autómatas S7-200 se pueden realizar, de forma muy sencilla y efectiva, operaciones de comparación para tratar los tiempos de los temporizadores. Dichos tiempos pueden ser comparados con variables o constantes y para ello basta con utilizar operaciones de comparación para números enteros y poner en sus valores de entrada (IN1-IN2), la referencia nemotecnia del temporizador (T1, T37, etc) y un número (o variable) con el tiempo a comparar, que debe estar escrito en función de la base de tiempos de temporizador. 
Así, en el siguiente ejemplo se muestra el temporizador T37, cuya base de tiempos es de 100 ms, el cual se compara para activar dos salidas (Q0.0 y Q0.1) a 100 x 100ms (10 segundos) y a 150 x 100ms (15 segundos) respectivamente.
Cuando uno migra al Step 7 de los S7-300 e intenta hacer algo similar a este tipo de comparaciones en lenguaje KOP, se da cuenta dicha programación no es tan inmediata como en sus "hermanos" menores los S7-20. No obstante, la comparación de tiempos en este lenguaje es posible y es lo que se explica a continuación.

Para poder realizar comparaciones de tiempos S5TIME en lenguaje KOP es necesario conocer algunos detalles técnicos sobre el formato que utilizan los temporizadores.

Diferencias en la forma de temporizar.
En los S7-200 la temporización se produce de "abajo hacia arriba". Es decir, cuando se activa el temporizador comienza a temporizar desde 0 hasta un tiempo máximo. Sin embargo, en los S7-300 la temporización se efectúa exactamente al revés de "arriba hacia abajo". Es decir, cuando el temporizador se activa, este descuenta desde el tiempo ajustado en el parámetro de preselección, bajando hasta 0. Si bien este detalle no es importante cuando se utilizan las acciones en formato de bit para activar y desactivar contactos asociados al temporizador, si que es de suma importancia para poder realizar la comparación tiempos.

Base de tiempos del formato S5TIME
En los S7-200, la base de tiempos se elige en función del tipo de temporizador (TON, TOF ó TONR) y el número que lo identifica. Es decir, no es lo mismo utilizar un T1 o un T37, ya que cada uno de ellos es de un tipo diferente (TONR y TON respectivamente) y funcionan con distintas bases de tiempo (10 y 100 ms, en este ejemplo). En este caso es absolutamente necesario consultar la hoja de características del PLC, para conocer los diferentes tipos de temporizadores y las bases de tiempo asociadas en función de el número del temporizador. En el formato S5TIME, la base de tiempos se selecciona automáticamente en función del tiempo ajustado en el parámetro TW del temporizador. Dicha base de tiempos se elige por rango según se muestra en la siguiente tabla:


Rango elegido Base de tiempos seleccionada
10ms 9s 9ms 10ms
10s 99s 999ms   (1M 39S 900MS) 100ms
100s  (1M 40S) 999s 999ms  (16M 39s) 1s
1000s (16M 40s) 9990s  (2h 46min 30s) 10s
A continuación se muestran varios ejemplos:
Valor de preselecciónTW Base de tiempos seleccionada
S5T#5ms 10ms
S5T#8s 10ms
S5T#11s 100ms
S5T#85s 100ms
S5T#200s 1s

Comparación de tiempos S5TIME.
Conociendo estos detalles, ya es posible efectuar comparaciones en KOP con los tiempos de los temporizadores S5TIME del STEP 7. Lo primero que se debe hacer es configurar el tiempo de preselección (1) el cual se escribe en formato S5TIME en la entrada PW del temporizador. Este dato sirve para seleccionar automáticamente la base de tiempos con la que se va a trabajar, según lo indicado en la tabla anterior, y además poner el "tope" con el que el temporizador va a trabajar. Por otro lado, es necesario asignar una marca del tamaño de una palabra en la salida DUAL del temporizador (2), ya que es la que se va a utilizar para realizar las comparaciones. A todos los efectos, dicha marca es el dato del tiempo del temporizador y debe ser univoca en el programa.
Ejemplo 1:
En este caso la base de tiempos seleccionada es de 100 ms ya que el tiempo de preselección del temporizador se ha ajustado a 10s. Así, cuando el temporizador se acciona mediante la entrada E124.1, la salida A124.0 se activa de forma inmediata y se mantienen así siempre que el tiempo del temporizador sea mayor o igual a 6 segundos (60 x 100ms). Dicho de otra forma, la salida se desactiva cuando han transcurrido 4 segundos desde que se activó el temporizador.
Es importante recordar que los temporizadores S5T temporizan de arriba a abajo. Es decir "descuentan" el tiempo hasta llegar a cero.

Ejemplo 2:
En este ejemplo la base de tiempos seleccionada es también de 100ms ya que el tiempo de preselección del temporizador es de 30S. En este caso se ha utilizado una comparación "menor o igual", de forma que la salida A124.2 se activa a los 10 segundos de poner en marcha el temporizador. Es decir, cuando el tiempo del temporizador es menor o igual a 20 segundos (200 x 100 ms).

Ejemplo 3:
En el siguiente ejemplo la base de tiempos es de 1s, ya que el tiempo de preselección que se ha asignado al temporizador es de 140S (2M20S). En esta ocasión se ha utilizado también una comparación "menor o igual", por lo que la salida A124.2 se activa cuando el temporizador baja de los 120 segundos (120 x 1s), o dicho de otra forma, cando han transcurrido 20 segundos de la activación del temporizador.
Resumiendo:
Como se deduce de los ejemplos anteriores, cuando se realizan comparaciones de tiempos de los temporizadores S7T es necesario conocer el tiempo de preselección (o tope) ajustado en el parámetro TW del temporizador, ya que con él se asigna de forma automática al base de tiempos utilizada y, además, es el tiempo máximo desde el que comienza la temporización. Así, desde que se activa el temporizador hasta que se produce la acción asignada al comparador, pasa un tiempo que resulta ser la diferencia del tiempo preajustado en TW y el asignado mediante la constante usada en el comparador. Así en los anteriores ejemplos el tiempo de la temporización es:
 
Tiempo de preselección TW Dato a comaprar Temporización
(Momento en el que se ejecuta la acción)
Ejemplo 1 S5T#10S 60 4 segundos
(40 X 100ms)
Ejemplo 2 S5T#30S 200 10 segundos
(100 x 100ms)
Ejemplo 3 S5T#140S 120 20 segundos
(20 x 1s)

martes, 4 de junio de 2013

Tutorial SCL (II)

En el anterior tutorial de SCL se mostraban algunos ejemplos de código SCL utilizando el condicional IF-THEN. Si bien su uso es adecuado para controlar el valor de variables de buena parte de las las aplicaciones de programación que se deben cumplir mediante el establecimiento de condiciones lógicas, no es la única forma de hacerlo. A continuación se muestra como realizar operaciones similares en la programación de los S7-1200 sin recurrir a uso de IF-THEN.
Los ejemplos muestran el código SCL y el programa en KOP del circuito "eléctrico" equivalente.
Ejemplo 1: Control de una salida a través  una entrada.
Código SCL: 
El valor de la salida es igual al valor lógico de la entrada. 
Equivalente en KOP:


Ejemplo 2: Asociación serie (AND) de dos entradas
Código SCL: 
La salida solamente se activa si se cumple la condición AND en las entradas.
 
 Equivalente en KOP:


Ejemplo 3: Asociación paralelo (OR) de dos entradas
Código SCL: 
La salida se activa mediante dos entradas conectadas en paralelo (OR)

 Equivalente en KOP:


Ejemplo 4: Uso de negaciones.
Código SCL: 
El valor de la salida es el contrario al de la entrada.

 Equivalente en KOP:

Ejemplo 5: Realimentación (Marcha-Paro).
Código SCL: 
La Entrada4 funciona como un pulsador de marcha. La Entrada7 como un pulsador de paro. Así cuando se acciona la Entrada4 la salida se pone a 1 y se mantiene mediante el contacto de realimentación conectado en paralelo con dicha estrada. Si estando en esta situación, se acciona la Entrada7, el valor de la salida es 0 y por tanto deja de realimentarse.
 Equivalente en KOP:

La tabla de variables utilizada en los ejemplos es la siguiente:
 El programa en en SCL ha sido escrito en un FC, el cual es llamado de forma incondicional desde el OB1 o bloque principal.

sábado, 1 de junio de 2013

Vídeo: Robot de soldadura con S7-300

Hemos actualizado la maqueta de nuestro robot de soldadura. Con ella los alumnos practican la programación del GRAFCET, el uso de contadores y operaciones de comparación.
Este es un vídeo de la maqueta programada por uno de nuestros alumnos.

Vídeo: Empaquetadora de productos

Estrenamos maqueta para una actividad práctica que antes solamente podíamos simular con las entradas y salidas del PLC. Aquí va un vídeo de nuestra "Empaquetadora de productos" programada por uno de nuestros alumnos.
Con esta maqueta se pretende que los alumnos practiquen la programación del GRAFCET con aprovechamiento de etapas por retorno y el uso de los contadores en la secuencia.