Domòtica amb PLC, 1 part

Domòtica amb PLC, 1 part

Un dels meus primers temes d’aquest bloc i que em fa especial il·lusió és l’aplicació domòtica que vaig realitzà casa meva i que vaig porta a terme durant la construcció d’aquesta. Encara que no tot fos programació, ja que vaig realitzà jo mateix tota la instal·lació elèctrica i de fontaneria de la casa, en qualsevol cas la programació porta gran part de tot el treball.
La Domòtica amb PLC, no és una cosa molt comuna, encara que pugui aportar molts avantatges respecte a altres sistemes domòtics.

Pantalla aplicacion domotica

Què fer?

Quan comences un projecte de domòtica el primer que et ve al cap és: i que faig?, La domòtica, encara que ajuda en moltes coses, evidentment és una part prescindible de la casa, hi ha però gran varietat de parts de la casa que es poden automatitzar i a mesura que vas fent coses van sorgint noves idees, algunes de les coses que tenia clar en un principi van ser:

  • Il·luminació (Només un 30%)
  • Persianes (Totes)
  • Control temperatura (Calefacció i aire condicionat)
  • alarma
  • reg jardí

A mesura que anava fent la instal·lació em van anar sorgint noves idees, fins i tot ara vivint a la casa realitzo noves tasques d’automatització, com ara la piscina, alarma d’incendi, portes de pàrquing i accés, etc.

PLC per a la domòtica

Un altre dubte que se’t sorgeix quan vols automatitzar la casa és quin sistema utilitzà, evidentment hi ha gran varietat de dispositius en el mercat per una instal·lació domòtica, cada sistema domòtic s’adapta a les necessitats i coneixements de l’usuari final, en el meu cas em vaig decidir per instal·lar un autòmat programable (PLC):

Avantatges

  • Treballo com a programador de PLC 
  • L’autòmat programable et permet anar modificant la programació i l’automatisme a mesura que vas veient les necessitats de la casa.
  • És ampliable i escalable.
  • Com que és un component industrial és molt més robust.
  • Gran varietat de components en el mercat, fins i tot de segona mà, vaig comprar moltes coses al ebay
  • La interfície d’home màquina o panell de visualització pot ser des d’un PC, i aquest a la vegada aprofitar-ho per a altres tasques, TV, música, etc.

Inconvenients

  • Els components són més cars.
  • Normalment el sistema tendeix a ser centralitzat, de manera que si cau la CPU, cau tot el sistema.
  • És molt laboriós a nivell de programació i muntatge, has de fer-ho tot des de zero, la càrrega de treball és important.
  • Requereix de més espai on ubicar els quadres de control.

Tasques a realitzar

Il·luminació

La il·luminació en un 35% és controlada per l’autòmat, tots els punts de llum tenen el seu polsador independent i a més es poden accionar des de la pantalla tàctil, alguns punts de llum es controlen també per control de presència utilitzant els mateixos sensors de presència de la alarma.
El 100% de la il·luminació exterior és domòtica, alguns punts de llum s’encenen a la nit, l’hora exacta per encendre / apagar ve determinat per una taula diària de sortida i posta de sol.

Persianes

Les persianes controlades en un 100% per l’autòmat, és una de les parts potser més complexes del programa, l’autòmat controla en tot moment la posició en què estan i aquestes es regulen depenent de l’estació de l’any hivern / estiu i la temperatura exterior de la casa o si el dia està assolellat o no.
També té un control de pluja, és a dir el dia que plou determinades persianes de la casa es baixen per evitar que s’embrutin per la pluja.
Cada persiana es pot programar a una posició determinada, també es pot programar per zones, és a dir podem posar les persianes de la zona de les habitacions al 45% amb només prémer un botó.

Control de temperatura

Una de les millors inversions que vaig fer va ser instal·lar aerotermia, un sistema de calefacció i aire condicionat, net, econòmic i amb moltes possibilitats de control, aquest sistema juntament amb el terra radiant em permet regular la temperatura de calefacció i aire condicionat tant a l’hivern com a l’estiu. Segurament és la part més complexa de tot l’automatisme.
La casa està dividida per diferents zones i cada zona té el seu propi termòstat, la temperatura es controla mitjançant un PID (Control proporcional, integral i derivatiu) del propi autòmat, al qual vaig tenir dificultats per ajustar, a causa de la gran inèrcia tèrmica del terra radiant , al final crec que va quedar molt ben ajustat, ja que en condicions normals la temperatura s’arriba ajustar pràcticament a la perfecció, amb unes petites variacions de dècimes de grau.

Control de l’alarma

L’alarma també està controlada per la domòtica, al final acabi amb un sistema d’alarma bastant complex i diferent a una alarma convencional.

Reg jardí

El reg és controlat per l’autòmat, depenent de l’època de l’any en què estiguem aplica uns temps de reg o altres, el reg depèn també de les precipitacions de pluja que hi puguin haver.

Establir una comunicació entre una aplicació d’escriptori i un autòmat siemens S7

Una manera fàcil d’establir una comunicació entre una aplicació d’escriptori i un autòmat siemens S7, és la llibreria gratuïta libnodave.dll

Comunicació entre una aplicació d’escriptori i autòmat siemens S7, Libnodave.dll

LibNodave.dll és una llibreria gratuïta per VB.NET, Java, C, C + +, etc per comunicar-se amb els autòmats de Siemens S7 300 i S7 400. Es poden realitzar des d’aplicacions d’escriptori fins apps per mòbils i tauletes, la comunicació es pot realitzar per ethernet, MPI o profibus.

es d’aquest enllaç es pot descarregar la llibreria libnodave de forma gratuïta:

libnodave.dll

En descomprimir el fitxer que ens hem descarregat podem veure diferents directoris amb alguns exemples de VB, de Pascal, de PERL, etc.

Per treballar en. Net tenim la llibreria libnodave.net.dll, hem de crear una referència a la dll libnodave.net:

referencia-vb-libnodave

i després declarar les variables de treball:

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

Per crear una connexió, podem crear un mètode que realitza la connexió al PLC, on p_port i p_ip són el port i la IP del PLC respectivament:

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

Un cop realitzada la connexió amb el PLC amb èxit, podem llegir i escriure del PLC, per llegir i escriure d’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)

 Conclusions

Amb aquesta llibreria podem crear fàcilment un enllaç entre una aplicació d’escriptori, una app per a mòbil, un enllaç cap a un full excel, cap a un autòmat S7 300 o 400 de forma gratuïta, l’experiència que he tingut amb aquesta llibreria és perfecta, tinc realitzada una aplicació d’escriptori amb VB.NET connectada a un autòmat VIPA Speed ​​7 i funciona a la perfecció sense cap tipus de problemes.

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.