logo资料库

DALI通信协议及地址分配原理.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
DALI 协议是用于照明系统控制的开放式异步串行数字通信协议。 DALI 系统采用主从式结构,系统最多可以连接 64 个从机单元,每个 DALI 从机使用唯一的个体标识地 址,该地址在系统初始化时设定,使用过程中根据需要修改从机的地址;从机单元最多可分为 16 组(以 组地址区分),每个从机可以属于几个不同的组,每组设备可以设定 16 个场景。 主机与从机之间使用两条信号线通信,数据采用曼切斯特编码方式编码,信号的上升沿表示“1”,下 降沿表示“0”,通信速率为 1.2kbaud/s。通信过程中主机使用两种不同的数据帧格式;发送帧(主机发 送到从机)和接收帧(从机发送到主机)。 DALI 协议定义了用于实现系统功能的双字节指令集,指令分为标准指令和专用指令两大类。标准指令 的第一字节为地址字节,用于对 DALI 从机的寻址;第二字节为命令字节,用来控制寻址得到的 DALI 从机。使用标准指令,主控制器可以实现对 DALI 从机的分组控制、调光控制、场景设定等功能。专用 命令不包含地址字节,两字节内容都是命令码,使用广播方式发送,主要用来对 DALI 系统进行地址初 始化。 DALI 接口(限流,过流保护) DALI 协议 (数字可编址的照明接口 Digital Addressable Lighting Interface) 的新标准定义了电子镇流器和控制单元之间的数字通 讯,DALI 的设计不是用于复杂的总线系统, 而是用于室内的智能, 高性能照明管理,注重照明的静态效果, 这些功能当然可以通过合 适的接口集成到建筑物管理系统中。 为了保证各厂商的 DALI 元件之间完全兼容,DALI 协议被世界标准化,并编制进 IEC60929 镇流器标准中,该标准的附录 E 部分 清楚地描述了 DALI 的电气特性和协议。 这就建立了在全世界销售和使用 DALI 元件的基础, 无需考虑厂商、 国家或技术上的不兼容, 世界著名的公司都支持这个标准。 在 DALI 协议中,最复杂部分就是主机给 DALI 设备自动分配地址的过程,也是设计 DALI 主控制器的难点。本人现在设计的 DALI 主控制采用 32 位 LPC2292 CPU,具有独立的 2 路 DALI 总线回路,同时使用 CAN 总线与其它系统连接,整个主控制器实现两种 DALI 总 线设备的管理,包括地址分配,分组,场景设置,时间表,时序控制等功能。下面只要讨论 DALI 自动分配地址过程的实现方法: 地址分配分为三种情况: 1. 所有设备重新分配地址,这种情况一般是在第一次工程调试时使用;
2. 扩展分配地址,只给没有分配地址的设备分配地址,工程上新添加设备时使用; 3. 重复地址分配,当发现存在两种相地址的设备时,这里需要重新为这两个设备重新分配地址。 而三种情况的区别只要是在分配地址协议初始化时,使用 Command 258: 1010 0101 XXXX XXXX "INITIALISE"作区分,当: XXXX XXXX = 0000 0000 为所有设备重新分配地址; XXXX XXXX = 1111 1111 扩展分配地址; XXXX XXXX = 0AAA AAA1 重复地址的重新分配,其中 AAAAAA 为指定的重复的地址; 这里需要提及一下 DALI 自动分配地址的原理:(要求不同厂商生产的 DALI 设备必须符合 DALI 标准协议,并所有设备挂在同一 总线上。)在经过前面的初始化命令后,主控制器需要发送随机数产生命令 RANDOMISE,这时,被初始化过的设备会产生一个 24 位的 随机数,当然要求每个设备产生的随机数不能相同,而且不能等于 0 和 FFFFFF,这也是个技术性的难题,以后再讨论。在设备产生了随 机数后,主机开始发送一个自己的 24 位数据和总线上的设备比较,找到最小随机数的设备,这时就给这个设备分配一个没有分配的最小 地址,成功分配地址给该设备后,再发送一个退出命令,则这个已分配地址的设备退出初始化状态,不再响应主机的比较命令。重复以上 过程,直至找到所有 DALI 设备。 分配地址过程需要使用到的命令有: 258 1010 0101 XXXX XXXX INITIALISE (初始化) 259 1010 0111 0000 0000 RANDOMISE(产生随机数) 260 1010 1001 0000 0000 COMPARE(比较主机数据与随机数大小) 261 1010 1011 0000 0000 WITHDRAW(退出比较命令) 264 1011 0001 HHHH HHHH SEARCHADDRH(主机数据高字节) 265 1011 0011 MMMM MMMM SEARCHADDRM(主机数据中节) 266 1011 0101 LLLL LLLL SEARCHADDRL(主机数据低节) 267 1011 0111 0AAA AAA1 PROGRAM SHORT ADDRESS(编程地址) 268 1011 1001 0AAA AAA1 VERIFY SHORT ADDRESS(校验地址) 从上面地址分配的原理可以看到,在这个分配的过程中,最只要是主机 24 位数据和 DALI 设备 24 随机数比较的问题。如何才找 到最小的随机数的设备呢?解决这个问题是关键。比较两个数据的大小方法很多 ,本人在这里只要采用是 2 分算法。实现步骤如下: 1. 主机发送 FFFFFF 与 DALI 设备比较,因为 DALI 设备产生的随机肯定比 FFFFFF 要小的,如果总线上存在没有分配地址 的设备,则肯定回答 YES。否则 NO。
2. 在上一步中得知总线上有没有分配地址的设备后,采用 2 分算法比较主机数据和随机数。2 分法其数为 8,4,2,1.,0,三 字节的数据按半字节划分为 6 个半字节数,从最高的半字节,假设开始时值 Y=8,如果有 DALI 设备回答 YES,则将现值减去 2 分法其数 的下一个数,修改为 Y=Y-4,如有 DALI 设备回答 NO,则将现值加上 2 分法其数的下一个数,修改 Y=Y+4, 直到 2 分法其数的值小于 1 为止。 如:比较最高半字节: 比较的数据 DALI 设备回答 2 分法修改半字节值 80 00 00 ―> YES 8-4=4 40 00 00 ―> YES 4-2=2 20 00 00 ―> NO 2+1=3 30 00 00 ―> NO 其数小于 1 了,这半字节比较完成这里得到该半字节的值为 3,接下来比较下一个半字节。 38 00 00 ―> NO 8+4=C 3C 00 00 ―> NO C+2=E 3E 00 00 ―> YES E-1=D 3D 00 00 ―> NO 其数小于 1 了,这半字节比较完成这里得到该半字节的值为 D,接下来比较下一个半字节。 最高字节比较完成,接下使用同样的方法比较中字节和低字节即可。 这样就可以找到最小的随机数的设备. 3. 找到最小的随机数的设备后,使用 PROGRAM SHORT ADDRESS 命令给这个设备分配一个地址。 4. 完成地址分配后,使用 WITHDRAW 退出命令,使已分配地址的设备退出比较命令。 5. 重复以面步骤,比较找到其它的 DALI 设备。直至到发送 FFFFFF 都没有设备回答 YES 为止。 本人采用上面的方法,同时对 2 组 DALI 总线上的 64 个设备进行自动地址分配, 在总线正常工作的情况下,15 分钟内可以找到所有设备。在实现工程应用中,也 有时出现找不齐设备的情况,那需要多扫描几次了。 结合在工程的上实践经验,本人觉得 DALI 使用自动分配地址的功能是一种低成 本的设计方案,其实最好的最简单的工程应用还是使用拨码开关设置地址合理, 这样更便于工程维护和工程更改。
分享到:
收藏