Casa inteligente. Cerebros

Cuando se colocan todos los cables, se instalan los interruptores, se realiza el panel eléctrico (todo esto se describe en la primera parte ), luego podemos proceder a lo más interesante: programar el controlador. Como no utilicé un controlador especializado para un hogar inteligente, sino un controlador de automatización industrial, tuve que programar desde cero: hay entradas, hay salidas, todo lo demás debe programarse: qué hacer presionando un botón (interruptor sin fijación), cómo programar un atenuador , guiones, etc.

imagen

Pero lo primero es lo primero. Inicialmente, la arquitectura de mi hogar inteligente incluía los siguientes componentes:
  • controlador industrial Aries de PLK110-32 (cerebro principal)
  • Módulo de salida analógica MU110-6U (utilizado para controlar atenuadores)
  • Módulo para la entrada de señales analógicas MV110-8A (agregado más tarde para tomar lecturas de los sensores).

Todo esto está conectado a través de RS-485 y el pinchazo Modbus RTU. El controlador principal está conectado a Ethernet para comunicarse con el mundo exterior.

Para controlar desde el teléfono, inicialmente usé Iridium Mobile , que los fabricantes me proporcionaron amablemente (sí, ¡uso mi posición oficial para fines personales!). Más tarde lo reemplacé con un servicio web basado en Node JS. También más tarde se agregó una parte inalámbrica basada en z-wave. Planeo escribir sobre todo esto por separado, pero por ahora volvemos a nuestras ovejas.

La programación del controlador se lleva a cabo en el entorno CoDeSys, que admite 5 idiomas especializados, de los cuales dominé dos: FBD (Function Block Language) y ST (Pascal-like language). En realidad, inicialmente pensé que solo me contentaría con FBD, ya que la programación en este lenguaje parece trazar un gráfico en un editor.

imagen

Entonces, la subrutina FBD (o más bien el bloque de funciones) de procesar el interruptor en el corredor se ve así. Además de encender y apagar la luz en el pasillo, este interruptor se usa para apagar la luz en todo el departamento. Una sola pulsación enciende la luz en el pasillo y una pulsación larga (1 segundo) activa el comando para apagar todas las luces.

A medida que se agregaron más y más funciones y capacidades, llegué a la conclusión de que el lenguaje de los diagramas funcionales no es tan conveniente: resulta ser un código engorroso, la programación es lenta y la depuración es muy inconveniente. Por lo tanto, gradualmente cambié al lenguaje ST y ya no uso el lenguaje FBD.

A modo de comparación, parece que esta es una parte del bloque de funciones del atenuador en el lenguaje ST (de acuerdo, ¡este es un asunto completamente diferente!):

imagen

Como estamos hablando de un atenuador, entonces necesitamos hablar de él específicamente. Resultó que no es nada fácil encontrar un atenuador (plancha) adecuado para un hogar inteligente. No consideré todo tipo de opciones exógenas, ya que toda la funcionalidad básica debería implementarse en tecnologías de cable; escribí sobre esto antes. El precio de los dimmers que se me ocurrió no me agradó. Además, era necesario garantizar la compatibilidad con mi hogar inteligente. Al principio me instalé en el INSYTE LDD-400D, controlado por ModBus, que me permitió conectarlo directamente al controlador sin módulos adicionales, pero los amigos que lo usaron en sus proyectos de alguna manera no hablaron muy bien sobre eso, y como resultado, decidí pregunta con un atenuador así que ponga un relé de estado sólido.

imagen

El relé se controla (a través del módulo de salida analógica) con una señal de 0-10 V y salidas de 10-220 V respectivamente. Tenga en cuenta que el voltaje mínimo en la salida del relé de estado sólido no es 0, sino 10 V: a este voltaje, la espiral de la lámpara incandescente brilla notablemente. Este problema se resuelve de la siguiente manera: además del relé de estado sólido, el circuito también contiene el relé intermedio (mecánico) habitual y, a nivel del programa, cuando es necesario apagar completamente la luz, el controlador apaga el relé intermedio y rompe el circuito.

La segunda dificultad con la organización de atenuar la luz es cómo hacer una interfaz conveniente, teniendo en cuenta el hecho de que uso un interruptor convencional sin fijarlo como control.

La primera versión de la interfaz se parecía a esto (ahora no recuerdo exactamente):
  • pulsación corta: enciende o apaga la luz (la luz se enciende en el último nivel de brillo)
  • presione prolongadamente cuando la luz está encendida: una disminución gradual del brillo y luego pasando por un aumento cero
  • pulsación larga cuando la luz está apagada - aumento suave desde cero
  • doble toque enciende la luz a pleno brillo.

Viví con esta opción durante varios meses, pero luego llegué a la conclusión de que todavía no es muy conveniente y que a menudo solo se usan 3 modos: la luz está encendida, la luz está apagada o la luz está encendida con la mínima furia. Por lo tanto, implementé una opción discreta más simple (que permanece hasta ahora):
  • pulsación corta: enciende / apaga la luz (se enciende a pleno brillo)
  • pulsación larga: enciende la luz con un brillo del 25% y cambia al modo de atenuación;
  • cada pulsación posterior se mueve al siguiente paso + 25%. Salga del modo de atenuación, por tiempo de espera.

Como dije en una publicación anterior, el control de botones individuales sin fijar todavía no es la mejor solución. Además del ejemplo con el atenuador que acabo de citar, también implementé un escenario complejo para encender la luz en la sala de estar. Preferimos no usar la luz del techo en la sala de estar e inmediatamente encender la lámpara del escritorio y las luces del armario. Automaticé este proceso y ahora el control de la luz en la sala se ve así:
  • Un clic (si la lámpara está apagada): enciende la lámpara y la luz de fondo
  • Un clic (si la lámpara está encendida): enciende o apaga la luz superior
  • una pulsación inmediatamente después de la segunda (cuando se apaga la luz del techo): apaga la lámpara de escritorio
  • pulsación larga: apaga todas las luces de la habitación

Los primeros dos puntos de este escenario son muy adecuados desde el punto de vista del modelo de comportamiento. El último punto se hace por analogía con el corredor. El tercer párrafo es muy controvertido y no se usa. El problema es que la familia se está quejando, pero este guión es un pasillo, pero ningún invitado puede hacer frente a la luz. Por lo tanto, para los scripts necesita paneles táctiles o botones multifunción.

El sistema CoDeSys tiene la capacidad de hacer un panel de visualización y control. PLC110 no es compatible con la interfaz web, por lo tanto, la visualización solo funciona en el complejo CoDeSys.

imagen

Así es como se ve el panel de control técnico de mi casa inteligente. Técnico, porque en la vida cotidiana nadie lo usa. Con una pequeña excepción, este panel sirve como una interfaz remota para administrar una casa inteligente. Si necesito hacer algo de forma remota, entonces voy a través de TeamViewer a mi servidor doméstico y uso este panel. Tal necesidad surge muy raramente, por lo que ni siquiera configuré el acceso remoto para el servicio web.

En conclusión, los pros y los contras.

Pros:
  • Fiabilidad: la solución ha demostrado ser muy buena (sin embargo, está construida sobre una base de componentes, que se utiliza para la automatización industrial). Durante todo el tiempo no hubo un solo (!!!) fallo. Incluso después de sobretensiones, el sistema se inició sin ningún problema.
  • (, , ).

:
  • Modbus TCP — ( )

Como dije en el primer artículo, ahora buscaría más de cerca alternativas, pero si alguien de repente quiere estudiar esta solución, publiqué el código fuente hecho en CoDeSys en github . (solo sea condescendiente con la calidad del código.

En las siguientes partes: control telefónico y soluciones inalámbricas).

Source: https://habr.com/ru/post/es389053/


All Articles