Comunicación entre un S7 1200 o S7 1500 y una aplicación de escritorio

Ya es conocido que la librería gratuita libnodave.dll podía conectarse sin problemas a un PLC S7 de siemens, pues bien en la librería libnodave.dll a partir de la versión 0.8.5 tambien es posible conectarse a un autómata S7 1200 y también a un S7 1500 con Windows 7 y Windows 8.

s7-1200_pc

Detalles a tener en cuenta para poder conectar con un 1200:

  1. No utilizar ningún DB optimizado dentro del proyecto del PLC

Detalles a tener en cuenta para poder conectar con un 1500:

  1. No utilizar ningún DB optimizado dentro del proyecto del PLC
  2. En las protecciones del PLC dar permisos para acceder al PUT/GET

Comunicación entre un S7 1200 o S7 1500 y una aplicación de escritorio

Desde este link se puede descargar la librería libnodave a partir de la versión 0.8.5 de forma gratuita:

libnodave.dll

Al descomprimir el fichero que nos hemos descargado podemos ver diferentes directorios con algunos ejemplos de VB, de Pascal, de PERL, etc.

Para trabajar en .net tenemos la libreria libnodave.net.dll, debemos de crear una referencia a la dll libnodave.net:

referencia-vb-libnodave

y luego declarar las siguientes variables de trabajo :

'Variable daveOSerialType
Private fds As libnodave.daveOSserialType
'Variable daveInterface
Private di As libnodave.daveInterface
'Variable daveConnection
Private dc As libnodave.daveConnection

Para crear una conexión, podemos crear un método que realiza la conexión al PLC, donde p_port y p_ip son el puerto y la IP del PLC respectivamente:

Public Function conectar() As Boolean
    Try
      If fds.rfd = 0 Then
         fds.rfd = libnodave.openSocket(p_port, p_ip)
         fds.wfd = fds.rfd
         di = New libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k)
         di.setTimeout(1000000)
         dc = New libnodave.daveConnection(di, 0, p_rack, p_slot)
         conexion = dc.connectPLC
      End If
      If conexion <> -1 Then
         Return True
      Else
         Return False
      End If
    Catch ex As Exception
        regErrores = ex.Message
        Return False
    End Try
End Function

Una vez realizada la conexión con el PLC con éxito, podemos leer y escribir del PLC, para leer y escribir de un DB:

'Lectura de un db del PLC
 res = dc.readBytes(libnodave.daveDB, DB, inicio, longitudLeer, Nothing) 
 dc.getS32At(puntero)

'Escritura de un db del PLC
 res = dc.writeBytes(libnodave.daveDB, DB, inicio, longitud, escriure)

 

Control de pesaje con el Siwarex de la serie 1200

Con el Siwarex WP231 de la serie 1200 de Siemens podemos implementar de una manera sencilla un equipo de pesaje para una báscula de control de peso en continuo, otra característica del WP231 es su flexibilidad, el módulo no solo puede integrarse en SIMATIC, sino que también puede utilizarse sin CPU SIMATIC.

Detalles técnicos:

  • Integración en sistemas de automatización: SIMATIC S7-1200, Otros sistemas vía Modbus RTU o ModbusTCP/IP.
  • Interfaces de comunicación: Bus SIMATIC, Ethernet RS485
  • Precisión: 0,05%
  • Tarable: si
  • Resolución interna: a 4 millón de partes
  • Tiempo/velocidad de actualización: 10ms/100Hz

Siwarex-1200

Control de pesaje con el Siwarex de la serie 1200

Para realizar un control de pesaje es recomendable integrar el Siwarex con su PLC 1200, esto nos permitirá poder actuar con dispositivos externos necesarios para la báscula de pesaje y poder controlar mejor el programa de la báscula, como por ejemplo, E.V de aportación producto, señales de comunicación con sistemas de aportación de producto, señales de comunicación hacia otras máquinas, etc, además el PLC 1200 se puede utilizar perfectamente para el control de una máquina de ensacado.

Al tener integrado el Siwarex con el PLC, debemos de trabajar con la opción de envío y recepción de telegramas, estos telegramas serán los encargados de enviar todos los parámetros de configuración y de trabajo del equipo de pesaje, para utilizar estos telegramas debemos de utilizar la función “WP231PR” que nos proporciona Siemens para el envío y recepción de parámetros.

La función “WP231PR” lleva un DB de instancia donde tendremos toda la información de los “Data records”, en estos “Data records” se encuentran todos los parámetros de ajuste y configuración del Siwarex. La función se llama de forma cíclica en cualquier parte de nuestro programa:

wp231pr

Salidas del Siwarex

Para poder pesar en ciclo continuo necesitaremos las 2 señales del Siwarex de limite 1 y limite 2, o lo que sería lo mismo peso bruto y peso fino, el Siwarex dispone de 4 salidas digitales para realizar esta tarea, por tanto podemos utilizar la salida 0 para el afino y la salida 1 para el bruto, para configurar estas 2 salidas lo haremos mediante el siguiente telegrama:
Salidas preparadas:
salidas-siwarex-activas

Salidas desactivadas:
salidas-siwarex-no-activas

Leer y escribir en el Siwarex

Podemos leer y escribir con 3 parámetros de envío y recepción diferentes, son importantes 3 variables de estos telegramas:

Envío recepción 1

  1. “WP231PR_DB”.s_CMD1.i_CMD_CODE: Código de envío o recepción
  2. “WP231PR_DB”.s_CMD1.bo_CMD_InProgress: Envío o recepción en progreso
  3. “WP231PR_DB”.s_CMD1.bo_CMD_TRIGGER: Triger o bit de disparo

 

Envío recepción 2

  1. “WP231PR_DB”.s_CMD2.i_CMD_CODE: Código de envío o recepción
  2. “WP231PR_DB”.s_CMD2.bo_CMD_InProgress: Envío o recepción en progreso
  3. “WP231PR_DB”.s_CMD2.bo_CMD_TRIGGER: Triger o bit de disparo

 

Envío recepción 3

  1. “WP231PR_DB”.s_CMD3.i_CMD_CODE: Código de envío o recepción
  2. “WP231PR_DB”.s_CMD3.bo_CMD_InProgress: Envío o recepción en progreso
  3. “WP231PR_DB”.s_CMD3.bo_CMD_TRIGGER: Triger o bit de disparo

Siempre que queramos enviar los cambios hacia el Siwarex lo debemos de hacer activando el triger de envío con los parámetros que queramos enviar, el Siwarex dispone de 45 telegramas distintos, del DR03 al DR48, para leer o activar un telegrama se realiza de la siguiente manera:

Leer telegrama: Para leer un telegrama utilizamos “WP231PR_DB”.s_CMD1.i_CMD_CODE y siempre con un 20 seguido del telegrama que queramos leer, por ejemplo para leer el registro DR03 lo debemos hacer con un 2003, el registro DR07 con un 2007.

Escribir telegrama: Exactamente igual que la lectura per en este caso con un 40 seguido del telegrama, por ejemplo para escribir los parámetros del registro DR03 lo debemos hacer con un 4003, el registro DR07 con un 4007.

FC de envío y recepción de datos

Siemens en uno de sus ejemplos pone a disposición un pequeño FC para gestionar el envío y recepción de datos, no tiene mucho misterio per es conveniente utilizar este FC para las comunicaciones, básicamente controla en todo momento como está el telegrama y si está en proceso no envía el siguiente, recordar de realizar la llamada a este FC siempre desde un OB cíclico de 100 ms:

fc-cmd_handling

La llamada a este FC se debe realizar en un OB cíclico, podemos programas hasta 3 lecturas y escrituras simultaneas:
llamada-fc-cmd_handling

La llamada al FC del ejemplo es recomendable tenerla siempre activa, ya que en la palabra del DB “WP231PR_DB”.CMD_A tiene un valor por defecto de 2034 y por tanto esta siempre leyendo el telegrama 34 que es donde tenemos el peso actual en la palabra ASCII_DISPLAY, el “WP231PR_DB”.CMD_B se puede utilizar para otras comunicaciones que queramos.

Peso de consigna y limites

Para definir el peso de consigna primeramente activaremos el modo servicio y seguidamente mandamos el peso en una variable Real a la siguiente palabra y telegrama:

Modo servicio:
modo-servicio-siwarex

Envió peso consigna:
peso-consigna

Desactivar modo servicio:
desactivar-modo-servicio-siwarex

Envió de limites de afino y rápida:
limites-siwarex

Control de la salida analógica

El siwarex también dispone de una salida analógica con la que se puede controlar el peso que estamos aportando a la pesadora, para configurar la salida analógica es muy simple, en este ejemplo activamos la analógica con un rango de 0 a 100, a 4-20mA:

analogica-siwarex