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

 

 

Publicar una aplicación en Visual Studio 2013 con ClickOnce

En este post voy a explicar cómo publicar una aplicación creada en Visual Studio 2013 mediante la herramienta ClickOnce, ClickOnce lleva incorporado un asistente que nos ayudara a seguir los pasos para la publicación de la aplicación, otro detalle importante a la hora de utilizar ClickOnce es la posibilidad que tenemos de definir una ruta de publicación, de esta manera siempre que tengamos nuevas versiones del programa este se puede descargar de forma directa al ejecutar la aplicación, sin necesidad de actualizar todas las aplicaciones en los ordenadores que llevan instalado nuestro programa.

Evidentemente para que una aplicación ClickOnce esté disponible para los usuarios, debe publicarla en un recurso compartido de archivos o ruta de acceso, en un servidor FTP o en un medio extraíble.

Publicar una aplicación en Visual Studio 2013 con ClickOnce

  1. En las configuraciones de nuestro proyecto creado y en el explorador de soluciones seleccionamos el proyecto de aplicación.
  2. En el menú publicar hacemos clic en el Asistente para la publicación:

    asistente-para-publicacion-visual-studio-2013

  3. En la página ¿Dónde desea publicar la aplicación?, escribimos una dirección válida de servidor FTP o una ruta de acceso de archivo válida con uno de los formatos mostrados y, a continuación, clic en Siguiente.
  4. En la página Instalación de la aplicación, seleccionamos la ubicación donde los usuarios irán para instalar la aplicación:
    • Si los usuarios la instalarán desde un sitio web, hacemos clic en Desde un sitio web y escribimos la dirección URL correspondiente a la ruta de acceso al archivo especificada en el paso anterior. y hacemos clic en Siguiente. (Esta opción se usa normalmente cuando se especifica una dirección FTP como ubicación de publicación. No se permite la descarga directa desde FTP. Por lo tanto, tiene que especificar una dirección URL aquí).
    • Si los usuarios instalarán la aplicación directamente desde el recurso compartido de archivos, hacemos clic en Desde una ruta de acceso UNC o un recurso compartido de archivos y hacemos clic en Siguiente. (Esto es para ubicaciones de publicación con el formato c:\deploy\myapp o \\server\myapp).
    • Si los usuarios instalarán desde medios extraíbles, haga clic en Desde un CD-ROM o un DVD-ROM y, después, haga clic en Siguiente.
  5. En la página ¿Dónde buscará la aplicación las actualizaciones?, hacemos clic en la opción que nos interese
    • Si queremos que la aplicación busque si existen nuevas actualizaciones en algún servidor seleccionamos esta opción, recordemos de actualizar nuestra aplicación creada cada vez que publiquemos una actualización nueva.
    • Si no queremos que la aplicación busque actualizaciones nuevas.
  6. En la página Listo para publicar, nos muestra el resumen de las opciones seleccionadas, llegados a este punto hacemos clic en Finalizar y ya tendremos nuestra aplicación lista para publicar.

Muchas veces nuestra aplicación lleva incorporado archivos o ficheros necesarios para el funcionamiento del programa, aquí en este asistente vemos que archivos se van a empaquetar mediante en Archivos de Aplicación:

asistente-para-publicacion-visual-studio-2013-archivos-aplicacion