淺談燈控協定-DMX512

以下文章轉發自【器材組必看】淺談燈控協定-DMX512

在專業舞台燈光控制中,燈光的調光和控制,人們大量採用了DMX512的控制協議,它是由美國劇場技術協會(United State Institute for Theatre Technology Inc)於1986年8月提出的一個能在一對線上傳送512路可控矽調光亮度資訊的標準,DMX512通信方式是採用了非同步通信格式,每個調光點由11個位元組成,其中一個是起始位元,8位元調光資料,兩個停止位元,每一次傳輸能傳 512 個調光點。在1990年進行了升級改進,現在多採用1990版本的協議。硬體上採用的是RS-485傳輸,說白了就是串列資料了,和我們的RS-232是一樣的,只是DMX512在前面加多了位起始位元和在後面加多位停止位元,當然DMX512速率比RS-232要高很多,為250kbps。

通俗地說,DMX512就是一種通訊協定,一種軟體層面的東西,就好像我跟家人可以說台語,跟天龍人必須說國語一樣,如果說台語,天龍人就聽不懂了,我們所說的話就是一種「協定」。「協定」就是大家按照一種大家認定的方式進行溝通的「規矩」,但是「規矩」必須需要一種載體,DMX512的載體就是RS-485,就是訊號結構是RS-485,RS-485是一種差分信號,就是D+、D-直接通過電壓差產生不同的時序,因此可以傳輸得很遠,理論上可以傳1公里,2根線就能夠完成傳輸,現實中會加根地線,取消同樣可以使用。

下面簡單介紹下我們經常用到的介面。RS-232就是序列埠(Com Port),早期的電腦都帶序列埠,一般是9針,其中我們常使用其中的3針,就是2、3、5這3針(發射、接受、地線)。序列埠的傳輸速度比較慢,傳輸距離比較短,並非TTL電平,現在基本上已經被淘汰了,被USB取代,但現在還有一些音響設備需要序列埠介面進行調校,一般工程師多採用USB轉序列埠的方式和電腦連接調校。順便提一下,如果你電腦的RS-232介面(序列埠)可以跑250K的話,那麼你只要買個485轉換盒就可以自己做一台DMX512控制台了,可惜的是我們的序列埠最高只能跑115200bps,嘿嘿,美國劇場技術協會沒有那麼傻,會讓我們輕易的製造出DMX512控制器,否則他們就沒飯吃了,人家早就想好了。


RS-232 (Com-port)圖解

再說說RS-485,這個東東其實我們在很多專業設備裏面都有,比如很多集中控制系統裏面都有,它實際上是一種硬體結構,相當於一條路,路上跑什麼DMX512啊、賓士啊、BMW啊還是可愛的學妹騎腳踏車,它可不管,那是車主的事情,也就是說,這條路上跑什麼DMX512協議啊,還是什麼自己定義的亂七八糟的特務協議啊什麼猛猛協議的都不關它的事,反正來什麼跑什麼。RS-485的特點是傳輸距離神遠,速率不高時,可達1公里啊。在遠距離的現場施工中一般會使用RS-485傳輸,不要給我講採用網路傳輸會傳得更遠,嘿嘿,100M網路線才能傳120 多米~180米以下,多了就要加中繼器,如果要傳1000米,中間要加個多少個這樣的東東呢,我數學不好,各位同學幫我算算,當然光纖就另當別論了,可惜光纖沒有一般的工具,我們普通人是搞不定的,那個接頭的設備可不便宜。


RS-485差分信號圖解

在專業燈光中,RS-485的通信載體一般採用雙絞線或者XLR線,其特性阻抗不是標準的120Ω,如果需要遠距離傳輸,建議採用專業的RS-485線。為了減少RS-485線路上傳輸信號的反射,在RS-485網路傳輸線的頭端和尾端應各接一個120Ω的匹配電阻。由於RS-485的特性,接收器的檢測靈敏度為±200 mV,即差分輸入端VA-VB ≥+200 mV,輸出邏輯1,VA-VB ≤-200 mV,輸出邏輯 0;而當A、B端電位差的絕對值小於200 mV時,輸出不確定。如果在匯流排上所有發送器被禁止,則接收器輸出邏輯0(DMX512協議中的BREAK),這會誤認為通信幀的起始引起工作不正常。解決這個問題的辦法是人為接地使A端電位高於B兩端電位(DMX512的IDLE),這樣RXD的電平在RS-485匯流排不發送期間(匯流排懸浮時)呈現唯一的高電平,我們可愛的轉接盒就不會被誤中斷而導致燈具收到亂字元。要解決這個問題,可以通過在RS-485電路的A、B輸出端加接上、下拉電阻,可以很好地解決這個問題。

好了,軟體層面的是DMX512協定,硬體層面的是RS-485傳輸,我們算是瞭解了DMX512控制台的結構。那麼,我們有什麼好辦法可以通過電腦製作DMX512控制台,像早期Martin的3032一樣呢?有 5 種辦法:

1. 拆開電腦主機,在PCI插槽上加塊DMX512協定轉換卡,早期Martin的3032的做法。哈哈,現在傻子才這麼幹了,成本高、非專業人士搞不定、攜帶不方便、NB電腦不能使用,相當的麻煩。

2. 使用並列埠接單片機,按DMX512協定進行資料轉發。並列埠就是早期的印表機口(現在基本上完全淘汰了),不易採用。

3. 使用RS-232序列埠,按DMX512協定進行資料轉發,現在RS-232序列埠也快淘汰了,也不易採用,估計現在的NB電腦很難找到序列埠了。

4. 使用USB介面,按DMX512協定進行資料轉發,嘿嘿這個才是正道,USB速度快,即使採用最低速的 USB,也能傳1.5Mbps,這個速度是DMX512的6倍多,估計傳我們的DMX512是綽綽有餘了。最重要的是,USB介面到處都是,估計沒有哪台電腦中沒有,不管是PC還是NB,如果沒有那就不叫電腦了,該叫殘腦…連我的手機都有USB介面,還有什麼地方沒有呢?

5. 還有一種更高級的方法,就是採用網路傳輸,通過設備轉換成ArtNet協定或者ACN網路協定,然後在網路上傳輸,在終端再進行解碼成DMX512協議,這種方法好處很多,也可無線有線傳輸,唯一的壞處是成本太高了,推廣比較麻煩。技術難度上,現在有開放原始碼的uIP協議可使用,通過對uIP的編輯可以做到網路傳輸DMX512數據。

現在詳細來瞭解下DMX512控制協議及其時序,如下圖:

DMX制式的標準

從DMX512協議來看,DMX512的標準規定在「一根線上」只能傳512個通道的資料,這就是為什麼很多控制台有多個UNIVERSES的結果,因為每個UNIVERSES最大只能傳512個通道,如果要高於512個通道,比方說2048個通道,那麼需要通過4個UNIVERSES進行輸出。也就是說每個UNIVERSES只能發送512個通道,即每根線上最多只能傳輸512個通道,需要大於512個通道的,只能通過第2個UNIVERSES輸出,需要另外的UNIVERSES頭輸出,還需要再接根線,這就是那些高檔控制台,比如珍珠(南夜用的控台)、MA、Martin等後面會有4個或者多個UNIVERSES輸出的道理,那是為了支援大於512個通道設計的,如果有4個口輸出,就說明這個控制台支持2048個通道(4×512=2048)。

UNIVERSES 和通道的對應關係為:

UNIVERSES CHANNELS
1 1-512
2 513-1024
3 1025-1536
4 1537-2048
5 2049-2560
6 2561-3072

我們再來看看,DMX512標準規定發送全部512個通道需要多少時間,即更新率。從標準圖上來看,其中需要的時間最小有:

Break=88us
MAB=8us
FRAMEWITDH=44us
STOPBITES=4us
MTBF/MTBP為自己定義。

那麼總共發送512個通道應該多少時間呢?我們可以這樣來計算,一般Break時間我們會適當取長點,不會取個最小臨界值88us,比如取120us,然後MTBF取0,MTBP取50,其中還要加上一個STARTCODE=44us(資料0,表示要開始發送資料了),這樣總共時間為:

120+8+4+44+44×512+0(MTBF)+50(MTBP)=22754us
於是更新率為:1000000/22754=44.9Hz ≈ 45Hz

這就是DMX512協議的標準刷新率,當然如果MTBF取值的話,更新率會減低點,我個人的慣例是,如果燈控台發送資料採用計時器時,MTBF取值為0,如果不採用計時器時(可節約計時器作為它用),MTBF取10us。更新率為45Hz,也就是全部發送512個通道需要的時間大約為22ms左右。第一個通道和最後一個通道的變化大約有22ms左右的時間差,這個時間差是實實在在存在的,但是我們感覺不到,因為太快了,再說,即使全世界最好的電腦燈,它的反應也沒有這麼快,轉動的齒輪啊,XY移動啊,沒有個零點幾秒是不可能反應過來的。

還有就是,對於250Kbps速率的DMX512和最低速USB1.1的1.5×1024Kbps速率比較,即使是再低速的USB傳輸也綽綽有餘,DMX512不是一個非常快的東東,我們來看看,USB傳輸的速度比DMX512大多少,計算如下:

低速USB速率:1.5×1024Kbps
DMX512 速率:USB/DMX512=250Kbps
1.5×1024Kbps/250Kbps=6.14

也就是說,世界上最慢的USB的傳輸速度也比DMX512快6倍多,所以大家無需擔心USB傳輸速度慢的問題。你就放心大膽的去用最低速的USB吧,也夠用了。