Establecer una comunicación entre una aplicación de escritorio y un autómata siemens S7

Una manera fácil de establecer una comunicación entre una aplicación de escritorio  y un autómata siemens S7, es la librería gratuita libnodave.dll

Comunicación entre una aplicación de escritorio y autómata siemens S7, Libnodave.dll

LibNodave.dll es una librería gratuita para VB.NET, Java, C, C++, etc para comunicarse con los autómatas de Siemens S7 300 y S7 400. Se pueden realizar desde aplicaciones de escritorio hasta apps para moviles y tabletas, la comunicación puede realizarse desde ethernet, MPI o profibus.

Desde este link se puede descargar la librería libnodave 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)

 Conclusiones

Con esta librería podemos crear fácilmente un enlace entre una aplicación de escritorio, una app para móvil, un enlace hacia una hoja excel, hacia un autómata S7 300 o 400 de forma gratuita, la experiencia que he tenido con esta librería es perfecta, tengo realizada una aplicación de escritorio con VB.NET conectada a un autómata VIPA Speed 7 y funciona a la perfección sin ningún tipo de problemas.