DMXプロトコルをまとめる

DMX512-A仕様

  • シールド付きツイストペアケーブルを使用すること
  • RS-485では1500mまでの通信が保証されているが、RS-485の仕様の中でケーブルの長さを伸ばすと通信速度が下がるとされているので、DMX512-Aの通信速度250kbpsが保証されるのはケーブル長400mまでとされている。
  • RS-485の仕様では1Masterで32Slaveまでとされている
  • DMX512-Aのボーレートは250kpbsなので、1bitあたり4μsec (※1)
  • 端末にはターミネータ(終端抵抗)をつけるDMX512-Aでは基本的に120Ωとなっている(100-120)と幅を効かせて定義もされている。
  • 仕様上では1パケット長が最小で22.7msecになり、リフレッシュレートは最大で44Hzになる

※1: 仕様では基本250kbpsとしているが245 ≤ n ≤ 255kbpsまで認めているので、1bitは3.92 ≤ n ≤ 4.08µsecまでと幅がある。

パケット仕様

パケットは以下のフレームで構成されている。

http://www.iar.unicamp.br/lab/luz/ld/C%EAnica/Manuais/dmx_usit.pdf

f:id:MagmaChocolate:20180102234649p:plain f:id:MagmaChocolate:20180102234658p:plain

No. Frame Long Info
1 "SPACE" for Break 88µsec 1sec ※1 LOW
2 "MARK" After Break (MAB) 8µsec≤n<1sec HIGH
3 START Bit 1bit (4µsec) LOW
4 SLOT nnn Data 8bit (32µsec) (0~512 SLOT)
5 STOP Bit 2bit (8µsec) HIGH
6 "MARK" Time Between slots 0sec≤n<1sec HIGH
7 "MARK" Before Break (MBB) 0sec≤n<1sec HIGH

3~6を513回繰り返します。

※1:仕様では88µsec以上としか書かれていないが、パケット全体を1sec以内に収めることが書かれているので、事実上制限があることになりそう?

この調子で1パケットで513 SLOTのDataを送信します、このDataを仕様内ではSLOTと呼び、最初の0SLOTはSTART CODEで1SLOTがDMXの1ch,2SLOTが2ch...

START CODE

DMX512-Aでは調光信号の他、イロイロな信号を流せるようになった、この時にこのStart bitに仕様で定義されているコードを送信することで受信側はなんの信号か判断できるようになっているがこのコードをちゃんと識別しれくれない機器もある。RDM信号流したら安物ムービングがピクピク動くからなんだと思ったら受け取った信号を全て調光信号として受け取る仕様らしく何しても動くやつとかある。 パケットの0 SLOTに以下の通りのコードを送信すればいいらしい。

NAME CODE
Lighting Data 0x00 (0000 0000)
Network Test 0x55 (0101 0101)
Text Packet 0x17 (0001 0111)
Remote Device Management 0xCC (1100 1100)
System Information Packet 0xCF (1100 1111)
Dimmer Curve Select 0xFF (1111 1111)