Protokol DMX512 byl navržen v roce 1986 institutem USITT [1] pro řízení stmívačů a dalších speciálních efektů pomocí digitálního rozhraní. Měl nahradit do té doby používané analogové řízení, kde jako řídící veličina sloužila konkrétní hodnota napětí[1] na řídícím kabelu. S tím bylo spojeno hned několik potíží: Pro každý řízený vstup (např. jeden kanál stmívače) byl potřeba jeden vodič, navíc nebyla vždy přesně dána řídící veličina, neboť vlivem výrobních tolerancí mohla různá zařízení chápat či vydávat mírně odlišné povely. Také analogový přenos byl samozřejmě náchylnější na rušení, což v blízkosti několika kilowattových stmívacích jednotek nebylo zrovna veliké plus. Základem protokolu DMX512 je jeho elektrická specifikace. Ta vychází z osvědčeného průmyslového standardu EIA485 (dříve značeno RS-485 popř. RS485), a vzhledem k používání tohoto standardu v průmyslu jsou i technické prostředky pro jeho implementaci levné a přizpůsobené pro náročné podmínky.
Jako převodníky mezi úrovní TTL a EIA485 jsou běžně dostupné obvody např. SN75176B od Texas Instruments [2] v provedení DIP 8 či SOP 8, nebo dražší a méně dostupné obvody MAX485 od Maxim Integrated Products [3]. Pro galvanické oddělení existuje i řada dalších obvodů, které mají vše potřebné na jednom čipu. Jde např. o obvody ISO485P od Burr-Brown [4].
1.3 Popis datového formátu DMX512
Přenosová rychlost protokolu DMX512 byla stanovena na 250 kBit/s[2]. Data jsou po sběrnici posílána sériově a jak název napovídá, paketem obsahujícím maximálně 512 datových bajtů. Po sběrnici se posílají pouze data bez adresy. Každé zařízení má nastavenou svou vlastní počáteční adresu a od této adresy přečte požadovaný počet bajtů. Počáteční adresa může tedy nabývat hodnotu 0 až 511. Budou-li mít dvě stejná zařízení stejnou adresu, budou také na posílané povely reagovat společně. Tak lze připojit ke sběrnici i více zařízení - za předpokladu, že bude jejich funkce společná. Časování v protokolu DMX512 je vyobrazeno na obrázku 4.1 převzatého ze stránky Soundlight [33] a příslušné hodnoty jsou v tabulce 4.1. Přenos je realizován asynchronně a jeho začátek je synchronizován nulovou úrovní „Break“ (Reset), která musí trvat nejméně 88 us, a následující synchronizační mezerou MAB (Mark After Break) s vysokou úrovní a minimální délkou trvání 8 us. Dále následuje první poslaný rámec (start code)[3] a za ním zbývajících 512 datových rámců. Každý rámec (přenesený bajt) se skládá z jednoho start bitu, osmi datových bitů bez parity a dvěma stop bity. Mezi jednotlivými rámci mohou být mezery MTBF (Mark Time Between Frames) a MTBP (Mark Time Between Packet) v délce nejvíce 1 s. Některé starší zařízení (jde opravdu o vzácné vyjímky) však mohou mít problém s nulovou mezerou u MTBF. HW pulty pro ovládání mívají právě tuto mezeru nenulovou narozdíl od některých USB kontrolérů.
![](http://dmx512.svetla.org/theory_soubory/image002.jpg)
Obr. 1 - Časový diagram přenosu jednoho datového paketu v protokolu DMX512
číslo |
Popis |
Min. |
Typ. |
Max. |
Jednotka |
1 |
Break (Reset) |
88 us |
176 us |
1 s |
v tabluce |
2 |
MAB (synch. mezera) |
8 us |
- |
1 s |
v tabulce |
3 |
Rámec |
43,12 |
44 |
44,48 |
us |
4 |
Start bit |
3.92 |
4 |
4.08 |
us |
5 |
LSB (první dat. bit) |
3.92 |
4 |
4.08 |
us |
6 |
MSB (poslední dat. bit) |
3.92 |
4 |
4.08 |
us |
7 |
Stop bit |
3.92 |
4 |
4.08 |
us |
8 |
MTBF (mezera mezi rámci) |
0 |
0 |
1 |
s |
9 |
MTBP |
0 |
0 |
1 |
s |
Tab. 1 - Přehled časování protokolu DMX512/1998
Z přenosové rychlosti 250 kBit/s vyplývají následující časové údaje: Doba trvání jednoho bitu je 4 us a datového rámce 44 us (11 bitů). Celý přenos s celkovým počtem 512 datových bajtů má délku trvání danou následující rovnicí:
Break + MAB + (1 + 512) * rámec = 88 + 8 + 513 * 44 = 22,668 ms
Z toho vyplývá nejvyšší opakovací frekvence přibližně 44,12 Hz při plně využité sběrnici. Tato hodnota je pro naše účely dostačující.
Další stavy, které se mohou na sběrnici objevit, jsou dlouhodobý výskyt vysoké, nebo nízké úrovně. Pakliže je delší než 1 s, je stav vyhodnocen jako ztráta signálu. Reakce na tento stav je nechána na libovůli výrobce. Často zařízení setrvávají v naposledy nastavené pozici, někdy se resetují. Samotné moduly jsou zapojeny v topologii sběrnice, kde na straně vysílače a přijímače musí být zakončovací odpor (terminátor). Lze použít také rozbočovačů (splitters) a opakovačů (repeaters). Příklad takového zapojení modulů je uveden na následujícím obrázku.
![](http://dmx512.svetla.org/theory_soubory/image004.jpg)
Obr. 2 – Zapojení sběrnice DMX512
Jak již bylo v úvodu řečeno, pro propojení se používá symetrického kabelu, tedy dvou aktivních datových vodičů se společným stíněním. Podle normy DMX512/1998 je standardní konektor pětipinový XLR, kde je zásuvka na straně vysílače a vidlice na straně přijímače, avšak v praxi jsem se setkal zatím jen s používáním třípinové verze konektoru XLR. Pro propojení modulů je někdy navrhováno použití symetrického mikrofonního kabelu. V tomto případě je ale důležité zkontrolovat, zda-li není stínění zapojeno na kostru konektoru. Správně podle normy musí být na pinu číslo 1. Podle manuálového listu od výrobce osvětlovací techniky American DJ řípadné připojení stínění na kovový kryt konektoru může zapříčinit zkrat nebo nevyzpytatelné chování. Zapojení konektoru XLR je vyobrazeno na obrázku 3, zapojení propojovacího kabelu v tabulce 2 a zapojení redukce mezi tří a čtyřpinovým konektorem je v tabulce 3.
Obr. 3 - Rozmístění pinů na konektoru XLR 5-Pin a 3-Pin
Pin |
Vodič |
Signál |
1 |
Stínění |
GND / 0 V |
2 |
1. pár (black) |
Data- |
3 |
1. pár (white) |
Data+ |
4 (již se nepoužívá) |
2. pár (green) |
Data2- |
5 (již se nepoužívá) |
2. pár (red) |
Data2+ |
Tab. 2 - Zapojení kabelu ke konektoru XLR
Vodič |
3-Pin XLR zásuvka (Výstup) |
5-Pin XLR vidlice (Vstup) |
GND / Stínění |
Pin 1 |
Pin 1 |
Data- |
Pin 2 |
Pin 2 |
Data+ |
Pin 3 |
Pin 3 |
Data2- |
- |
Pin 4 |
Data2+ |
- |
Pin 5 |
Tab. 3 - Zapojení redukce mezi 3 pinovým a 5 pinovým konektorem XLR
_____________________________________
[1] z rozsahu 0 až 10 V
[2] Převodní jednotka „k“ má hodnotu 1000 a trvání bitu je 4 us.
[3] V normě je tento rámec definovaný jako nulový, za předpokladu, že následující datové bajty se budou týkat pouze stmívacích jednotek. V praxi je však jeho hodnota ignorována, neboť jsou mnohdy na jedné sběrnici společně stmívače a jiná zařízení. Dodržení této normy by přineslo komplikace s potřebou měnit tuto hodnotu, a tím by došlo k násobnému zvýšení latence.