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:

4 de octubre de 2012

Mapeado de entradas/salidas y configuración para un PLC Beckhoff 8150

En la entrada anterior preparé la comunicación con el PLC y, partiendo de ahí, voy a realizar el mapeado de entradas/salidas y la configuración del PLC para dejarlo listo para empezar a programar.

NOTA: La versión de TwinCAT que estoy utilizando es la 2.11.2220

El primer paso será ejecutar el TwinCAT PLC Control y generar un nuevo proyecto.


Nos pedirá el tipo de comunicación con el PLC y, según la tenemos configurada, deberemos marcar BCxx50 or BX a través de AMS.

3 de octubre de 2012

Preparativos para programar un PLC Beckhoff BC8150

Tengo entre manos un proyecto para el que hemos seleccionado un PLC Beckhoff BC8150. Es un PLC económico de gama baja que lleva incorporado un puerto serie RS232. En esta entrada voy a describir los pasos que tuve que dar para configurar la comunicación para programarlo.


En esta ocasión he instalado el software de programación TwinCAT (descargable gratuitamente desde aquí) en una máquina virtual. La conexión con el PLC será a través de un cable de programación serie, que ya tenía de proyectos anteriores. Mi portátil viene con puerto serie integrado, pero he notado que de vez en cuando pierde la comunicación, no recuperándola hasta reiniciar la máquina virtual. Sin embargo, usando un adaptador serie/USB con chipset Prolific el funcionamiento ha sido óptimo.

El BC8150 tiene dos ruedas numeradas donde se selecciona el protocolo y la dirección de comunicación. Si la dirección está entre 0 y 39 el protocolo será autoconfigurable. Entre 40 y 59 el protocolo será Modbus RTU. Para programar será necesario que la dirección sea inferior a 40 (más información aquí).

NOTA: Aunque físicamente hay dos conectores serie (el superior para programación con el cable de Beckhoff y el inferior para la conexión de dispositivos), internamente deben ser el mismo. Esto implica que si tenemos un dispositivo conectado al puerto DB9, para poder programar deberemos desconectarlo.

Con mi PLC alimentado y el cable serie conectado puedo empezar a configurar la comunicación. Sobre el icono de TwinCAT, con el botón derecho, pulso sobre Properties.

6 de julio de 2012

Midiendo el tiempo de arranque de una máquina con un script en WinCC Flexible

Hace ya unas semanas un lector me hizo una consulta sobre cómo medir el tiempo de arranque de una máquina con un script en WinCC Flexible. En su momento no tuve tiempo de responderle, pero he hecho una prueba y aprovecho para publicarla en el blog.

Lo que se pretende es visualizar en una pantalla el tiempo de arranque de una máquina. No existe la posibilidad de modificar el programa PLC, con lo que toda la programación deberá hacerse sobre WinCC Flexible.

Con este planteamiento lo primero es localizar dos variables en el programa PLC que nos sirvan para identificar los momentos de inicio y fin de arranque. Para mi ejemplo he enlazado dos variables llamadas INICIO_CICLO y FIN_CICLO que cumplirán esta función y mediante dos botones desde el HMI simularé su activación. También crearé con formato Long tres variables internas, una para el tiempo de inicio (TIEMPO_INICIAL), otra para el tiempo final (TIEMPO_FINAL) y la tercera para la diferencia entre ambos (TIEMPO_MEDIDO), que será el tiempo de arranque buscado.


Estas variables deberemos enlazarlas desde el HMI, seleccionando en su configuración Ciclo continuo y ajustando el Tiempo de adquisición al más bajo posible: 100 ms. Así el panel estará leyendo cada 100 ms el valor de estas variables desde el PLC. Por lo tanto es importante que estas variables en el PLC estén activadas durante más de 100 ms.

27 de junio de 2012

Ajustando una fibra de detección de color Keyence CZ-V21AP con cabezal CZ-H32

En un proyecto reciente hemos tenido la necesidad de colocar un sensor para distinguir entre varios tipos de piezas a través de su color. Las piezas tenían formas similares pero su acabado superficial era plástico verde o azul, o metálico brillante. El sensor elegido para realizar esta función fue una fibra óptica de Keyence, compuesta por un amplificador referencia CZ-V21AP y un cabezal referencia CZ-H32. En esta entrada voy a explicar, a modo de guía, cómo he realizado la configuración y su calibración.

Imagen del amplificador (disculpad la mala calidad de las fotos)

Imagen del cabezal

29 de mayo de 2012

Trends en RSLogix5000

Una de las herramientas que se han vuelto imprescidibles en mi trabajo diario con RSLogix5000 son los Trends (tendencias). Sirven para representar gráficamente a modo de osciloscopio o analizador lógico cualquier variable a la que tengamos acceso en nuestro programa PLC. Los Trends se guardan en el proyecto de RSLogix5000 sin que afecten al PLC. Las capturas de datos que hagamos podremos almacenarlas en un formato propio o exportarlas a formato CSV, aceptable por cualquier programa de hoja de cálculo.

Para crear un Trend vamos al árbol de nuestro proyecto y con el botón derecho sobre la carpeta Trends seleccionamos New Trend...

A continuación nos pedirá un nombre, una descripción y un periodo de muestreo (modificables más adelante).

27 de abril de 2012

Comandando variadores Sew Movidrive MDX61B a través de DeviceNet

Recientemente he tenido que poner en marcha unos variadores Sew Movidrive MDX61B para comandar unos motores acoplados a husillos, para realizar movimientos de traslación y elevación en una máquina. Para este uso la configuración que hay que hacer es muy sencilla, lejos de las posibilidades que se le pueden exprimir a estos variadores: control vectorial o modo servo. Como van a estar integrados en una red DeviceNet, les he instalado la correspondiente tarjeta de comunicaciones DFD11B. En estas notas voy a resumir los pasos que he dado para comandarlo desde un PLC CompactLogix.

Variadores Sew Movidrive MDX61B (perdón por la calidad de las fotos)
La instalación de los variadores está bien explicada en el completo manual de instrucciones de funcionamiento (en español). Si seguimos sus recomendaciones no tendremos la más mínima complicación, así que me voy a centrar en la manera en la que los he configurado.

La tarjeta de comunicaciones DFD11B tiene una serie de interruptores DIP para configurarla. Con ellos le asignaremos una dirección de nodo en la red DeviceNet (interruptores NA), la velocidad de comunicación (interruptores DR) y la longitud de los datos que se transmitirán (interruptores PD). En mi caso tengo tres variadoes que les he asigando las direcciones 10, 15 y 20. La velocidad de comunicación la he fijado en 250 kbps y he asignado un 3 a los datos de proceso.

6 de abril de 2012

Mapeando una red DeviceNet en un controlador Logix5000

Cuando insertamos un escáner DeviceNet en un proyecto de RSLogix 5000, en las variables de ámbito del controlador (Controller tags) aparecen tres tags que nos servirán para establecer el diálogo con todos los elementos de la red. Local:1:I se refiere a los datos que leemos de la red, Local:1:O a los datos que vamos a escribir y Local:1:S a variables que nos van a permitir diagnosticar el estado de nuestra red (el 1 después de Local quiere decir que nuestro escáner está en el slot 1 del bastidor).

Tags para un escáner DeviceNet 1756-DNB
Los distintos dispositivos que hayamos configurado en nuestra red se mapearán en Local:1:I.Data para los datos de entrada (lo que leemos de los dispositivos) y en Local:1:O.Data para los datos de salida (lo que vamos a escribir). Estas variables son tablas de tipo DINT de tamaño máximo prefijado para cada tipo de escáner. Por ejemplo, para un escáner 1769-SDN de la gama CompactLogix tenemos 90 DINT (360 bytes) para entrada y 90 DINT para la salida, y para el escáner 1756-DNB de la gama ControlLogix esta capacidad se amplía a 124 DINT (496 bytes) para la entrada y 123 DINT (492 bytes) para la salida.

29 de marzo de 2012

Unas notas sobre redes DeviceNet

Recientemente he estado trabajando en instalaciones donde he tenido que poner a punto varias redes DeviceNet. Esta entrada es una recopilación de las acciones que he tenido que realizar, así como de las dificultades que surgieron y cómo las he solucionado.

DeviceNet es un bus de campo desarrollado por Allen-Bradley basado en el estándar CAN (Controller Area Network). Físicamente se compone de cuatro o cinco hilos de color rojo (CAN_V+), negro (CAN_GND), azul (CAN_HIGH), blanco (CAN_LOW) y, opcionalmente, la malla de color verde (CAN_SHLD). El cableado puede tener una longitud de 100, 250 o 500 metros, dependiendo inversamente de la velocidad de comunicación (500, 250 o 125 kbps) y del tipo de cable que usemos. En cada red DeviceNet se pueden colocar hasta un máximo de 64 nodos (numerados del 0 al 63). El protocolo DeviceNet da mayor prioridad a los nodos con una numeración más baja.

El modo de funcionamiento más habitual es maestro/esclavo con un único maestro por red, aunque puedan coexistir varios o establecerse comunicaciones de igual a igual (peer to peer). Entre los cables rojo y negro deberemos suministrar alimentación de 24 V. Es importante que provenga de una fuente de alimentación de calidad y es muy recomendable que usemos una fuente independiente para alimentar el bus. Esta misma alimentación puede usarse para alimentar dispositivos en el bus de campo (finales de carrera, detectores de proximidad, fotocéluas, etc).

El sistema de cableado DeviceNet usa una topología de línea de troncal/línea de derivación:

Imagen sacada del Manual de planificación e instalación DeviceNet de Allen-Bradley

2 de marzo de 2012

Comunicación por puerto serie a través de DeviceNet: ArmorPoint RS-232 ASCII

En la entrada anterior programé la comunicación serie de un lector de códigos de barras con un PLC CompactLogix a través de su puerto serie integrado. Ahora la aplicación ha cambiado y debo hacer la comunicación utilizando una tarjeta ArmorPoint RS-232 ASCII a través de DeviceNet.

Los ArmorPoint de Rockwell son módulos de periferia distribuida disponibles para buses de campo DeviceNet, ControlNet, EtherNet/IP o Profibus DP. A la cabecera DeviceNet que tengo disponible, referencia 1738-ADN18, le voy a acoplar una tarjeta de comunicaciones 1738-232ASCM12, que es una versión más robusta de una tarjeta 1734-232ASC, compartiendo la misma electrónica, por ello la documentación de referencia será la de esta última tarjeta: POINT I/O ASCII Modules 1734-232ASC, 1734-485ASC (PDF). El conjunto ensamblado de la cabecera ArmorPoint con mi tarjeta de comunicación serie tiene el siguiente aspecto:

Cabecera ArmorPoint con inteface serie sobre mi mesa, lista para hacer pruebas
(disculpad la calidad de las conexiones, a pesar del mal aspecto el conjunto funcionó sin problemas).

13 de febrero de 2012

Probando el puerto serie integrado en los PLC Logix5000

Recientemente he estado probando la comunicación entre un PLC Rockwell CompactLogix L35E y un lector de códigos de barras por puerto serie RS-232 en modo ASCII. En esta entrada voy resumir la configuración del puerto serie y la programación necesaria.

Todos los PLC de la gama CompactLogix vienen con un puerto serie incorporado. Para controlarlo existen instrucciones específicas Logix5000 que simplifican mucho el trabajo y que vienen detalladas en el documento de Rockwell "Instrucciones generales de los controladores Logix5000" (en español, en formato PDF), en el capítulo 17. Para hacer la configuración del puerto, el documento de referencia es "Cadenas ASCII de controladores Logix5000" (también en español y en PDF).

Controlador CompactLogix L35E con puerto serie incorporado
El lector del código de barras determina que voy a leer cadenas con el carácter de terminación CR (Carry Return), representado como '$r' o también como el código ASCII 13; la longitud de la trama a recibir o enviar no será superior a 256 caracteres y los parámetros de comunicación serie serán 9600 baudios, 8 bits, sin paridad y un bit de parada.

17 de enero de 2012

Probando un adaptador USB/MPI chino

Recientemente, en el foro de Siemens en infoPLC, me enteré de la existencia de un adaptador USB/MPI muy económico que se vende a través de ebay, total que hemos comprado uno. El pedido tardó unas tres semanas en llegar (dentro del plazo que especifica el vendedor). En el paquete venía el adaptador y un mini CD con los controladores:

(pulsar encima para ampliar)

La primera impresión es bastante lamentable, leer For SEMIES S7-300 no hace presagiar nada bueno. El cable mide unos tres metros y el adaptador en sí apenas tiene peso. La carcasa tampoco parece muy sólida y lo primero que he hecho es abrirla para curiosear la electrónica:

16 de enero de 2012

Modificando tiempos en un PLC S7 desde WinCC Flexible RT

Recientemente me ha tocado actualizar el programa de una máquina que llevaba un panel táctil realizado en ProTool. En este proyecto hay una serie de tiempos configurables desde el panel y me llamó la atención que estaban enlazados a variables en formato WORD, haciendo la conversión a formato S5TIME en el PLC, con segmentos como el siguiente:


El valor se recibe en un WORD, se copia en un INT, que vuelve a ser un WORD después de la instrucción I_BCD, se le añade la base de tiempo con la instrucción WOR_W, para finalmente moverlo a la variable en formato S5TIME definitiva.

No es la primera vez que me encuentro con conversiones similares, pero como no estaba del todo seguro de cómo trata WinCC Flexible directamente las variables de tipo S5TIME, pues nada mejor que hacer una sencilla prueba.