当前位置:文档之家› DMX512协议细说

DMX512协议细说

线驱动设备(D)和多个差分接收终端(R)。
图 1 基于 485 的 DMX512 拓扑结构
2.3.DMX512 端口及数据链路
因为是采用 485 差分信号传输,因此 DMX512 端口一般采用 3 针或 5 针接口,
相对应的导线则为 1 对或 2 对双绞线,导线同时应采用箔片或编织筛包裹。XLR
针口分配如下表 1 所示,其中辅助数据链路可以不用。
2.电气特性和物理层
2.1.电气特性 DMX512 采用 EIA-485 标准。 发送端:逻辑“1”以两线间压差+(2~6)V 表示; 逻辑“0”以两线间压差为-(2~6)V 表示; 接收端:A 比 B 高 200mv 以上即认为是逻辑“1”; A 比 B 低 200mv 以上即认为是逻辑“0”。
2.2.拓扑结构 如图 1 所示为 EIA-485 电路拓扑结构,一条 EIA-485 数据链路包括一个差分
void uart( ) interrupt 4 {
uchar dmx_cont, dmx_addr; bit dmx_head;
if(RB8==1) {
if(dmx_head==1) {
if(dmx_addr==0) {
if(SBUF==0x8a) slaveflag=1; else slaveflag=0; } if(slaveflag==0) {
作用
标准中针的定义
DMX512 功能
公共地
1
屏蔽地
主要数据链路 辅助数据链路
2(黑) 3(白) 4(绿) 5(红)
表 1 DMX512 端口信号分配
数据 1数据 1+ 数据 2数据 2+
基于 EIA-485 传输距离理论上可以达到 1200m,建议控制在 800m 以内,若
要加长传输距离,则需考虑中继器。DMX512 数据链路的终接方式应消除信号环
if(dmx_addr++>=MEN.ADDRS) {
dmx_data[dmx_cont++]=SBUF; if(dmx_cont>7|(dmx_addr==512)) dmx_head=0; } } else { if(dmx_addr++>=1) { dmx_data[dmx_cont++]=SBUF; if(dmx_cont>3) dmx_head=0; } } } } else {dmx_cont=0,dmx_head=1,dmx_addr=0; } dmxoffcont=0; RI=0; }
路和信号反射,否则可能导致正确设计的系统出现误操作。采用结终端电阻的方
式可以消除信号反射,DMX512 标准要求,终端电阻应放置在数据+和数据-信号
针之间,阻抗范围 120Ω+5%~120Ω-10%。
3.数据协议格式及传输
DMX512 协议规定数据以数据包的形式通过异步通讯的方式进行传输。每个 数据包由若干数据帧组成, 每帧数据包括 1 位低电平起始位、8 位数据位和 2 位 高电平停止位。DMX512 协议要求数据传输的波特率为 250kbps, 亦即每位的传 输时间为 4us, 每帧数据的传输时间为 44us, 它支持多达 512 帧数据传输, 每帧 数据与相应的控制支路相对应。数据包的传送要符合一定的格式和时序要求,每 个包需要发送 2~513 个字节数据(由总线设备来确定)。为了使接收器能够分辨 出第一帧数据, 每一个数据包以一个不短于 88us 的低电平信号为起始信号, 即 所谓的 BREAK 信号, 接收器接收到 BREAK 信号就准备接受随后而来的数据帧; 紧接着 BREAK 信号之后是不短于 8us 的高电平信号 MAB (Mark after Break) ; 之后就是数据帧。在 DMX512 协议中, MAB 之后的第一帧数据被称为 SC(Start code), 即起始字节,在协议中规定其为零, 但在实际应用中可以由生产厂家自己 确定其具体的值, 以传递特殊消息。SC 标明其后面的数据是 8 位控制信号数据
图 2 DMX512 协议帧结构和信息包结构
表 2 DMX512 定时表 注:表中 NS 意为宽度没有严格限制
图 2 中,虚线框内为一个数据帧的格式,S 为 1 个比特起始位(低电平),E 为 2 比特的停止位(高电平),D0~D7 为 8 个比特的控制数据,其电平组合从 00000000~11111111 共有 256 个状态(对应十进制数的 0~255) ,控制灯光的亮 度时 ,可产生 256 个亮度等级 ,00000000 (0)对应灯光最暗 ,11111111(255)对应灯 光最亮。信息包中,第 1 帧对应来自百度文库 1 回路的灯具,第 2 帧对应第 2 回路灯具,依 此类推,第 512 帧对应第 512 回路灯具,灯具回路的地址在灯具上可设置。
帧。一个数据包发送完成后,可以发送 MT BP。MT BP (Mark Time Between Packets) 标志着一个完整的信息包发送完毕 ,是下一个信息包即将开始的 “空闲位”,高 电平有效数据帧之间可以有时间间隔, 也可以没有; 同样, 数据包之间可以有时 间间隔, 也可以没有。DMX512 协议规定 BREAK 信号、MAB 信号的最短时间, 并 规定 BREAK 信号、MAB 信号、数据帧之间及数据包之间的时间间隔的最大值 不得超过 1s, 否则做出错处理, 但是 DMX512 协议并未对出错处理做任何规定。 DMX512 协议所规定的数据格式如图 2 所示,各信号的定时时间如表 2 所示
附录: DMX512 发送与接收的参考程序 sbit DMX_SD = P3^1; /**************************** //函数名称:void send_dmxpro( ) //函数功能:发送 DMX 数据 *****************************/ void send_dmxpro( ) { if(dmxoff_flag==0) return ; DMX_CR=send_dmx ; ES=0; DMX_SD = 0; DelayUS ( 2 ); DMX_SD = 1; DelayUS ( 1 ); TB8=1; SBUF=0x8a; while(TI==0);
1.协议简介
DMX512 协议
DMX 是 Digital MultipleX 的缩写 ,意为多路数字传输。DMX512 控制协议 是美国舞台灯光协会(USITT)于 1990 年发布的灯光控制器与灯具设备进行数据 传输的工业标准 ,全称是 USITT DMX512(1990) ,包括电气特性、 数据协议、 数 据格式等方面的内容。
TI=0; TB8=1; SBUF=pwm_red; while(TI==0); TI=0; TB8=1; SBUF=pwm_green; while(TI==0); TI=0; TB8=1; SBUF=pwm_blue; while(TI==0); TI=0; TB8=1; SBUF=pwm_white; while(TI==0); TI=0; DMX_SD = 1; DMX_CR=rece_dmx ; ES=1; } /**************************** //函数名称:void uart( ) interrupt 4 //函数功能:串口中断接收 DMX 数 *****************************/
4 总结
DMX512 协议是一种基于主从式的协议,能够适应一对多的灯光控制系统。 该协议虽然能把不同厂家产品连接起来并实施控制,但由于只能单向传输,控制 台与被控设备之间无法实现真正的信息交互,被控设备只能被动地接收控制台的 控制信息,被控设备自身的状态信息不能反馈到控制台。该协议要求控制台必须 提前为被控制设备分配好地址,以便被控制设备能够准确无误地接收控制指令。 但由于信息帧结构中没有传输地址,因此如果某一帧信号由于干扰等原因导致在 传输中出现错误,那么此帧后面的所有信息均将出现误传,同时信息出错后,灯 具不能回馈出错信息,这是限制基于 DMX512 协议的设备发展的主要原因。
相关主题