17 de octubre de 2011

Tres maneras de generar pulsos en un controlador Logix5000

Es raro que programando una máquina no sea necesaria una señal pulsante, generalmente para funciones de señalización. En controladores de Rockwell, por ejemplo del tipo SLC 500, podemos echar mano de bits de sistema que cumplen esta función. Sin embargo, en la gama de controladores Logix5000, si necesitamos un pulso deberemos generarlo nosotros. En esta entrada voy a proponer tres maneras de generar una señal pulsante de un segundo de duración: primero usando temporizadores (PULSO_TEMP), luego leyendo el tiempo del sistema (PULSO_SIS) y finalmente usando tareas periódicas (PULSO_TAREA).

El código en lógica de escalera para generar un pulso con temporizadores podría tener este aspecto:

(Pincha para ver mejor la imagen)

Uso dos temporizadores, uno para controlar el semiciclo activo del pulso y otro para el semiciclo inactivo, y a cada uno de ellos le asigno una duración de 500 ms. Esta es la opción que requiere más programación.

Otra forma de generar el pulso es leyendo el tiempo del sistema.

7 de octubre de 2011

Comunicación OPC con un PLC Logix5000 desde Visual Basic

Ya he hablado en el blog de comunicación OPC, en concreto en esta entrada traté el acceso a un WinAC desde Visual Basic. Ahora, aprovechando la configuración que tengo con SoftLogix sobre una máquina virtual, voy a hacer lo mismo.

Mi prueba consistirá en crear un proyecto para SoftLogix en el que definiré un par de tags, OPC_BIT y OPC_DINT, que me servirán para probar la comunicación. En el SoftLogix no voy a hacer nada más, simplemente le transferiré el proyecto, lo pondre en modo Run y monitorizaré el contenido de los tags. Luego generaré un enlace OPC con el RSLinx y desde un programa en Visual Basic leeré y escribiré en los tags del PLC.


Para establecer una comunicación OPC necesitaré un servidor OPC, y Rockwell nos lo proporciona integrado con el RSLinx, pero ojo, deberemos asegurarnos de que no sea la versión lite. Recomiendo echar un vistazo a este documento Cómo obtener resultados con RSLinx Classic (pdf) donde se especifica para qué sirve cada versión de RSLinx.

3 de octubre de 2011

Accediendo a un PLC Simatic a través de ethernet con Libnodave

En esta entrada usé la biblioteca libre Libnodave para acceder a un PLC S7-300 desde Visual Basic a través de un adaptador serie/MPI. Varios lectores me hicieron consultas sobre si era posible usarla para acceder a un PLC S7-300/400 a través de ethernet, pero al no tener disponible un controlador adecuado para hacer pruebas pues no tenía respuesta. Sin embargo, de la entrada anterior tengo preparada una máquina virtual con WinAC RTX y su puerto ethernet como puerto de comunicaciones, que creo que es un banco de pruebas ideal para hacer pruebas con Libnodave.

Lo primero que voy a hacer es un proyecto en Step7 con un único DB, por ejemplo el DB10, con un único dato de formato BYTE. Lo transferiero al WinAC y pongo el PLC software en modo Run. Me pongo on line y monitorizo la variable.


En el PLC no voy a tocar nada más. A continuación lo que haré será una aplicación en Visual Basic, usando la biblioteca Libnodave a través de ethernet, que se conectará al PLC y leerá y escribirá en esa variable como prueba que el sistema funciona.