/, 技术文章, 最新文章/大力哥谈 DALI – DALI 很牛?DALI 很 Low!

大力哥谈 DALI – DALI 很牛?DALI 很 Low!

发布者 |2022-05-14T12:32:24+08:005月 14th, 2022|分类:大力哥谈 DALI, 技术文章, 最新文章|标签: , , |大力哥谈 DALI – DALI 很牛?DALI 很 Low!已关闭评论

随着DALI产品和技术应用日益加速增长,从制造商到工程终端,常听到DALI被描述为一种很先进的调光技术。例如可对总线上的设备执行单灯控制、细腻平滑的亮度过渡和跨厂商的调光曲线一致性等。这些看似平淡无奇的过人之处,让人一旦体验过就很难回到传统的调光方式如0/1-10V调光或可控硅相角调光等。然而近年来物联网浪潮中各种新技术层出不穷,DALI却不在这争奇斗艳的行列之中。它即没有大规模组网能力,还依赖两根最长不超过300米的电线传输1200bps的龟速信号,协议实现缺乏专用SoC,发展了20余年只守在“照明控制接口”这一亩三分地。如此说来,很难称得上是屹立于牛A和牛C之间的B位选手。DALI为何能在DALI-2加持之后枯木逢春活出新生命呢?实际上,DALI靠的正是朴实无华的那些Low得不行的手段。

有所为,有所不为

在物联网(IoT)、智能家居、智能硬件、楼宇自动化等领域,照明控制是必备功课。严肃场合的调光照明灯具非同快速迭代的消费类电子产品,大部分产品在安装部署之后维护更换并不方便,在调光接口上稳定压倒一切。而DALI能在物联网时代大浪淘沙后成为数字调光接口领域唯一广泛应用的开放国际标准就是最好的能力证明。DMX512A?对不起,一静一动,应用场景大不同。DALI背靠照明灯具厂商,双手推开0/1-10V调光和相角调光,站在了最后一厘米的灯具调光要塞上,那架势分明是“要从此路过,留下买路财”!甭管各位在前面是Mesh组网还是云管边端协同,来了都是DALI人。

即便DALI中有总线的概念,纠集百十个兄弟整点活不在话下,但实际上DALI正如其全名所昭示的那样:“别抬举我,我只是一个控制接口”。当各种物联网通信协议摩拳擦掌冲到DALI面前,DALI就轻轻一句:“兄弟们,你们干的那些,我也不是一定要掺和,你们要是干得比我好,你们来便是。” Zigbee、BLE Mesh、Wi-Fi、KNX、BACnet等见状顿时怒气消散,DALI又好言相劝:“大家要是觉得调光脏苦累,有什么需要尽管吩咐,控制装置、光源和兄弟我都是一家人。” 话都说到这份上了,大家不免要给点面子:”DALI哥,您正是年富力强,灯具您轻车熟路,多担待!” 那厢私有RS485、CAN总线、Lonworks、TCP/IP瞧见带头的几位已然偃旗息鼓,也都散了。

DALI扼灯具调光接口看似”有所为,有所不为“,但一定程度上来说借由DALI总线的扩展也是“进可攻、退可守”的,灯具内、DALI独立自主小系统和骨干网络的DALI子系统是其三大主要应用场景。“我哪有这般先见之明,数字化大势下1-10V难堪大用,小弟阴差阳错登上舞台罢了!”DALI这姿态搞得大家都卸下了心防。

3字节的传奇

关于目前DALI所覆盖的控制装置(驱动电源类)和控制设备(控制器和输入设备类)的DALI标准文件全部加起来已有数千页,然而其大厦竟全部建立于不超过3个字节数据帧的基础之上!如果各位对DALI之”先进“还在浮想联翩,那此刻请捡起地上的大牙吧。DALI的数据帧做到了bit尽其用,对于查询帧的响应,甚至连多个设备同时回应冲突造成的错误帧和无响应都利用起来作为某种有效信息的反馈。以DALI最早定义也是目前应用最广的控制装置(Part 102)类设备为例,前向帧(Forward Frame)数据帧定义为16-bit(即2字节),后向帧(Backward Frame)数据帧定义为8-bit(即1字节),所谓前向帧即在某些查询命令时,先有控制主机发送2字节查询命令,控制装置则回复1字节后向帧作为响应。不管是简单的亮度调节,还是复杂的色温参数配置或者D4i驱动电源中的能耗数据查询,都是通过控制主机发送2字节数据帧和控制装置返回1字节数据帧来进行的。

极致RPC的代价

照明控制协议的数据交换大多数情况下就是一种RPC(Remote Procedure Call,远程过程调用),主机向控制装置发送控制命令,就是主机调用控制装置内的函数功能罢了。由于单次传输的信息有限,DALI在执行较复杂的配置和查询命令时必须通过多个连续的数据传输序列才能完成。另外由于命令空间不足以容纳每种设备类型的应用扩展命令,针对不同的设备类型时还需要先开启目标设备类型再发送对应的扩展命令。凡此总总,导致了在底层传输命令时的复杂性超过常见的其他协议。如涉及到多主机应用,还要考虑数据冲突和同类数据传输的完整性。

DALI设置色温的命令序列

刚接触DALI控制器的人常常会为设置色温这样一个常见的功能难住,为了实现SetColorTemperatureTc(address, ColorTemperatureTc)需要发送以下数条命令才能勉强完成。

 Command 257 设置DTR0为色温Mirek值的LSB
 Cmmmand 273 设置DTR1为色温Mirek值的MSB
 Command 272 使能设备类型为8 (对应Part 209, Device Type 8)
 Command 231 设置寻址设备的临时色温Tc值
 Command 272 使能设备类型为8 (对应Part 209, Device Type 8)
 Command 226 Activate激活目标色温

从上面的指令可看出,每次设置16-bit的参数,都要先设置(DTR0,DTR1)这两个寄存器;每次执行设备类型扩展命令,都要先发Enable Device Type X 命令。只设置目标色温还算比较简单,如果同时指定过渡到目标色温的时间,那就需要先设置好目标设备的FadeTime、ExtendedFadeTime和FastFadeTime的参数值,这几个参数何时适用以及相互之间的关系还得细心处理。

DALI写Memory Bank

Memory Bank(存储块)是DALI中定义的一种通用数据交换机制,一般来说,很多的查询参数命令如果改用读MemoryBank的方式也是没问题的,那为什么DALI命令中还存在大量的读写参数专用命令而不改用类似MemoryBank的通用机制呢?答案也很简单,读写MemoryBank的效率太低,还是以控制装置(Part 102)的MemoryBank写操作为例。标准中定义的命令之一为WRITE MEMORY LOCATION(DTR1, DTR0,data),看上去似乎还好,无非是先分别设置DTR1,DTR0,最后再发送携带data的WRITE MEMORY LOCATION命令。然而由于WRITE MEMORY LOCATION是广播式的特殊命令,因此还需要使用ENABLE WRITE MEMORY命令先行指定要写入数据的设备。

 Command 129 开启Memory Bank写
 Command 257 设置DTR1为Memory Bank序号
 Command 273 设置DTR0为该Memory Bank内的位置序号
 Command 275 向Memory Bank的指定位置写入data

四条命令写入一个字节,这效率感人哪!当然如果是向某个Memory Bank内的一块连续区域连续写入,控制装置内部会自动增加DTR0以减少传输的命令。

DALI命令就是汇编指令

DALI命令就像是编程语言中的汇编语言指令,因为每次执行的操作功能比较原始,用于参数传递的寄存器(DTR0,DTR1,DTR2)最多只有3个,所以一个功能需要控制器和控制装置进行数次传输配合才能完成,而且中间还不能被中断干扰,否则可能前功尽弃。

生拉硬拽的收发器

如果说DALI命令是汇编指令,那么DALI的物理层收发器就更是坦诚得让人一览无余了。DALI的总线由总线电源供电,总线电源的实现通常是恒压限流源,空闲的时候,只有DALI设备的DALI接口静态拉取的电流消耗,标准定义为不超过2mA(从总线取电工作的设备除外)。如果要传输数据,发送器通过三极管或MOSFET将总线短路让总线电源处于限流模式,此时总线电压为低表示活跃状态。接收器则通过简单的判断总线上电压所处的范围来检测总线的逻辑电平变化,再根据曼彻斯特编码和DALI数据帧的位时序来检测数据帧。

这一套收发机制并不需要专用的收发器IC或者带有此类收发控制接口的SoC,由分立器件和通用MCU就能实现,目前市场上绝大部分DALI产品都是这样设计的。优点是协议和实现完全开放,缺点是收发器的兼容性囿于厂商的研发测试水平可能会带来隐藏的风险。

DALI这种较为原始的收发器定义也常常遭人诟病,甚至认为连MCU上再寻常不过的UART外设接口都不如。某国内路灯行业标准用UART作为灯具数字化接口来对接通信扩展模块,整个标准不超过30页,却几乎囊括了DALI近年新推出的D4i的能耗计量、故障监测等类似功能。相比之下,DALI为了支持这些功能简直要使出蛮荒之力。

为什么DALI要别出心裁搞出一套如此粗陋的收发器定义呢?其原因在于DALI从诞生起就是要替代传统模拟调光接口,其接线距离要求和线上所接的设备数量远非UART所能承载。DALI为了尽量和交流电一起走线还需要较高的抗干扰能力,因此DALI的逻辑电平范围宽达20多伏,采用曼彻斯特编码,数据和总线供电共享一对线缆,还限制了传输速率到1200bps。这些特性不仅足以满足当时替代模拟调光接口的要求,和DMX512A相比,还具有无需类RS485的收发器,传输不需专用屏蔽线缆,设备端内部不需要对接口供电等优势。

DALI 该往何处去?

DALI-2保证了DALI能跟上IoT时代的发展,近年来一方面和无线控制协议结盟合作开发新的标准:联合蓝牙联盟和CSA联盟,在蓝牙mesh和zigbee网络间搞个网关;拽上Thread,抛弃有线,完全在无线上运行。另一方面结合产业需求在DALI之上增加D4i新特性,算是做到了与时俱进。

然而正如前面所描述的,DALI在某些方面与生俱来的局限性也将日益显露,如何在保留向下兼容的前提之下提高传输速率、扩大总线寻址空间、增加单次消息传输数据和提高收发器集成度将是DALI下一个10年面临挑战的重要主题。好消息是,DALI够Low,不依赖于任何其他特定通信技术和协议,想怎么来,完全看自己的脸色。

关于作者

大力哥
大力哥谈DALI 知乎专栏:https://zhuanlan.zhihu.com/dalige 微信公众号: 搜索“大力哥谈DALI”或者 id “dalitalks” ,关注后回复”资料共享“可获取DALI协议标准等学习资料。