Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

Cómo trabajar con la Biblioteca DALI Arduino y un PLC industrial

Introducción

DALI son las siglas de Interfaz de iluminación direccionable digital. Una red DALI consta de un controlador industrial y una o más luces que tienen interfaces DALI. El controlador PLC (maestro DALI) puede monitorizar y controlar cada iluminación mediante un intercambio de datos bidireccional.

La comunicación es a través de un bus de dos cables de bajo voltaje que opera a baja velocidad (1200 bits por segundo). Los niveles de señal se definen como 0±4,5 V para el "0" lógico y 16±6,5 V para el "1" lógico. El estado de reposo del autobús es el "1" lógico. La codificación Manchester se utiliza con cuadros de avance de 16 bits (más inicio y parada) y cuadros de retorno de 8 bits. En la codificación de Manchester, el estado de los bits se define por una transición en el centro de la ventana de bits: transición en marcha positiva = '1', transición en marcha negativa = '0'. El protocolo DALI permite que las luminarias sean dirigidas individualmente. También incorpora mensajes de difusión de Grupo y Escena para dirigirse a múltiples luces simultáneamente. Una sola red DALI puede controlar hasta 64 luminarias.


Cada bit toma dos períodos. La velocidad de bits DALI definida es de 1200 bps. Por lo tanto, un período de 1 bit es de ~834 µseg. Un cuadro se inicia con un bit de inicio y termina con dos bits de parada de alto nivel (sin desplazamiento de fase). Los datos se transmiten primero con el MSB. Entre los cuadros, el bus está en estado de inactividad (alto).



Cómo trabajar con la biblioteca Arduino DALI y un PLC industrial

Requisitos

Para poder trabajar con la Biblioteca DALI Arduino necesitará lo siguiente:

  • Arduino IDE Software

  • Un controlador Arduino de Industrial Shields: M-Duino-DALI family


Software

La Biblioteca Arduino-DALI implementa el protocolo de comunicación DALI en la familia de controladores lógicos programables M-Duino-DALI basada en Arduino.

Inicio

Esta sección muestra los requisitos previos necesarios y la instalación de las placas de Industrial Shields para utilizar esta biblioteca.


Instalación

Pasos para instalar las placas de Industrial Shields en el IDE de Arduino:

    1. Abre el IDE de Arduino, versión 1.8.10 o superior.

    2. Presiona la opción "Preferencias" del menú "Archivo" y abra la ventana de preferencias.

    3. In the “Additional boards manager URLs” text box, add the address:

    http://apps.industrialshields.com/main/arduino/boards/package_industrialshields_index.json

    4. Cierra la ventana de preferencias con el botón "OK".

    5. Haz clic en el menú "Herramientas", abre el submenú "Placas", y haz clic en la opción "Administrador de Placas", para abrir la ventana Administrador de Tablas.

    6. Busca "industrialshields" en el filtro de búsqueda y selecciona en la lista y haz clic en "Instalar". Descargue la versión 1.1.24 o superior.

    7. Cierra el "Administrador de Placas".


Una vez que realizados todos los pasos, puedes seleccionar cada PLC Arduino con el que desees trabajar en "Herramientas" > "Placas".


Librería DALI para Arduino IDE


La librería DALI envía y recibe datos a través de los pines DALI utilizados en los controladores de la familia M-Duino DALI y Ardbox DALI. Consulta el manual de usuario de tu PLC de la familia DALI para ver la ubicación de los pines de transferencia de datos a través de DALI. Nuestra empresa te proporciona dos ejemplos con el propósito de ofrecer una introducción a DALI.

Para trabajar correctamente, debes incluir nuestra biblioteca DALI.h proporcionada en la integración de las placas de Industrial Shields.

#include "DALI.h"


En primer lugar, tienes que introducir el siguiente enunciado para decirle a los controladores de la familia DALI las conexiones internas entre la placa Arduino y el módulo DALI adjunto dentro del PLC Arduino.

DALI dali;


Dentro de la función de setup, debes entrar la función begin() para configurar el hardware. Para el DALI, no es necesario pasar  ningún parámetro.

dali.begin()


Si no has utilizado antes ninguna comunicación DALI o desconoces las direcciones de los drivers, debes inicializar los nodos ya que serán necesarios para una comunicación fiable. La función initNodes() se introducirá después de los enunciados begin. Si solo hay un controlador que configurar, se proporcionará una dirección uint8_t. En este ejemplo, estamos inicializando el nodo 6:

int initNodes(6);


Para controlar dos o más nodos; tendrás que declarar una lista constante de direcciones uint8_t junto con el número máximo de nodos que quieras configurar. Pasarás estos dos parámetros a la función initNodes() como puedes observar en el siguiente ejemplo. Se inicializarán 5 nodos:

const uint8_t addresses[] = { 6, 7, 8, 9, 10 };
const int maxAddresses = sizeof(addresses) / sizeof(uint8_t);

int initNodes(const uint8_t* addresses, uint8_t numAddresses);



Se ha implementado un test configurando 5 drivers e imprimiendo qué dirección le corresponde a cada nodo.

void setup() {
  Serial.begin(9600UL);
  dali.begin();
  Serial.println("Initialize DALI nodes...");
  int numAddresses = dali.initNodes(addresses, maxAddresses);
  Serial.println("Found nodes:");
  for (int i = 0; i < numAddresses; ++i) {
    Serial.print("Node number: ");
    Serial.print(i, DEC);
    Serial.print(", node address: ");
    Serial.println(addresses[i], HEX);
  }
}


Los valores de los nodos DALI se controlan mediante 3 funciones. Se debe pasar una dirección uint8_t a todas ellas, ya que será el nodo afectado. 

void turnOff(uint8_t nodeAddress);
void setMax(uint8_t nodeAddress);
void setValue(uint8_t nodeAddress, uint8_t value);

La función turnoff(), como su nombre indica, apaga las luces conectadas al nodo correspondiente, mientras que la función setMax() las encenderá. En el caso de que se requiera una mayor precisión, al proporcionar el valor exacto a la función setValue(), se puede establecer una intensidad deseada. Este valor va de 0 a 254.

El siguiente código se ha hecho para pruebas. Dentro de la función Arduino Ide loop() aumentaremos los LEDs correspondientes al driver nº. 6 por 10 como máximo cada 5 milisegundos.

void loop() {
  if (millis() - lastStepTime > 5) {
    value += 10;
    if (value > 254) {
      value = 0;
    }
    dali.setValue(6, value);
    lastStepTime = millis();
  }
}

¿Quieres más información sobre aplicaciones DALI con PLC Arduino industriales?

Contacta con nosotros, te ayudaremos.

Comparte la publicación de DALI en tu red social favorita      

¿Quieres más información? 

¡Solo llena el formulario! 

¡Quiero saber más!  Por favor, llene el formulario correctamente.