Make it inspiring
 

DMX512A

歴史

70年代の後半から始まる照明器具の軽量化が、演出照明で利用する照明器具を増加させたことに加え、これに伴うコンサート等の大規模化により、ステージ分野で利用される照明器具の数は極端に増加し、それらを制御するディマーコントロールチャンネルも同じく増加しつづけていました。こうした時代背景から、DMX512は舞台やコンサートステージ分野における照明制御の信号を一本のケーブルで大量に伝送することを目的に作られたプロトコルです。

1986年からアメリカ劇場技術協会(USITT)で開発が始まり、1990年に最初のDMX512規格が発表されました。(DMX512/1990) その後、Entertainment Services & Technology Association (ESTA)による改訂プロセスを経て、2004年にアメリカ規格協会(ANSI)によって承認されたのちに2008年、再改訂されて現在の E1.11 2008 USITT DMX512Aがリリースされました

DMX512というプロトコル

概要

 

DMX512はEIA485 ( RS485 )の電気的仕様の上で、変化するレベルデータを1chあたり8bitの解像度で512ch伝送することができる非同期のシリアル伝送規格です。非同期の意味は送信するデバイスと受信デバイスとの間で共通の同期信号を伴わない通信という意味です。このDMX512の規格では物理レイヤーのコネクターの仕様、トランスミッターやレシーバーのアイソレーションについてなどEIA 485の規格では言及されていない追加の仕様に言及した上でリンクレイヤーのパケットフォーマットについて定義しています。

基本的にはEIA 485の規格に基づいているため、バランス伝送された信号の差動回路で動作し、1つのバスライン上に32台の装置を接続できる点や終端抵抗が必要な点などはRS485と同じです。

DMX512は照明制御のために開発されたプロトコルで、ボーレートは250kb/s程度、毎秒30~44回のリフレッシュを行うため、反応の速さが他の照明制御プロトコルと比較して早いこと、一本のシールド付きツイステッドペアケーブルで平均して300m程度の長距離に伝送可能なことや、1バスライン32台の装置をディジーチェーンで接続でき、それ以上の台数が必要な場合は、信号のスプリッター等を間に挟み、複数ラインに分岐することで接続台数を増やしていくことで、32台以上の装置を1つのシステムで制御可能としている点などの特徴があります。

* 伝送可能距離については、実際の現場における体験から現実的な数値として300mとしてあります。

DMX機器の接続構成

1台のコントローラーから出力されるDMXを分岐する装置(スプリッター)を通すことで、再度、個々のポートでDMXをトランスミットするため、それぞれのラインに32台のレシーバーを接続できる。レシーバー同士はディジーチェーンで接続することが可能。

受信装置のDMXアドレス設定

DMX512は、512個のレベルデータが同じバスにつながるすべての装置に届きます。この時、レシーバーとなる照明器具はあらかじめアドレス設定が行われている必要があります。このアドレス設定は、たとえばRGBの照明器具でRGBの順番にDMXChが割り当てられている装置の場合、先頭のアドレス(スターティングアドレス)を何番にするかを設定しておきます。こうすることで、先頭アドレスをたとえば7にセットしたなら、RGBの順番に7,8,9というアドレスを使うことになり、コントローラー側ではこの照明器具を操作するために、DMXの7,8,9を操作してデータを送ることで、この照明器具がDMXデータを受け取った際に、意図したとおりの色を出力してくれることになります。

 

ケーブル接続

DMX機器の接続方法(デイジーチェーン) Wikipediaより

DMXプロトコルの基盤となるEIA485の規格は、2線の伝送路で送る信号、1つを+、もう一方をマイナスとして、差動回路で受け取り、2つの入力の差電圧を増幅することで、両方に含まれる同相ノイズを除去する方式のため、ノイズに強く、長距離の伝送に向いた伝送方法です。また1つのバスラインに32のレシーバーをぶら下げることができる点など、DMX512 が持つすべての特徴はEIA485に基づいています。

EIA485の規格では1つのバスラインに32台のレシーバーをぶら下げることが可能で、レシーバーはディジーチェーンで接続し、最後のデバイスのDMXポートは開放にせず、反射波を抑止するための120オーム程度の抵抗(ターミネーション)を入れると規定されていますが、実際の現場では最大接続数の32台を繋ぐことはなく、トラブル回避のために20数台程度に抑えるべきです。またターミネーションの抵抗は必ずしも接続しなくても、普通に動作するケースがほとんどで、トラブルが発生した際に、接続するケースが多いと思われます。

アイソレーション

DMXのシステムでは複数拠点をスプリッターを使って接続することで大規模なシステムの構築ができますが、同じ拠点の同一電源で複数の装置をDMXケーブルでつなぐ場合は特に問題にならないけれども、異なる電源の複数拠点をつないでいくことで、シールド線のアースですべての機器がつながってしまい、ノイズによる通信障害や2点間の電位差による機器損傷やトラブルなど一点のトラブルがケーブルでつながる全体のシステムに影響を与えるため、スプリッターなどの分配器は通常、入出力それぞれにアイソレーション(絶縁)が施されています。(アイソレーションされていない装置もあります)

ケーブルを使って長距離へのDMX伝送、複数拠点の接続の際には、フォトカプラ等でアイソレーションされたスプリッターを使用することが重要になります。

DMXアドレス設定

DMXに対応する照明器具は、個々にDMXのアドレスを指定する機能を持ち、また複数のDMXチャンネルを必要とする装置などは、その装置のパラメーター(アトリビュートともいう)をスターティングアドレスからどの順番で制御するかの定義情報を持ちます。このパラメーターの順番がどういう順番に並ぶかを定義したデータをプロファイルやモードと呼び、1つの照明器具で複数のプロファイルを持つ場合があります。照明器具にDMXアドレスを設定する場合、このプロファイルの先頭に使用するDMXチャンネル番号を設定します。例えば、3ch使用するLED器具であれば、先頭をアドレスを4とした場合、4〜6のチャンネルをその器具が使用します。2台目は、次の空いているチャンネル7から使用可能です

右の写真はスターティングアドレス(先頭アドレス)を83番にセットし、パラメーターの順番を定義した情報(パーソナリティー又はプロファイル)をP1にセットした状態

DMX パッチ

つまりDMXのシステムでは、先に照明器具側で、何番のチャンネルを使用するのかを設定し、またDMXを送信するコントローラー側でも、パッチと呼ばれるDMXのチャンネルを、プログラムを行う上で必要となるコントローラーのチャンネルと繋ぐ作業を必要とします。

照明コントローラーでは、制御対象となる照明器具(複数存在する)をチャンネル番号、デスクチャンネル、またはFixture 番号といった番号で識別します。例えば使用する照明器具が10台ある場合、1〜10のチャンネルまたはFixture番号をコントローラー内にセットアップします。この時、照明器具が複数のDMXチャンネルを使用する器具であれば、コントローラーもまた器具と同様にプロファイルデータをもち、このプロファイルデータを選んでセットアップを行います。例えばRGBの器具であれば3ch必要な上に、色の並びがRGB、BGR, RBGなど、いずれかをデータベースの中から適切なプロファイルを選択して、コントローラー内に定義します。そして、セットアップした1から10の番号の照明器具を、何番のDMX出力チャンネル番号で制御するかを決定するのがパッチです。

パッチはコントローラーにセットアップした照明チャンネル1〜10を、出力するDMXチャンネルに関連付けする作業です。セットアップしたプロファイルによって占有するDMXチャンネル数は変わります。このパッチ作業を行うことで、コントローラーのデスクチャンネルからDMXのレベルが出力され、それが届いた照明器具が自身のDMXチャンネルに合致するデータを読み取り変化します

DMX512/1990 から DMX512A へ 改訂されたDMX

物理レイヤーにおける改訂

DMX512Aという最新のDMXプロトコルは、旧規格との完全な互換が保証されていますが、物理的な接続の点では、まず使用可能なXLRコネクターの定義が明確になりました。5pinのコネクターのみを許可し、それ以外のXLRコネクターを禁止、RJ45コネクターの使用を追加で許可しています。

元々、RS485の仕様は、同一バスラインで32ドライバーと32レシーバーを接続できることになっており、全二重及び半二重通信が可能になっています。このことから通常は通信に、2本の線を使う従来のDMXに対してセカンダリーとなるもう1つのペアのライン使用をRS485の通信用途に限定し正式に規定、全二重通信などに活用できるとしています。このDMX5pinコネクターの4番5番ピンに明確な意味を持たせたことは旧規格との大きな違いになります。

また2番と3番ピンを使用するプライマリー回線においても、半二重通信を許容し、RDM通信のためのプラットホームとして使用可能なものになります。このため、RDM のためのバイアス回路を組み込むことや、送信受信の両本のエンドでの終端抵抗の必要性など、旧規格にはない工夫が必要となっており、この点がDMX512Aの大きな改訂ポイントになると考えられます。

現在主流となるANSI規格として正式に承認されたDMX512Aは、それまで存在した旧規格DMX512/1990とは完全な互換を保証するものの、その仕様書の中で定義される追加的な仕様は、旧規格にはなかった仕様であり、事実上DMX512というプロトコルには2つのタイプのプロトコルが存在していることになります。その主要な改訂ポイントについて下記に整理します

DMX512A改訂ポイント

  • DMX512-A は、データ接続のためのより高いレベルの電気的保護(アイソレーション)について定義しています。これにより、静電気や落雷、接続された別の装置からの電圧などからの損傷の可能性を減らすことができます。

 

  • 物理的な接続のコネクターについて、XLRコネクターの5pinタイプのコネクターを正式なDMX512用のコネクターとし、それ以外のXLRコネクターの使用を禁止しています。またXLRコネクターが物理的に搭載できない場合に、端子接続の利用を許可しています。そしてこれらの接続方法以外にRJ45コネクターについても利用を許可し、使用する接続ピンの定義を行なっています。

 

  • これまで明確な規定がなかったXLRコネクターの4.5ピンの利用方法について明確に定義され、XLRコネクターの2,3番ピンの接続をプライマリーとし、4,5番ピンの接続をセカンダリーとしてRS485の通信以外の使用を禁止しています。

 

  • スタートコードの新たな定義とスタートコードを用いて送信する新定義のパケットSIP(システムインフォメーションパケット)SIPはスタートコードCFh(207)に続くデータとして送信でき、DMXのユニバース番号やメーカーがテスト用途で送信するパケットデータを組み込むことができます。その他同じくスタートコードで分類されるアスキーテキストの送信などDMX512データだけでなく、異なるフォーマットの情報を送ることが定義されています。

 

  • 双方向通信の実現。プライマリー接続を使っての半二重通信を許容しています。これによりスタートコードによる分類で、RDM(リモートデバイスマネージメント)プロトコルの通信が実現します。また、セカンダリー接続を併用しての全二重通信も可能と新たに定義しています。

物理レイヤー(利用可能なコネクターの仕様)

 

DMX512Aの規定では、通信メディアに EIA-485-A バランス 伝送を使用し、差動回路で駆動されます。デバイスの物理的な接続には、5 ピン XLR コネクタが正規のコネクターとして規定されており、それ以外の3ピンXLRコネクターなどの使用は禁じています。物理的にXLRコネクターが利用できない場合は、ユーロブロック等の端子への「配線」によって行われます。またDMX512Aからは、イーサネットで利用されるRJ45 の使用も定義されています。

XLR 5pinコネクターの接続

RJ45コネクターを使用する場合のケーブル接続

  •  ANSI/TIA/EIA-568 スキーム T568B に準拠したピン番号とケーブル色

物理上、やむを得ない場合は、写真のようなユーロブロック等の端子接続も可能

電気的な仕様

 

DMX512Aは、基本的には、EIA485の仕様に基づいており、EIA485と大きく異なる点はありません。しかし回路保護のための耐電圧の仕様などは追加されており、仕様の確認が必要です。また、旧規格と異なり、双方向の通信を許容し、実質上、DMXの拡張規格となるRDMに対応したハードウェアの仕様が求められるのがDMX512Aだと言えます。そのため、物理レイヤーにおいても、RDMの仕様を理解した上での設計が必要になります。

  • バスのスレーブ終端の終端抵抗は120Ωが必要だが、コントローラ側にも同様に133Ωなどの異なる抵抗を接続する 

        (バイアスをかけるためのプルアップ、プルダウン抵抗との合成抵抗は120Ωになる)

  • DMXスプリッタ- のIN側はコントローラから見るとスレーブなので終端抵抗は120Ω
  • DMXスプリッタ- のOUT側はスレーブから見るとRDMコントローラなので終端抵抗やプルアップ抵抗、プルダウン抵抗はRDMの規定に従う

リンクレイヤー データの構造

DMXデータの構造は、スロットと呼ばれる1chのデータが512個、連続的に送られる。1つのスロットのフォーマットは下表のような構造になっています。

Bitポジション 内容
1 スタートビット
2〜9 8bit分の1chレベルデータ
10,11 ストップビット(HighまたはMark )

こうしたchのデータに加え、先頭にスタートコードと呼ばれる8bitのデータを置き、このスタートコード以降に続くデータをDMXのレベルデータもしくは、システムインフォメーションパケット(SIP)やテキストデータなどに識別するコードを加えて513スロットで伝送される。伝送速度は250kb/sです。

ボーレート250kb/sの設計では、1bitにおける時間が 4 マ​​イクロ秒 (1/250000) に設定されます。非同期送信では上記の表の通り、 2 つのストップ ビットが使用されるため、送信される各スロットには合計で 11bitのデータがあり、それはつまり、4 x 11 = 44 マイクロ秒となり、1スロットあたりにかかる時間は44μsと計算できます。

DMX512 は非同期プロトコルであるため、スロットはバスがアイドル状態のときにいつでも送信できます。データが送信されてない時、バスはHigh状態で「アイドル」します。

受信機はスタートビットを見て、11bit すべてが読み取られるまで 4μs 間隔で残りのビットの読み取りを行います。最後の 2 つのbitがストップ ビットですので、 2 番目のストップ ビットの後、回線はアイドル状態になるまたは、すでに高いので何もしないことを意味します。ここで新しいスタート ビットを送信して別のバイト転送を開始することができます。こうして順次512chのデータが連続的に送信され、それを受信機は受信することができます。

フレームフォーマットとタイミング

DMXのデータは下図のようなフレーム構造になっており、8bitの個々のデータはブレイクタイムに続くマークアフターブレイクの後に続いて送信されます。レシーバーは、それまで電圧がハイの状態のアイドルからブレークとなるLowレベルとその後に続くマークアフターブレイクというHighレベルにより、フレームの開始を認識します。

データスロットはフレーム内の位置によって識別されます。マークアフターブレイク(Highレベル)の後に続くスタートビットで、ここからデータスロットが始まり、最初のスロットはスタートコードであり、そのあと順番に1から512チャンネルのデータが続くことになります。最後のスロットはスロットの後の長いアイドル状態(HIgh)により識別されます。下記の表はこのフレームにおけるタイミングの最小値、標準値、最大値をまとめたものです。

DMXフレームにおけるブレイク等のタイミングの重要性は、このタイミングに幅があり、旧規格の時代はメーカー各社が共通の値ではなく、独自に解釈して設定したため、互換性に問題があったことにあり、現在も特にブレイクタイム、MABの値の違いにより、レシーバーがデータスロットの位置を誤認識することで照明がフリッカーを起こしたりする問題が存在する。そのためイーサネットとDMXのゲートウェイ装置などは、出力するDMXのこれらタイミングパラメーターを調整することで接続する機器に合わせる機能などを持ちます。

スタートコードによる分類

DMXデータの先頭に位置するスタートコードは8bitのデータであり、後につづくスロットの識別のために用意されています。DMXプロトコルでは、このスタートコードを1スロットして合計513スロットのデータを送っています。このスタートコードの役割は、このコードの内容によって、後に続くデータを分類することができるため、受信機がそれに応じて受け取ったデータをそれぞれの目的で処理できる点にあります。このスタートコードによる分類は初期のDMXプロトコルから存在していたものの、ほとんど利用されていませんでした。DMX512Aではこの定義を見直し、下記のコードを定義して、DMX以外のデータの送信を可能としています。

スタートコード16進数 スタートコード 10進数  目的
0x00 0  通常のDMXレベルの送信
0x17 23 アスキーテキスト パケット

アスキーテキストパケットの目的は、文字コードに準拠したテキストデータで診断結果などの送信と表示を行うことです。

 

0x55 85 テストパケット スタートコード 55h (10 進数で 85) は、すべてのデータ スロットの値 55h (10 進数で 85) を送信する512 データ スロットの特別なテスト パケットです。
0x90 144 UTF-8 テキストパケット UTF-8テキストパケットは、アスキーコードで表現できない場合の代価用のツールです。
0x91 145 メーカーID  送信されるバイトはMSB, LSBの順です。このフィールドはメーカー固有の用途として予約されています。メーカーIDに続く次のバイトはメーカーサブコードです。
0x92 – 0xA9 146 – 169 将来の拡張のために予約
0xAB – 0xCD 171 – 205 将来の拡張のために予約  0xCCはRDMで使用
0xCF 207 システムインフォメーションパケット

SIP(システムインフォメーションパケット)は、直前のNull スタートコードで送られたDMXデータのチェックサムデータが含まれます。使用用途はシステムテスト機能としてテストパケットと組み合わせておくることで、データの追跡や解析などに役立てることができます。

 

0xF0 – 0xF7 240 – 247 実験用・プロトタイプ用に予約

 

16bit制御

DMX512は変化するバリューを512個分伝送するプロトコルで、当初は照明の明るさを制御するSCRへの制御信号(0~10v)を置き換えるものとして誕生したものの、この変化する値は、さまざまな制御に応用ができました。例えば特殊効果の発火トリガーや、噴水のバルブの開け閉めなど、ショー制御のためのプロトコルとしてDMXは最適な仕組みだったと言えます。そして照明の世界では、単に明るさを制御するだけでなく、ムービングライトのようにステッピングモーターで動くシャッターで明るさを制御したり、ズームレンズの動きや、ムービングヨークの動き、縦の動き(Tilt)横の動き(Pan)を制御するためにも使われます。

DMXの1スロットは1バイトです。したがって、スロットレベルは10進数で0から255を表現できます。この255までのレベルをインデックスとして解釈すると、個々のインデックスに特定の意味を持たせることができます。例えばさまざまな色のフィルターが入ったホイールをモーターで制御するとき、インデックス50では赤、20では青、0の場合にホワイトというようにDMXを受信する装置側でその値が来たらホイールのポジションを動かすことができます。操作する側でも、そのプロファイルデータをもとに、DMXレベルを設定することで、思い通りの制御が実現できます。

モーター制御を行う場合に問題になったのが、DMXの1バイトでは255ステップしか表現できず、365度の回転を表現するには、より高い解像度が必要でした。そこで、DMXを受信する装置で、2つのスロットを使い、1つを上位バイト、1つを下位バイトとして、255×255 = 65,535ステップの表現ができるようになります。これがDMXレベルの16ビット分解能です。