基于MQTT的DALI照明扩展系统的设计与实现

2018-09-22 09:54张玉杰冯春倩
照明工程学报 2018年4期
关键词:网关总线子系统

张玉杰,李 桢,冯春倩

(陕西科技大学电气与信息工程学院,陕西 西安 710021)

引言

数字可寻址照明接口(Digital Addressable Lighting Interface,DALI)作为一个开放的数字化智能照明控制系统,具有配置灵活、安全可靠和低成本等优点,可灵活的实现单控、组控、场景控制以及状态反馈等功能,在灯光控制上具有专业、细致的特点,受到照明设备制造商的广泛支持,并已成为国际电工委员会的标准。然而,传统的DALI照明系统最多可接入64个可寻址设备,制约了DALI照明系统的应用范围[1,2]。对DALI系统的扩展是提高系统容量、满足大范围照明需求的一种有效途径。

针对以上问题,我们提出了一种基于MQTT协议的消息发布/订阅机制实现多个DALI照明系统组网的方法,在现有的DALI子系统上接入网关,通过多个挂接在DALI系统上的网关订阅同一主题,实现多个DALI系统的组网以及APP端对多个DALI系统的单控、组控、场景控制等,能够有效地解决DALI系统灯具容量受限、控制规模较小的问题。

1 相关技术介绍

1)MQTT协议介绍。消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)是IBM开发的一种基于代理的轻量级发布/订阅的消息传输协议,同时是一个基于TCP/IP的应用层通信协议,其设计思想是开放、简单、轻量、易于实现[3,4]。

MQTT采用客户端-服务器架构,基于主题订阅/消息发布进行消息推送。MQTT的基本结构如图1所示,它由MQTT客户端和MQTT代理服务器组成。客户端可以通过订阅感兴趣的消息主题来接收其他客户端推送的消息。服务器作为发布者和订阅者的中介,可以接收来自客户端的网络连接,接收客户端发布的消息,根据主题订阅推送消息到相应的客户端[5]。

MQTT协议的发布/订阅模式使消息的多个发布者与多个订阅者之间不需要直接建立TCP连接进行通信,而是通过建立在消息代理机制中的主题作为中介互相通信。这种消息传输模式实现了发布者和订阅者之间的松耦合,使系统具有可扩展性,可以支持更为动态的网络拓扑结构[6]。

图1 MQTT结构图Fig.1 MQTT structure diagram

2)DALI系统介绍。DALI智能照明系统是一种主从式结构,系统由控制设备、控制装置、DALI总线和总线电源四部分组成,系统结构如图2所示。控制设备与控制装置通过DALI总线接入系统,总线电源用来为总线通信提供电源。DALI协议规定了每个DALI系统最多能够连接64个控制装置,每个控制装置拥有一个唯一的短地址,并且最多可设置16个逻辑组地址。控制设备可以以单播、组播、广播的方式对控制装置进行控制。

图2 DALI系统结构图Fig.2 DALI system structure diagram

由于DALI系统最多能够连接64个控制装置,在较大规模照明场合的应用中往往受到限制,因此本文设计将DALI系统与MQTT协议结合起来,组成一个分布式系统,以DALI系统作为底层一级控制系统,以MQTT协议构建第二级的控制系统,以此通过MQTT协议实现不同空间的多个DALI系统的组网。

2 扩展系统设计

2.1 系统总体结构设计

DALI扩展系统是基于发布/订阅模型和MQTT通信协议,实现多DALI系统的组网[7],系统结构如图3所示,虚线部分为原有DALI系统,称为DALI子系统,每个DALI子系统都有自己的控制设备和控制装置,能独立完成各自的灯光控制。DALI扩展系统为在现有的DALI子系统的总线上挂接DALI网关,通过MQTT服务器,以发布/订阅的方式实现不同空间的多个DALI子系统的组网,并实现APP端对多个DALI子系统的远程控制。

图3 DALI系统扩展结构Fig.3 DALI system extension structure

2.2 系统方案设计

1)系统云端接入方案实现。系统组网的关键在于实现DALI网关的云端接入,本系统采用云平台为DALI网关提供各类互联网服务。云平台需要提供用户管理、设备管理、数据存储、端到端(M2M)实时通信等服务。DALI网关实现云平台的接入主要包括三个步骤:第一,DALI网关接入云平台之前,需要用户验证手机号或邮箱以完成用户注册,以得到一个合法的用户身份;第二,通过APP与DALI网关设备进行交互,实现设备的注册,并建立APP端与DALI网关设备的绑定关系;第三,DALI网关注册成功后,获得MQTT服务器的接入口令,与MQTT代理服务器建立连接。

2)系统控制方法设计。根据照明控制系统在实际照明场合的应用及需求,对于DALI扩展系统而言,可以将系统中的所有DALI子系统进行任意组合,形成不同控制规模的组控网络。根据组控网络中DALI子系统的数量,可以对DALI扩展系统按单播、组播和广播控制。

扩展系统中的任意DALI子系统可以通过订阅同一主题,组合成一个组控网络。当用户APP发布该主题的MQTT消息后,MQTT服务器将该消息推送到该网络中的所有DALI子系统。DALI网关将接收到的主题消息解析成DALI指令,以DALI指令的形式发送到DALI子系统,形成对该网络中的多个DALI子系统的统一控制。图4所示为APP与多个DALI子系统的组播控制示意图,DALI网关#1、

#2订阅了/a2d的主题,当APP端发送以/a2d为主题的消息时,DALI网关#1、#2可以接收到此消息并解析、打包成DALI指令,完成对DALI子系统#1、#2的控制。

图4 组播控制示意图Fig.4 Multicast control schematic diagram

3 系统硬件设计

DALI网关总体结构图如图5所示,主要由网络接口模块、控制器模块和DALI接口等组成。其中网络接口模块主要负责接收和发送网关与MQTT服务器通信的数据;控制器模块用于实现MQTT协议和DALI协议,完成MQTT协议与DALI协议的转换,以及APP端与DALI网关在云端注册、绑定以及通信等功能;DALI接口负责满足网关与DALI系统通信接口的电气特性。

图5 网关总体结构图Fig.5 Gateway overall structure diagram

控制器模块以STM32F407VET6作为主控制器,该处理器基于Cortex_M4的内核,频率高达168 MHz,内嵌1 Mb的闪存,192 kb的SRAM,提供丰富的存储及外设资源。

网络接口模块选用SMSC公司的LAN8720A作为以太网收发器,LAN8720A支持10 M/100 M以太网传输速率,通过标准RMII接口连接MAC层,性能高、功耗低、体积小,满足系统通信的实时性要求。

DALI接口电路的目的是将微控制器的TTL电平与DALI总线电平进行转换,实现通信功能。DALI使用双线差分驱动,两线间的压差在9.5~22.5 V之间为高电平,在-6.5~6.5 V范围内为低电平,并且总线电流不大于250 mA[8]。

4 系统软件设计

4.1 DALI网关软件设计

DALI网关作为DALI系统组网与扩展的关键设备,包括的主要功能有:订阅相关主题,接收来自该主题的消息,并将DALI子系统中控制装置回复的数据帧进行处理,发布相应的主题消息;实现MQTT消息和DALI消息的协议转换。

根据DALI网关的功能需求,软件设计主要任务有以下三点:

1) DALI网关主题设计。DALI网关的主题设计是用于实现APP到DALI网关的数据交互,用户APP和DALI网关之间会通过不同的数据通道来传递,不同的数据通道本质上是根据系统功能需求所预先设定的不同的MQTT主题号。本系统设定了如表1所示的数据通道。

表1 数据通道表

DALI网关连接上MQTT消息代理服务器后,根据主题订阅机制进行主题的订阅,来实现不同的通信功能。扩展系统中的每个DALI网关都订阅了与自身ID(Device ID)相关的唯一私有主题,通过该主题可以对扩展系统中的DALI子系统实现一对一通信,即单播控制;

扩展系统中的每个DALI网关都订阅了broadcast主题,发布该主题的消息能够实现对扩展系统的广播通信,即广播控制;各DALI网关根据所属类别,订阅分组group_id主题,能够实现一对多的组播通信,即实现对DALI扩展系统的组播控制。

2)DALI网关MQTT通信服务程序设计。DALI网关的MQTT通信服务程序主要包括连接处理模块、心跳管理模块、主题订阅模块、消息接收模块和消息发布模块,设计了如表2所示的通信服务程序的主要函数。

程序启动后,网关与MQTT服务器的TCP/IP套接字建立连接,连接成功后根据自己的客户端ID、心跳值等发送一个CONNECT消息流与通信服务器建立一个协议级别的会话,并通过心跳连接函数Mqtt_pingreq与通信服务器建立长连接。若连接不成功,则间隔一定时间通过Mqtt_reconnect函数不断尝试重连。MQTT连接成功后,每个DALI网关根据预先协商的主题通过Mqtt_subscribe函数进行主题订阅,并通过Mqtt_message函数接收相应主题的消息,对消息进行解析、打包,最终把处理结果发送到DALI总线上,实现对总线装置的控制。DALI网关可以周期查询各控制装置的状态信息,并通过Mqtt_publish函数进行状态信息的发布。

表2 DALI网关MQTT服务程序主要函数

3) DALI通信程序设计。DALI通信程序主要完成两方面工作,首先是网关接收到APP端发送的指令后,将解析的结果转换为对应的DALI指令,当检测到DALI总线空闲时,按照DALI前向帧的数据格式发送到DALI总线上。执行对DALI子系统的控制、查询等操作,其次能够周期查询DALI子系统中各个装置的故障状态,并将故障状态反馈给用户,DALI通信程序流程图如图6所示。

图6 DALI通信程序流程图Fig.6 DALI communication program flow chart

4.2 APP端软件设计

APP作为客户端软件终端,在完成用户、设备信息的云端注册及绑定的同时,实现对DALI扩展系统的控制及查询。根据APP功能设计,其客户端软件界面设计包括登录界面、主界面、用户管理界面、设备管理界面、系统控制界面及故障查询界面,客户端APP的总体框架如图7所示。

图7 客户端功能模块的总体框架Fig.7 Framework of client function module

5 系统测试

为测试系统性能,搭建了一个简单的测试平台,其中主要包括一部安装了用户APP的Android手机,基于FogCloud云的MQTT消息代理服务器,两套DALI控制系统,两个DALI网关。其中APP端作为系统控制终端,用于控制和管理整个系统。FogCloud云是一个提供物联网解决方案的云平台,提供了设备/APP管理,消息通道等功能[9,10]。每个DALI子系统由DALI网关、控制装置以及DALI电源组成,系统测试图如图8所示。

图8 系统测试图Fig.8 System test chart

完成APP端和网关在云端的注册、绑定之后,APP端以组主题号58d376f526033af01fe32609/a2d发送调光指令时,订阅了58d376f526033af01fe32609/a2d主题的DALI#1、#2子系统内的控制装置执行了相应的调光操作。测试结果表明,DALI扩展系统中的DALI网关,可以通过订阅同一组主题实现APP的组播控制。

6 结束语

我们针对传统DALI照明系统存在的灯具容量受限、控制规模较小的问题,在研究MQTT协议的发布/订阅模型基础上,以DALI网关和APP端作为MQTT通信的客户端,通过主题订阅与消息发布的机制,建立了APP端与DALI子系统间的主题关系,实现了APP端对多个DALI子系统的组网与控制。经实验测试表明,该系统能够灵活地实现DALI系统的扩展,具有较好的应用价值。

猜你喜欢
网关总线子系统
不对中转子系统耦合动力学特性研究
GSM-R基站子系统同步方案研究
信号系统网关设备的优化
驼峰测长设备在线监测子系统的设计与应用
天地一体化网络地面软网关技术及其应用
一种基于CAN总线的误码测试方法
动车段(所)控制集中仿真测试平台中TDCS/CTC仿真子系统的研究
基于ETC在线支付网关的停车场收费系统设计
基于Profibus-DP/Modbus网关的双阶挤出机组温度控制系统设计
CAN总线并发通信时下位机应用软件设计