大力哥谈 DALI - DALI 很牛?DALI 很 Low!
2022.05.14
DALI电源的常规调试和测试手段重点在于参数配置和状态查看,但这是建立在DALI系统内所有设备工作正常的前提之下。如果测试的环境中存在故障或者部分设备为待验证功能的新产品,那么采用这种方式就很难进行底层的故障诊断和有针对性的单项功能测试,比如以下几种典型情况:
一旦遇到以上几种情况,就需要采用更加深度和细微的测试方式,也就是本文所说的进阶调试招式。进阶调试手段允许使用者更加灵活的进行命令的收发测试,当然也要求使用者对于命令的含义和作用有比较清晰的认知。好在DALI的数据帧种类较少,格式也并不复杂,只要具备一些基本的数字通信的知识,就很容易理解。
DALI 电源通常是被控制的目标,在使用过程中难免要与另一端发送控制指令的设备打交道。无论另一端是中控主机或者是协议转换网关,在DALI-2中的设备类型均为控制设备(Control Device)类别下的应用控制器(Application Controller),应用控制器发送前向帧(Forward Frame)和DALI电源或其他DALI 控制装置(Control Gear)通信。当然它也可以发起与其他控制设备(Control Device)的通信或者接收其他控制设备(Control Device)发送的前向帧(通常为事件帧),不过本文主要讨论DALI电源相关的协议指令。
DALI的数据传输集中在应用控制器(Application Controller)和其他设备之间,如下图所示。

在IEC 62386-101ed2.0中,定义了以下几种标准数据帧:
其他长度的数据帧为私有协议,不是我们讨论的重点。
IEC 62386-102 中定义了16-bit前向帧的数据格式,16-bit数据帧由应用控制器发起,用于对控制装置进行控制、配置和查询,格式如下。

DALI LED驱动电源的命令主要集中在IEC 62386-102(控制装置的一般要求)和特定类型的标准中,目前最常见的是面向LED驱动的调光和调色电源的 IEC 62386-207 (LED模块的要求 )和IEC 62386-209 (颜色控制的要求 )中。在必要的时候,应该查找以上标准的适用版本中关于的DALI数据帧、指令定义及使用方法的说明,以帮助正确理解相关的DALI指令功能,避免主观臆测和不当的参考来源带来的认知错误。
IEC 62386-103中定义了24-bit前向帧的数据格式,分别为命令帧和事件帧。命令帧由应用控制器发起,用于对控制设备进行控制、配置和查询,格式如下。

事件帧由输入设备发起,用于在自身检测到事件触发条件后,主动将事件发送到总线上,格式如下。

以下仍以DALI电源常规测试时使用的Tridonic DALI USB 控制器及配套软件masterConfigurator为例,介绍两大类调试手段:指令发送和数据监控。如果上线运行的DALI系统内的应用控制器所在的产品(如中控主机或者协议网关)本身具备丰富的调试功能,通常也能直接在产品的调试工具中进行故障诊断。否则需要向目标DALI系统总线接入类似下文中所使用的DALI USB控制器的方式来发送调试指令和监控总线数据。
在masterConfigurator的主菜单中,选择 Tools->Command administrator...即可打开如下图所示的Command administrator (命令管理器)界面,在这个工具界面中支持三种命令发送模式,分别是:

按照前面的步骤,打开Command administrator (命令管理器)后,默认的标签页即为 DALI commands, 每个控件的功能含义参考下图中的标注,主要包含这几个部分:

对于常规的DALI LED驱动电源,设备类型应选择“6:LED”或“8:Colour control”,根据调试目标设备的定义来选择。当然软件也支持其他常规的设备类型,如果有需要也可以选择测试。

选择好设备类型后,在命令列表中会显示所有的常规命令和扩展命令,如下图所示。当选中的是某种设备类型支持的扩展命令时,软件也会自动发送“ENABLE DEVICE TYPE (x) ”命令来使能对应的设备类型。

有些命令需要预先设置DTR0,作为该命令执行的前置条件,如下图中选择“SET SCENE 0 (DTR0)”来设置场景0的亮度等级时。在该界面上提供了一种方便的方法,用户可以选中“send DTR0”后直接填入想要设置的DTR0数值,这样在发送设置命令时,会自动先发送设置DTR0命令。同时可以看出,“Repeat command(重复发送)”选项已经自动勾选,也就是说软件能够帮助用户将标准中定义的send-twice命令自动勾选好期望的选项。因此,除非特别的情况,使用时不要改变这些默认勾选的选项。

同样,某些命令需要预先设置DTR0和DTR1,软件也支持自动发送,使用时只需要勾选好选项后填写好数值即可,如下图发送“WRITE MEMORY LOCATION(写存储地址)”命令时。

单条命令的调试有时并不能满足需求,比如当我们需要读取连续存储区的数据时,就需要按照标准中要求来发送一系列的命令,如果使用单条命令调试时需要反复修改发送命令,极不方便。此时可以选择下图中的“Command Sequence(命令序列)”界面,通过创建并添加命令形成一个命令序列,然后再通过单次循环、无限循环和单步发送命令序列进行测试,就会很容易地实现前面提到的测试需求。

点击上图中的File区域内的New创建一个新的命令序列,然后在Command区域点击Add添加命令,添加命令的对话框如下所示。这里的命令类型我们只选择DALI,定义方式和单条命令类似。在“Delay time”可以指定该命令发送之后的延时,用来控制命令之间的间隔。

除了主动发送命令进行调试之外,对已有的总线进行数据监控可以用于:
masterConfigurator在安装时同时安装了一个DALIMonitor的工具软件,详细使用指导可参考软件帮助中所附的DALIMonitor.pdf帮助文档。当masterConfigurator运行后,可以通过Windows系统的任务栏中驻留的DALI BusServer图标打开DALI Monitor应用程序,如下图所示。

该界面中可以很直观地查看总线上每一帧数据的指令细节,包括原始指令数据、类型、寻址、命令号和传输的日期时间等,无论是对于故障诊断还是研究产品底层的工作机制都有很大的帮助,实际上就是一个DALI协议的Sniffer(嗅探器)。除了正常的数据解析之外,对于总线掉电故障或者数据帧的传输时序错误也会有适当的提示。但是要指出的是,我们所使用的的软件并不能作为DALI-2认证或者目标产品是否符合认证的标准,因为从使用情况来看,在某些参数判断指标上,例如Settling Time(总线静置时间)的合法性判断,Tridonic DALI USB的容忍度比标准要宽松。也就是说,某些没有严格符合标准的数据帧也会被正确解析接收,所以不要将通过DALI-2认证和能配合某个工具工作混为一谈。
对于已经接收显示的数据帧列表,可以在列表区右键弹出菜单中选择“Clear Buffer”清除,或者选择“Stop Reception”停止接收。

更有用的功能是在弹出的菜单中选择“Filter... ”来配置过滤选项,这样可以突出显示我们最关心的数据帧。

在Filter对话框中,首先可以选择是否打开过滤。
一旦选择打开过滤后,在Filter对话框的中接着可以配置选中显示或者选中不显示的命令种类和适配符。
在上述的各类命令中,还可以进一步配置具体的命令类型和寻址等匹配条件。
在Window任务栏直接双击DALI BusServer可以打开如下所示的统计界面,该界面显示了每一个DALI USB控制器当前的使用统计情况,例如每种类型的数据帧的数目和错误数目。

由于Tridonic的DALI USB产品实际上和Lunatone的DALI USB产品相同,因此Lunatone的DALI测试软件DALI Cockpit也可以配合Tridonic DALI USB产品使用。Lunatone DALI Cockpit软件中同样也有类似Command administrator的工具,但是额外地可以支持发送DALI 24-bit 命令,所以涉及到103设备测试时,如果需要发送DALI 24-bit前向帧命令,可以改用Lunatone DALI Cockpit软件。
在很多中控主机或者网关的配套工具中,常常也有数据指令发送和数据监控的功能,在对当前系统进行故障诊断时,可以先看看此类设备的自带工具能否满足要求。例如在Loytec的BACnet/DALI网关LDALI-ME201-U的Web界面中,可以通过选择“Statistics”->“DALI”显示当前设备的DALI总线统计信息,如下图所示。

进一步地,在上图中点击“Protocol Analyzer”,显示协议分析器界面,在此页面中点击“Start”后,也可以像前面介绍的Tridonic masterConfigurator一样,显示接收的总线数据并解析成容易理解的信息。在下图中,我们可以看到不同的数据帧类型,因为LDALI-ME201-U支持DALI-2的输入设备(开关输入、移动传感器和光照传感器等设备类型),因此也能显示自身发送的24-bit请求帧和设备发送的24-bit事件帧。
