DMX512
DMX512 是一种 digital communication standard,用于通过单根 cable 向多个设备发送 control data,例如 dimmer、spotlight 和 moving head,通常用于 theater、concert 和 event lighting。数据以 packet 形式发送,最多包含 512 个独立 channel,每个 channel 控制 lighting fixture 的某一项功能。
在 data link layer 上,DMX512 controller 以 250 kbit/s 发送 asynchronous serial data。数据格式固定为 1 个 start bit、8 个 data bits(least significant first)、2 个 stop bits,且无 parity。
每个 frame 包含:
- Break condition
- Mark-After-Break
- Slot 0,包含 1 byte Start Code
- 最多 512 个 channel data slot,每个 slot 包含 1 byte
Packet 的开始由 break 后跟一个 “mark”(logical one)表示,即 “Mark After Break” (MAB)。Break 表示一个 packet 结束和下一个 packet 开始,使 receiver 开始接收,同时也作为 packet 内 data bytes 的 frame/position reference。带 frame 的 data bytes 称为 slots。Break 之后最多发送 513 个 slots。
第一个 slot 保留为 “Start Code”,用于指定 packet 中的数据类型。Start code 0x00(hexadecimal zero)是所有 DMX512 compatible devices 使用的标准值,包括大多数 lighting fixtures 和 dimmers。
Timing 时序
Vision Core DMX512 timing parameters:
| Min Break (μs) | Typical Break (μs) | Min MAB (μs) | Typical MAB (μs) |
|---|---|---|---|
| 120 | 150 | 12 | 15 |
Maximum times 未指定。只要 packet 至少每秒发送一次,BREAK、MAB、inter-slot time,以及 packet 最后一个 slot 与下一个 break 之间的 mark (MBB) 都可以根据需要延长。
最大尺寸 packet 包含 512 个 channels(start code 之后的 slots),发送大约需要 23 ms,对应最大 refresh rate 约 44 Hz。如果需要更高 refresh rate,可以发送少于 512 个 channel 的 packet。
标准未规定 packet 中可发送的最小 slot 数量。但它要求任意两个连续 BREAK 的 leading edge 至少间隔 1204 μs,并且 receiver 必须能处理 break-to-break time 短至 1196 μs 的 packet。最小 break-to-break transmit time 可通过发送至少包含 24 个 slots 的 packet(必要时添加 padding bytes)实现,也可以通过延长 BREAK、MAB、Interslot 或 Interpacket times 等参数实现。
