logo资料库

DALI地址分配.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
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 设备。 分配地址过程需要使用到的命令有: 1010 0101 258 1010 0111 259 260 1010 1001 261 1010 1011 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(校验地址) XXXX XXXX 0000 0000 0000 0000 0000 0000 WITHDRAW(退出比较命令) INITIALISE (初始化) RANDOMISE(产生随机数) COMPARE(比较主机数据与随机数大小)
从上面地址分配的原理可以看到,在这个分配的过程中,最只要是主机 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 使用自动分配地址的功能是一种低成 本的设计方案,其实最好的最简单的工程应用还是使用拨码开关设置地址合理, 这样更便于工程维护和工程更改。 愿与有志者同行,物联网技术交流群 42752896
分享到:
收藏