Trabe ya no escribe aquí. Puedes encontrarnos en nuestra publicación en Medium: medium.com/trabe.

4Trabes Historias de una empresa en 100 metros cuadrados

El blog de Trabe Soluciones

Extraer datos de un PLC (autómata) Siemens S7-200 utilizando un cable USB y Excel

| | Comentarios

Los autómatas programables son unos aparatos muy interesantes de los que aún no habíamos hablado nunca en este blog. Permiten controlar todo tipo de procesos más o menos complejos y almacenan información que luego puede ser interesante tratar en un PC. Sin embargo, muchas veces no resulta trivial hacer que esta información que maneja el autómata sea exportada a un PC. A la hora de extraer datos de la memoria de un autómata existen varias posibilidades.

Programar un protocolo específico

Esta opción es bastante laboriosa y presenta el problema de tener que reinventar la rueda en cada escenario de implantación. Sin embargo es la que da una mayor flexibilidad, y puede ser la única opción válida cuando nuestro PLC interactúa con otros dispositivos hardware

Utilizar una librería de comunicación

Existen en el mercado diferentes librerías para acceder de una forma simplificadada a los datos de un autómata. Estas librerías nos evitan tener que pelearnos con los protocolos de comunicación y nos presentan una vista de más alto nivel. Siemens dispone de sus propias librerías (de pago, como todo lo que tenga que ver con PLCs Siemens), pero existen otras opciones muy interesantes como la librería libnodave. Utilizar una librería es una opción muy razonable cuando necesitamos acceder a los datos del autómata desde nuestros programas y no queremos/no podemos utilizar un servidor OPC.

Utilizar un servidor OPC

Hace ya algún tiempo, la industria comenzó a demandar a los fabricantes de sistemas de automatización una cierta tasa de interoperabilidad. OPC permite controlar a través de un PC dispositivos de distintos fabricantes. En el caso de los S7-200, existe un software de Siemens denominado “PC Access” que viene siendo un “mini servidor” OPC. Utilizando este software es bastante sencillo acceder a los datos del PLC desde Excel utilizando VBA. Dado que esta solución es estándar, sencilla y funciona, será la elegida en este caso.

Configurar el ordenador

Esta parte del problema es bastante sencilla. Basta con instalar el software de Siemens y seguir los pasos descritos para instalar el componente en excel. Una vez realizados correctamente estos pasos, tendremos una barra de botones adicional en Excel que nos permite iniciar/detener el refresco de datos. En este ejemplo no vamos a utilizar estas herramientas, pues recuperaremos los datos directamente desde código VBA

¿Qué datos vamos a recuperar?

Los autómatas de la serie 200 tienen varias “zonas” de memoria, pensadas para distintos propósitos. Hay una zona de flags, una zona de datos de usuario, etc. Todas las zonas son accesibles a través de OPC, tanto en modo lectura como en modo lectura/escritura (cuando procede). En este ejemplo vamos a recuperar 100 valores de un tamaño de un byte almacenados en la memoria V, entre las posiciones 0 y 99.

Para conseguir nuestro propósito tendremos que hacer un bucle en el que se vayan leyendo las posiciones necesarias e iremos almacenando los valores en la columna A de nuestra hoja de cálculo, de modo que en la la fila de número i tengamos almacenado el valor correspondiente a la variableVBi-1

Cómo lo hacemos

Muy sencillo. Una vez configurado el equipo abrimos una nueva hoja excel y cargamos el “complemento” de siemens tal como indica la documentación. Sobre una hoja en blanco creamos un botón y asociamos el siguiente código a su evento de click:

1
2
3
4
5
6
7
MsgBox "Comenzando el proceso de importación de datos"
For i=0 To 99
    parameters = "2,VB" & i & ",BYTE,R"
    sStr = Excel.Application.Run("OPCS7200ExcelAddin.XLA!OPCRead", parameters, "")
    Cells(i+1,1) = sStr
Next i
MsgBox "Proceso finalizado"

El código es tan sencillo que no merece mayor explicación. Únicamente comentar que en la linea en que se asigna valor a parameters se le indica al servidor OPC con que dispositivo queremos “hablar”, que posición queremos leer, el tipo y si queremos utilizar la posición en modo lectura o lectura/escritura

Conclusiones

Hemos visto que los autómatas no son máquinas infernales con las que es imposible hacer cosas. Es fácil obtener datos de
ellos si sabemos cómo hacerlo. Obviamente recuperar los datos es solo el principio del problema, pero es la parte que puede parecer más compleja cuando nos hablan en abstracto de este tipo de dispositivos.


Lo sentimos, pero los comentarios están cerrados

Me llamo mucho la atecion y como le haria yo que estoy trabajando con un siemens S7-300 con CP340 y CPU313?
Necesito entablar una comunicacion entre el PLC y una bascula Mettler Toledo
PL602-S

Tengo una duda muy grande…existe el pc access para vista?

30/Jul/2009 CRP

Como puedo extraer datos de una bascula Mettlet Toledo con una CP340 un PLC S7-300 y un cable RS232? con un software Simatic Manager?

Como puedo extraer datos de un PLC FESTO utilizando un cable de Ethernet y Excel?

quisiera saber como puedo recuperar los datos del plc allen bradley directamente desde excel

23/Sep/2009 Javier

A todos los que preguntáis como hacer esto en otros sistemas…pues depende del sistema y de vuestro entorno. Este post simplemente comparte como lo hice yo en un escenario concreto, no busca convertirse en una referencia general sobre la materia de transferir datos entre PLCs y otros sistemas…

05/Nov/2009 Marcos

que puedo aser cuando los puertos estan flojos

30/Jan/2010 Carlos Mendez

supongo que lo suyo sería apretarlos. Aunque ese es el tipo de pregunta que sería mejor hacer a un electricista…

05/Feb/2010 Marcos

Necesito información acerca de la sintaxis del Complemento OPCS7200ExcelAddin.XLA!OPC
Gracias.

11/Apr/2010 Anel Monroy

como puedo configurar en le programa rslogix 500 para enviar informacion del plc a otro software que interpretara los datos y asi extraerle informacion al plc allen brandley haciendo uso del cable 1761-cbl

@anel la sintaxis suele venir en los manuales, ahí fue donde la encontré yo.

@raul como pongo en un comentario más arriba, este post no busca convertirse en una referencia general sobre la materia de transferir datos entre PLCs y otros sistemas…

28/Apr/2010 Marcos