APP下载

基于MQTT协议的物联网网关设计

2019-12-07吴俊辉吴桂初葛世伟许小锋

关键词:以太网网关阿里

吴俊辉,吴桂初,†,陈 冲,葛世伟,许小锋

(1.温州大学浙江省低压电器技术创新服务平台,浙江温州 325027;2.浙江天正电气股份有限公司,浙江温州 325604;3.温州聚创电气科技有限公司,浙江温州 325035)

在物联网技术和云平台通信技术广泛应用的今天,采用云端通信对设备进行远程监控的需求不断增加.各公司生产的设备之间的通信技术不同,以及物联网公司之间的相互竞争,导致设备数据传输的协议多种多样、管理平台混乱,这是当前业界存在的主要问题[1-4].

许多电器设备可通过现场总线的方式将自身的运行数据传输到上位机,如多功能电表、智能断路器等,但不同类型的设备采用的通信协议各不相同,因此需要设计一款能够与不同设备进行协议转换的网关设备,并且该网关也能够将协议转换后的数据传输到远程服务器.文献[5]介绍了一种嵌入式网关,该网关可以将无线协调器采集到的数据通过GPRS传输到互联网,也可通过GPRS实现远程控制;文献[6]介绍了一种基于W5500芯片的以太网网关的设计方案,该方案能够灵活地实现以太网通信,特别适用于RAM较小的低级处理器;文献[7]设计了一种低成本网关,该网关可以实现以太网和RS485采集器的高速连接.但以上设计针对性强,只能为单一产品使用,应用范围有限.为了能够与多种类型的电器设备进行通信,并将所有设备信息汇总后传输到云端服务器,本文设计了一款以STM32F103为主控制芯片,搭建三路RS485串行电气接口,集成以太网、WIFI及GPRS等多种网络通信方式的网关设备.在与电器设备通信时,本网关作为主机通过RS485接口与电器从机设备进行通信,最后通过协议转换,将设备运行的数据通过MQTT协议传输到阿里云物联网平台.

1 协议分析

在本设计中,所涉及的协议有三种,一种是网关与云端的通信协议,采用MQTT协议与阿里云物联网平台通信;第二种是网关与从机设备的通信协议,主要是Modbus协议与DLT645协议,其网关作主机,与网关连接的电器设备作为从机,进行协议间的互相转换.

1.1 MQTT协议

MQTT协议是一种基于TCP/IP网络连接的消息传输协议,使用发布/订阅的消息模式,它开放、简单、轻量、易于实现的特点使它适用于各种受限的环境,如低宽带、网络不可靠、嵌入式处理器和内存不足等情况[8-10].MQTT协议的报文结构如图1所示.

MQTT协议的消息类型(Message Tpye)共有十六种,如表1所示.

图1 MQTT协议报文结构Fig 1 MQTT Protocol Message Structure

表1 消息类型Table 1 Message Types

QoS(Quality of Service)消息交付质量级别是MQTT协议中一个重要的功能,它可以决定消息的交付质量.QoS总共有三种服务级别,0表示至多只发送一次,不保证消息可靠性,消息可能会丢失;1表示至少发送一次,客户端或服务器确认收到消息,但消息可能会重复;2表示精确发送一次,确保客户端或服务器仅一次收到消息[10].就消息质量而言,客户端与服务器之间的交互如图2所示.在本网关中通过MQTT协议将电器设备运行数据上传到阿里云物联网平台,并且可以接收解析服务器端命令,实现远程监控的目的.

图2 消息质量流程图Fig 2 Message Quality Flow Chart

1.2 Modbus协议

Modbus是应用层的报文传输协议,它提供不同类型设备之间主机/从机的通信.Modbus是一个请求/应答协议,提供功能码规定的服务,Modbus功能码是请求/应答协议数据单元(PDU-Protocol Data Unit)的元素,是Modbus协议定义的一个与基础通信网络无关的简单协议数据单元(PDU)[11].帧格式如图3所示.

本设计中传输模式采用RTU模式,地址域与从机设备相对应,差错校验采用16位CRC校验.网关与两路RS485接口采用Modbus串行链路协议,网关作为主机发送请求,与之相连接的设备作为从机响应主机请求,主机定时访问从机,周期性完成数据信息交换.

图3 通用Modbus帧Fig 3 General Modbus Frame

1.3 DLT645协议

多功能电表和智能断路器均采用DLT645通信协议,DLT645协议的帧格式如图4所示.68H和16H分别作为帧的起始和结束标志,A0-A5作为地址域,C控制码由规约规定,具体根据主机/从机的请求/应答确定,L为数据域的字节数,CS校验码采用各字节二进制算术和.DATA数据域的结构随控制码的功能而改变,数据域主要包含数据标识、密码、数据等,数据域的数据格式为低字节在前高字节在后[12].本设计中,网关中嵌入DLT645规约,并且网关作主机.

图4 DLT645帧格式Fig 4 DLT645 Frame Format

2 硬件设计

本网关采用STM32F103作为主控芯片,外围搭建电源电路,三路RS485接口电路,WIFI接口电路,GPRS接口电路以及以太网网口电路.

STM32F103是一款低功耗、高性能的芯片,包含多种通信接口,如IIC、SPI和USART,综合考虑生产成本和性能配置,该芯片满足本设计的要求.本设计中,通信网关的整体硬件结构见图5.

图5 整体硬件结构Fig 5 Overall Hardware Structure

2.1 WIFI和GPRS电路

本设计中,WIFI采用的是ESP8266通信模块,GPRS采用的是A6_Mini通信模块,两无线模块硬件连接电路分别如图6、图7所示.

图6 ESP8266模块Fig 6 ESP8266 Module

图7 A6_Mini模块Fig 7 A6_Mini Module

ESP8266模块和A6_Mini模块分别通过USART串口与STM32F103连接,同时两个通信模块都支持AT指令,通过AT指令分别对两模块进行设置,便可建立TCP/IP通信连接.

2.2 以太网电路

以太网通信采用W5500芯片作为以太网控制单元,配合晶振等外围电路,该芯片的一端连接RJ45作为外部接口,另一端通过SPI接口与STM32F103连接,连接电路图如图8所示.

2.3 RS485电路

本设计所选用的STM32F103处理器包含五路USART,其中两路分别与WIFI模块和GPRS模块连接,其余三路设计为RS485通信接口,其硬件电路如图9所示.

图9 RS485接口电路图Fig 9 RS485 Interface Circuit Diagram

3 软件设计

本设计的软件部分运行在处理器的μC/OS-Ⅱ操作系统中,程序的功能是通过WIFI、GPRS、以太网建立的TCP连接作为网络通信基础,采用MQTT协议与阿里云物联网平台进行通信,网关作为主机,定时与从机进行数据信息交换.在μC/OS-Ⅱ操作系统中建立以下任务:TCP连接任务、MQTT任务、定时任务.TCP连接任务为MQTT通信做好网络连接准备,其中包括ESP8266、A6_Mini、W5500模块的网络配置,并选择其中一种作为通信方式;MQTT任务是在TCP任务完成的基础上,采用选定的通讯方式,通过MQTT协议连接到阿里云物联网平台,该任务包含MQTT协议的连接命令、消息订阅、PING请求以及消息接收;定时任务主要是通过RS485定时地访问从机交换设备的数据信息,并通过MQTT协议传输到云端服务器.

3.1 TCP软件设计

网络通信提供有效可靠TCP连接是MQTT协议通信的基础.本网关作为客户端,在通信方式上包含WIFI、GPRS及以太网三种,可以有效应对各种使用环境.WIFI、GPRS通过AT指令配置参数后,在提供无线网络覆盖的环境下,即可保证TCP连接;以太网W5500芯片在初始化后即可检测路由连接;本设计中,优先选用以太网作为通信方式.三种通信方式的切换以及TCP连接流程如图10所示.

3.2 MQTT通信软件设计

在TCP网络连接成功后,客户端MQTT任务开始向阿里云物联网平台发送连接命令,请求建立MQTT通信连接,当MQTT通信建立成功后,客户端继续向服务器发送主题订阅命令,服务器在收到订阅命令后,对订阅主题进行确认并向客户端返回主题订阅成功的命令,最后一个步骤是MQTT保活命令,设备端的保活时间间隔内,需要向服务器至少发送一次报文.MQTT协议通信的流程如图11所示.

3.3 定时任务软件设计

定时任务的功能是客户端向服务器发送数据信息,在MQTT协议连接成功的基础上,定时任务便可启动.定时任务的流程如下:在规定的时间内,网关作为主机对RS485总线上的从机电器设备进行数据访问,网关将从机数据帧解析后,添加到网关已经订阅的主题中,再通过消息发布,将数据发送到阿里云物联网平台,按上述流程如此循环.定时任务的流程如图12所示.

图10 TCP连接流程图Fig 10 TCP Connection Flow Chart

图11 MQTT协议通信流程Fig 11 MQTT Protocol Communication Process

图12 定时任务流程图Fig 12 Timing Task Flow Chart

4 实验测试

为了测试该网关的通信能力,专门搭建了一个实验平台,该测试平台由智能断路器、多功能电表、通信网关和电源组成,测试平台的电路连接见图13,实物图见图14.测试平台搭建完成后进行系统测试,测试主要分为两部分,一部分是网关连接到阿里云,成功登陆云服务器测试;另一部分是与云平台连接成功后不同网络通信方式的测试,主要是数据传输性能和传输延迟测试.

图13 测试平台电路连接图Fig 13 Test Platform Circuit Connection Diagram

图14 测试平台实物图Fig 14 Physical Diagram of Test Platform

4.1 登陆阿里云服务器

将阿里云平台的MQTT账号写入网关中,在TCP网络基础连接建立成功后,系统会自动登陆到设置的阿里云账号,成功登陆云平台后,该网关在云平台上显示在线状态,如图15所示.

图15 成功登陆云平台Fig 15 Successfully Landed on Cloud Platform

4.2 网络通信测试

在实验室条件下,分别测试不同网络通信方式与云端成功连接后的数据传输性能.测试的方法是网关在一小时内向云平台通信192次,每次发送一条不大于1K字节的消息,连续测试24h,查看云端接收数据的情况.表2是不同网络方式通信测试的实验数据.由于WIFI网络连接不稳定,导致数据丢失,其它两种网络方式通信丢包为零.

表2 通信性能测试Table 2 Communication Performance Test

在通信测试的同时,随机选取 10个不同时刻进行网络延迟测试.阿里云物联网平台提供一个实时延迟测试接口,原理是从云端向网关下发一条指令,查看网关回复时间.表3为网络延迟测试数据,单位是ms.可以从数据中得出,以太网延迟最低,GPRS延迟最高.

表3 网络延迟时间Table 3 Network Delay Time

5 结 论

本文采用WIFI、GPRS、以太网集成芯片W5500和STM32F103微处理器,设计了一种基于MQTT协议的物联网网关,通过RS485与子设备连接,实现了阿里云物联网平台和设备端的数据信息交换.三种不同的网络通信方式,有利于网关应用在各种网络环境下,缩短了产品的开发周期.实验表明,该网关通信能力稳定,可以在具体实践中进行应用.

猜你喜欢

以太网网关阿里
基于FPGA的工业TSN融合网关设计
一种主从冗余网关的故障模式分析与处理
云上阿里
辰辰带你游阿里
天地一体化网络地面软网关技术及其应用
Catalan数及几种应用实例
车联网网关架构的设计
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
基于以太网的计算机与数控系统通信技术研究