# Digital MultipleX

DMX512, spesso abbreviato a DMX (Digital MultipleX), è uno standard di comunicazione digitale usato principalmente per il controllo dell'illuminazione di scena nell'industria dello spettacolo, per controllare numerose luci ed effetti da una console di regia. Recentemente è stato introdotto anche in ambito civile per l'illuminazione architetturale.

## Storia

Sviluppato dalla Commissione Tecnica dell'USITT, prese piede nel 1986 con successive revisioni nel 1990 che portarono allo standard USITT DMX512/1990. Nel 1998 lo standard passò sotto il controllo dell'ESTA che ne cominciò un processo di revisione. La nuova versione, conosciuta ufficialmente come: "Entertainment Technology - USITT DMX512-A - Asynchronous Serial Digital Data Transmission Standard for Controlling Lighting Equipment and Accessories", fu approvato dall'ANSI nel novembre del 2004. L'attuale standard è conosciuto come E1.11, USITT DMX512–A o, più semplicemente DMX512-A e viene correntemente mantenuto dall'ESTA.
DMX nella sua concezione originale era stato pensato per permettere il collegamento di controller e dimmer di diverse marche, un protocollo da usare come ultima risorsa nel caso altri protocolli proprietari non fossero stati compatibili. Di fatto questo standard prese piede e in breve tempo fu utilizzato per collegare anche altri dispositivi più avanzati come i fogger, oltre ai controller e ai dimmer.
DMX512 è in genere implementato in modo unidirezionale e non comprende un controllo o correzione degli errori. Per questo motivo, per ragioni di sicurezza, non deve essere usato per il controllo dei fuochi pirotecnici o di movimenti di strutture di scena (per i fuochi pirotecnici è a volte usato, al suo posto, il protocollo MIDI).

## Livello fisico

Il DMX512 si basa sul protocollo fisico RS-485. Per collegare un controller DMX512 alle apparecchiature compatibili si usa un cavo bipolare schermato di impedenza nominale 110 ohm, sul quale i dati sono trasmessi in forma differenziale.
Lo standard prevede dei connettori XLR a 5 poli, in cui un pin è la schermatura del cavo (massa), 2 sono utilizzati per la trasmissione di segnale DMX, mentre gli altri 2 sono riservati per una seconda linea bilanciata dmx, ma in realtà il suo uso non è mai stato definito (si era ipotizzata una linea di ritorno). Molti produttori usano connettori XLR da 3 pin (più economici), violando così lo standard. In altri casi i produttori impiegano i pin 4 e 5 del connettore a 5 poli per usi totalmente diversi come una linea d'alimentazione dall'apparecchio controllato al controller. La versione DMX512-A ammette anche l'utilizzo di connettori 8P8C ("RJ-45").

### Collegamenti XLR-5

* Signal Common
* Data1 - (Linea Principale DMX)
* Data1 + (Linea Principale DMX)
* Data2 - (Linea Secondaria Opzionale)
* Data2 + (Linea Secondaria Opzionale)

### Collegamenti XLR-3

* Ground
* DMX - (Linea Principale) (In alcuni controller la polarità è invertibile a DMX+)
* DMX+ (Linea Principale) (In alcuni controller la polarità è invertibile a DMX-)

### Collegamenti RJ-45

* Data 1+ (Linea Principale)
* Data 1- (Linea Principale)
* Data 2+ (Linea Secondaria)
* Not Assigned
* Not Assigned
* Data 2- (Linea Secondaria)
* Massa per la Linea Principale
* Massa per la Linea Secondaria
Ogni dispositivo ha un ingresso e un'uscita DMX512, le quali sono internamente collegate fra loro. La porta DMX512 in sul primo dispositivo viene collegata al DMX512 out del controller mentre il DMX512 out del primo apparecchio viene collegato al DMX in del secondo, e così via. Questa tipo di collegamento viene chiamato daisy chain o cascata.
Il connettore DMX512 out dell'ultimo dispositivo di questa catena così formata dovrebbe avere inserito un terminatore DMX512, ovvero una resistenza da 120 ohm e 0,25 W tra i pin 2 e 3 del connettore, per evitare che i segnali, arrivati in fondo alla linea, vengano riflessi indietro a causa del disadattamento di impedenza producendo interferenze. Tuttavia, per collegamenti su breve distanza di un numero limitato di dispositivi è possibile operare anche senza terminatore.
Dovrebbero essere utilizzati solamente cavi progettati per il DMX512 o per audio digitale AES/EBU compatibili con impedenza 110 ohm. I test dell'ESTA hanno dimostrato che si possono usare cavi di categoria 5 senza compromettere la qualità del segnale. Tuttavia, vista la diffusione dei connettori XLR a 3 pin, spesso vengono usati cavi per microfono e ciò è possibile solo nell'ipotesi di brevi distanze e numero non elevato di apparecchiature collegate.
È totalmente da evitare, invece, l'uso di derivazioni ad Y (comunemente noti come sdoppi); a questo scopo esistono degli appositi splitter.

## Livello dati

Ogni cavo DMX512 può trasmettere fino a 512 valori da 8 bit, tra 0 e 255, in questo modo un cavo può controllare fino a 512 dispositivi distinti (dimmer per fari alogeni e accecatori) oppure 512 parametri distinti (per i motorizzati come teste mobili). Siccome DMX supporta solo 512 canali, ci si può imbattere in situazioni in cui sono necessari universi DMX distinti. Per universo DMX si intende una singola linea di collegamento dal controller e tutti i dispositivi associati a quel cavo. La maggior parte delle console DMX recenti supportano più di un universo DMX, ognuno dei quali deve essere cablato indipendentemente.
I dati sono trasmessi in modo seriale a 250 kbit/s e sono raggruppati in pacchetti di dimensione massima di 513 byte, con 1 bit di start e 2 bit di stop, in modalità LSB first. L'inizio di un pacchetto viene identificato con una pausa di almeno 88 µs (nello standard del 1986 era di soli 44 µs). I dispositivi ricevitori, quando riconoscono la pausa, azzerano i contatori interni di ricezione. A questo punto vengono inviati i dati fino ad un massimo di 513 byte. Il primo byte è sempre il byte di stato, che indica ai ricevitori il tipo dei dati che seguiranno. Per i dati standard riguardanti i dimmer, il valore del byte di stato è sempre 0x00, mentre altri valori sono usati per sistemi proprietari o per le estensioni RDM dello standard.
I restanti byte costituiscono i dati reali. Possono essere inviati al massimo 512 byte ed è compito dei ricevitori mantenere un conteggio interno dei byte per distinguere i singoli canali. Poiché il protocollo DMX non prevede né error detection né error correction, è importante che i ricevitori non perdano dei byte e che scartino i pacchetti nel caso si verifichino errori di framing o buffer overflow.
Un pacchetto completo impiega circa 23 ms per essere inviato. Ciò corrisponde ad un refresh rate di circa 44 Hz. Se è necessario un refresh rate più alto si possono utilizzare meno canali semplicemente iniziando l'invio di un nuovo pacchetto prima del completamento dell'invio di tutti i 512 valori. La dimensione minima di un pacchetto è di 24 canali. Tuttavia quasi tutti i trasmettitori inviano sempre 512 valori poiché molti ricevitori hanno problemi a gestire pacchetti più corti.
Le luci dinamiche usano canali adiacenti per controllare le diverse funzioni. Questi attributi possono essere disposti, ad esempio, nel modo seguente:
* Intensità della luce
* Colore del fascio
* Gobo
* Rotazione sul piano orizzontale
* Rotazione sul piano verticale
Il canale filtro può utilizzare gruppi di valori per indicare quale filtro usare, ad esempio:
* 0-20 = Gobo1
* 21-40 = Gobo 2
* e così via.
Può essere indicata anche la rotazione del filtro, ad esempio:
* 21-25 = Gobo 2, fisso
* 26-40 = Gobo 2, rotazione da lento a veloce
Se sono presenti vari apparecchi da controllare separatamente, l'indirizzo DMX512 di ogni dispositivo deve essere impostato in modo che non si verifichino sovrapposizioni. Ad esempio, se l'indirizzo del primo dispositivo fosse 1 e quello del secondo 6, la situazione sarebbe la seguente:
I controller DMX512 moderni contengono librerie che indicano come mappare gli attributi sui vari dispositivi. Il controller in questo modo può utilizzare vari metodi di selezione e rotazione dei filtri anche se su un particolare dispositivo viene rappresentato da un singolo canale.
All'operatore viene così presentato un solo metodo coerente per controllare le luci anche se in realtà i vari dispositivi utilizzano valori e sistemi differenti per ottenere i vari effetti. Il controller deciderà in automatico i vari indirizzi per i dispositivi. Se 512 canali non sono sufficienti, sarà necessaria una console con connettori di uscita multipli. Ogni connettore di uscita controlla un universo differente, permettendo in questo modo di gestire molti più dispositivi.
L'output DMX512 è progettato per gestire 32 unità di carico. Un singolo dispositivo può rappresentare una frazione dell'unità di carico anche se la cablatura tra i dispositivi può degradare il segnale in modo significativo. Per ovviare a questo problema ed al problema della gestione dei cavi, spesso si usano dei buffer DMX512. Questi apparecchi hanno un DMX512 in e parecchi DMX512 out, attraverso i quali vengono trasmessi gli stessi dati. Ogni output può così controllare 32 unità in modo da dividere il segnale dal controller a centinaia di dispositivi.
Non è consigliabile, invece, suddividere il segnale DMX512 cablando un output verso due input. Ciò potrebbe portare a problemi di terminazione. Per esempio, se entrambi i rami della suddivisione fossero terminati con resistenza da 120 ohm, la resistenza combinata risultante sarebbe di soli 60 ohm e ciò probabilmente porterebbe in sovraccarico il trasmettitore DMX facendolo spegnere o produrre una tensione troppo bassa. Nel caso in cui solo uno, o nessuno, dei due rami fosse terminato, i rami non terminati creerebbero segnali di riflesso, causando la perdita di dati.

## Nozioni pratiche

La diffusione di DMX512 è dovuta in gran parte alla sua robustezza. I cavi possono essere maltrattati senza subire degradi di prestazioni come ad esempio avverrebbe con cavi Ethernet. Spesso non vengono applicati i terminatori in modo che, senza di essi, un'eventuale interruzione del cavo non comprometterebbe l'operatività dei dispositivi.
Comportamenti anomali degli apparati di solito sono dovuti ad errori di indirizzamento, cavi rovinati o istruzioni errate dal controller. I cavi rovinati possono portare a problemi intermittenti come il twitching dei dispositivi.
I due pin non utilizzati sul connettore a 5 pin, in origine, erano riservati per fornire dati diagnostici di ritorno al controller ma questa funzione non fu mai implementata, così alcuni produttori hanno deciso di usare connettori a 3 pin. Altri produttori usano i pin aggiuntivi per trasmettere altri dati o corrente elettrica ma ESTA vieta l'utilizzo di questi pin per trasportare corrente poiché ciò potrebbe danneggiare i componenti elettronici di alcuni dispositivi. Di conseguenza, spesso si rendono necessari parecchi adattatori che possono portare ad un degrado della funzionalità del sistema. Alcuni produttori preferiscono usare i connettori a 5 pin per evitare confusione tra i cavi del sonoro e delle luci.
Per controllare la rotazione orizzontale di un faro a testa mobile, la cui rotazione massima è di 440°, un incremento di 1 bit risulterebbe in un movimento di 1,7°. Essendo necessaria una precisione maggiore, ormai quasi tutti i dispositivi utilizzano 2 canali per i parametri di pan e di tilt. Ciò permette l'utilizzo di valori a 16 bit, tra 0 e 65535, fornendo due canali di controllo, coarse e fine.

## Sviluppo

ESTA e altre associazioni hanno sviluppato parecchie alternative al DMX512, per ovviarne i difetti. Una configurazione che sta avendo successo è la combinazione di DMX512 ed Ethernet. Si usa Ethernet per comunicare tra il controller ed il palco, dal quale poi degli appositi dispositivi bridge convertono il segnale in DMX512 verso i dispositivi. I protocolli Ethernet utilizzati sono spesso specifici al produttore.
Una nuova versione dello standard DMX512, chiamata DMX512A, pone le basi per il protocollo RDM (Remote Device Management), il quale permetterà il feedback diagnostico dai dispositivi al controller e permetterà la comunicazione bidirezionale tra controller e dispositivi. Sul lungo termine, continuano i lavori sull'ACN, uno standard open basato su Ethernet pensato come rimpiazzo del DMX512. Anche quest'ultimo standard è gestito dall'ESTA.

## Protocollo

Il protocollo si basa su una linea industriale, ovvero la RS485, ed è formato da un treno di dati digitali (1=Acceso/0=Spento) a 5 volt. Un bit dura 4 µs, quindi la velocità di trasmissione è di 250 kb/s.
Il gruppo di dati è formato da 6 parti:
* BREAK: Segnale di inizio della trasmissione di un gruppo di dati della durata minima di 88 µs e quindi 22 bit a 0.
* MARK AFTER BREAK (MAB): Porta tutti i canali a livello basso; può essere visto anche come un reset. Ha una durata minima di 8 µs o 2 impulsi. La durata massima di questo comando è di 1 secondo. Precedentemente, prima della riforma del 1990, l'impulso durava 4 µs o 1 impulso.
* START CODE (SC): È il comando che indica che si sta cominciando la trasmissione del livello dei vari canali. In confronto al MAB o BREAK questo comando ha una durata fissa di 44 µs o 11 impulsi. È formato come un normale frame CD ma con il valore tutto alto.
* MARK TIME BETWEEN FRAMES (MTBF): È il comando che indica l'avvio della trasmissione del valore di un canale. Può avere una durata variabile da 0 ad 1 secondo.
* CHANNEL DATA (CD): È il comando che trasporta il livello di un canale. È formato da 3 parti: uno Start bit di 11 impulsi che indica l'avvio della trasmissione del valore, un valore variabile da 0 a 255 formato da 8 bit (potenze di due, ad esempio se voglio il valore 67 avrò a 1 il primo, il secondo e il settimo bit, infatti gli 8 bit corrispondono a 1-2-4-8-16-32-64-128), un segnale che indica il termine della trasmissione del valore formato da 2 bit.
* MARK TIME BETWEEN FRAMES (MTBF): È il comando che indica il termine della trasmissione per un canale e indica il passaggio a quello successivo.
Un blocco di dati ha perciò una durata complessiva di 22754 µs.

## Tipi di controller

Esistono numerose tipologie di controller DMX, da semplici mixer a 8 canali a console capaci di controllare più di 32000 parametri, con la possibilità di creare sequenze della durata di diverse ore.
Diverse console sono studiate appositamente per il controllo di fari a testa mobile, e presentano joystick o particolari ruote chiamate encoder per incrementare con velocità e precisione i valori di rotazione. Essendo chiaramente impossibile creare una console con 32000 cursori, si fa uso di slider motorizzati che assumono i valori dei canali assegnati.