Cómo trabajar con la Librería DALI Arduino y un PLC industrial
Librería Arduino IDE y DALI para control industrial
17 junio, 2020 por
Cómo trabajar con la Librería DALI Arduino y un PLC industrial
Boot & Work Corp. S.L., Berta Canet

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).


DALI bit rate - How to work with DALI Arduino Library and an industrial PLC
Cómo trabajar con la biblioteca Arduino DALI y un PLC industrial

Requisitos

Para trabajar con la librería DALI Arduino, necesitarás los siguientes elementos: 


La biblioteca Arduino-DALI implementa el protocolo de comunicación DALI en la Familia de controladores lógicos programables M-Duino-DALIbasados 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. En el cuadro de texto "URLs adicionales del gestor de tableros", a√Īade la direcci√≥n:

    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      

Encuentra lo que buscas.¬°Busca en nuestro Blog!

Cómo trabajar con la Librería DALI Arduino y un PLC industrial
Boot & Work Corp. S.L., Berta Canet
17 junio, 2020
Compartir
Archivar

¬ŅEst√°s buscando tu Controlador L√≥gico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial >>>

¬ŅQuieres m√°s informaci√≥n?

¬°Rellena el formulario!

¬°Cu√©ntame m√°s!