DMX协议和RDM协议
1 DMX协议
1.1 DMX512协议特点
(1)采用RS-485总线收发器,通过差分电压传输,抗干扰能力强,信号可长距离传输;
(2)无论调光数据是否需要改变,主机都必须持续发送控制信号;
(3)因数据帧之间的时间间隔小于1s,若1s内未收到新数据帧,则说明信号丢失;
(4)数据用于调光,适用于无安全要求的设备,且为不间断传输,无需复杂校验。
1.2 波特率与传输时长
- 波特率:250000,1个bit位传输时长为4us;
- 1个数据槽(Slotx,x从1到512)含8个位,传输时长为4×8=32us。
1.3 一帧数据的顺序及时长
| 顺序 | 时长 |
|---|
| break: | 88μs(范围88μs——1ms) |
| MAB(Mark After Break): | 8us(两个bit位的时间,高电平) |
| start bit: | 4us(低电平) |
| Start Code(SC): | 32us(8个位,低电平,必须存在,串口数据为0,接收时作为头的一部分) |
| stop: | 8us(两位结束,高电平) |
| MTBP: | 0-1s(MARK Time after slot,一包数据结束到下一包数据Break的时间,部分控制台中为每个数据间隔的空闲时间,高电平,可省略) |
- 单个数据槽完整传输时长(含start+Slot:x+stop):4+32+8=44us(MTBP可省略时不计);
- 完整一帧数据(含1个起始码+512个数据槽)总时长:Break时长 + MAB时长 + 513×(start bit+8位数据+stop)时长 + MTBP时长。
2 RDM协议
2.1 DMX512和RDM异同
| 协议 | DMX512 | RDM |
|---|
| 传输方向 | 单向 | 双向 |
| Break时长 | 88-352μs | 176~352μs |
| 数据槽0值(起始码SC) | 0×00 | 0×CC |
| 数据长度 | 标准帧为定长513字节(1个起始码+512个数据槽) | 不定长,最长257字节(含2字节校验码) |
2.2 RDM命令格式
RDM数据包第3到8个共6个字节是接收端ID信息(UID),从机通过UID判断是否接收数据;UID由2字节制造商ID和4字节设备ID(1~0x7FFF)组成。第20个数据为命令类型(CC),第21和22个数据为参数类型(PID),从机通过CC和PID判断执行操作。
一帧数据的顺序:
Break
MAB(Mark After Break)
start bit
SC(Start Code)
MTBP(一包数据结束到下一包数据Break的时间)
数据:
起始代码
子起始代码
消息长度
目标UID(48位)
源UID(48位)
传输编号(TN)
端口ID/回复类型
队列消息计数
子设备ID(16位)
消息数据块(MDB)
-|命令类型(CC)
-|命令参数ID(PID)
-|参数长度 (PDL)
-|参数值(PD可有可无,最多231字节)
校验码(16位)
2.3 RDM数据帧构成
| 字节顺序号(字段) | 描述 | 字节数 |
|---|
| 0 | RDM识别码(SC) | 1 |
| 1 | RDM数据结构ID(Sub-Start Code) | 1 |
| 2 | 数据帧长度(不含校验码) | 1 |
| 3 | 信息接收方ID(destination UID) | 6 |
| 9 | 信息发送方ID(source UID) | 6 |
| 15 | 发送序号(transaction Number) | 1 |
| 16 | 发送端口号/应答类型(Port ID/Response Type) | 1 |
| 17 | 数据包计数(message Count) | 1 |
| 20 | 信息数据块MDB(message Data Block)(从字节20起) | 4~235 |
| nnn | 校验码(checksum) | 2 |
其中:
- RDM识别码固定为0xCC;
- RDM数据结构ID为0x01;
- 数据帧长度(字节2字段)取值范围18~255(不含最后2字节校验码),对应帧总长度20~257字节;
- 信息块由4个部分组成,最小4字节,最大235字节。
| 字节顺序号 | 描述 |
|---|
| 20 | 命令类型(CC) |
| 21 | 命令参数ID(PID) |
| 23 | 参数长度 (PDL) |
| 24 | 参数值(PD,最多231字节,参数长度为0时可无) |
2.4 RDM信号时间要求
2.4.1 RDM信号时段要求
| Break | MAB | 相邻字节间 |
|---|
| 最小 | 176μs | 12μs | 0μs |
| 最大 | 352μs | 88μs | 2ms |
- 全帧数据最大时长公式:440 + (n×44) + ((n-1)×76) μs(n为数据帧中需要传输的字节总数)。
2.4.2 RDM控制设备端口相邻数据帧间隔时间
| 相邻数据帧类型 | 方向切换 | 最小间隔 | 最大间隔 |
|---|
| 查找命令帧——应答帧 | 是 | 176μs | 2.8ms |
| 查找命令帧——其它发送帧 | 是 | 5.8ms | 1s |
| 应答需求RDM命令帧——命令帧 | 是 | 176μs | 2.8ms |
| 应答帧——任意发送帧 | 是 | 176μs | 1s |
| 应答需求RDM命令帧——任意帧 | 是 | 3ms | 1s |
| 无应答需求广播帧 | 无 | 176μs | 1s |
| 无应答非需求RDM帧 | 无 | 176μs | 1s |
2.4.3 应答设备端口相邻数据帧间隔时间要求
| 相邻帧数据类型 | 方向切换需求 | 最小间隔 | 最大间隔 |
|---|
| 应答需求RDM命令帧——应答帧 | 是 | 176μs | 2s |
| 查找命令帧——应答帧 | 是 | 176μs | 2s |
2.5 RDM设备命令响应能力
RDM不要求设备响应所有命令集,但必须响应基本控制指令,具体如下:
| PID描述 | PID编号 | 备注 |
|---|
| DISC_UNIQUE_BRANCH | 0001 | 应答数据帧特殊定义 |
| DISC_MUTE | 0002 | |
| DISC_UN_MUTE | 0003 | |
| SUPPORTED_PARAMETERS | 0050 | 仅在响应本表以外的PID时使用 |
| parameter——DESCRIPTION | 0051 | 仅在有自定义PID时使用 |
| DEVICE_INFO | 0060 | |
| SOFTWARE_VERSION_LABLE | 00C0 | |
| DMX_START_ADDRESS | 00F0 | 在使用DMX512控制时使用 |
| IDENTIFY_DEVICE | 0100 | |
参考资料