APP下载

基于LoRa自组网的电能采集系统设计与实现

2023-04-03陈德富刘小湖周旭文邱宝象吴华君屈亮亮

计算机测量与控制 2023年3期
关键词:集中器数据包信道

陈德富,刘小湖,周旭文,邱宝象,吴华君,屈亮亮

(1.浙江工业大学 信息工程学院,杭州 310023; 2.万向钱潮股份有限公司,杭州 311215)

0 引言

电能是当前社会活动的必需能源之一,随着社会经济的发展,电气设备日渐增多。然而各种设备分布广泛,使人们难以获取设备的实时用电信息和运行状态,从而造成了电能的浪费。物联网技术为这一难题带来了解决方案,然而当前各种物联网模组价格、性能不一,适用的场景也不尽相同,因此设计出一种低成本的、满足特定场景需求的远程电能采集系统对能源的可持续发展具有重要意义。

目前广泛使用的物联网通信模组主要有蓝牙、ZigBee[1]、NB-IoT[2]和LoRa[3]等。其中,蓝牙和ZigBee虽然已经发展出了成熟的开发协议栈,但它们的实测通信距离通常不足二十米,并且易受障碍物的影响,因此主要用于短距离通信的智能家居等领域。NB-IoT和LoRa通信距离较远,是低功耗广域网中最开放和成熟的技术,目前广泛用于水表、电表等远程无线抄表领域[4-7]。虽然NB-IoT具备覆盖广、连接多和低功耗等众多优势,但它构建于蜂窝网络,对基站的依赖性较高,并且需要定期向运营商支付流量费用,对开发和运行维护的成本需求较高[8]。LoRa技术基于开放频段,可按需构建自主网络,具有高度的自主性、可扩展性、灵活性和运行成本低等众多优势,因此LoRa通信技术成为了首选。

无线传感器网络由具有无线收发功能的终端节点构成,网络中的节点根据预设的算法和协议获取信道资源,实现数据传输。与传统中心式的蜂窝网络不同,无线自组网无需大型基站或网络设施的支持,能够迅速、灵活、高效地部署网络终端设备。目前,市场上的LoRa无线网络开发方案主要有基于LoRaWAN协议[9]和基于LoRa网关两种方式,LoRaWAN协议主要针对星型拓扑结构,但并不适用于小规模的无线传感器网络[10];LoRa网关可同时提供了8个下行信道,传输距离可达几公里,但目前的LoRa网关成本高达几百元,并且开发难度大[11],因此也并不适用。综上所述,本文针对用电设备远程监控的问题,研究设计了一种基于LoRa自组网技术的低成本的、适用于网络规模较小的电能数据采集系统。

1 系统方案设计

本文设计了一种基于LoRa自组网的电能数据采集系统,该系统整体为集中式的星型网络架构,由一个集中器和若干终端节点组成。集中器的主要功能为通过LoRa模块收集终端上传的传感器数据并通过NB-IoT模块将数据打包上传至物联网云平台中;节点主要读取传感器中的电压电流数据,使用LoRa模块按照特定的通信协议上传至集中器中。LoRa无线通信部分采用了基于CSMA/CA协议[12]的设计方法来实现节点与集中器的无线通信,使节点通过竞争信道的方式来获取信道资源,实现数据上传。集中器和节点均使用同样规格的LoRa模块,采用这样的自组网设计方式,有效地降低了开发成本。系统总体框架图如图1所示。

图3 RN8209应用电路原理图

图1 系统框图

1.1 节点硬件设计

终端节点的核心硬件主要由微控制器电路、电能采集模块和LoRa通信模块组成,节点的整体硬件结构如图2所示。电能采集部分使用电压互感器和电流互感器对用电设备运行时的电压电流进行转换,将大电流信号转换到芯片可以处理的范围,使用RN8209计量芯片[13]对转换后的电压电流进行采样处理,STM32处理器通过SPI总线读取计量芯片内部的寄存器值。LoRa通信模块由基于SX1278芯片[14]的LoRa模组构成,处理器通过SPI总线与LoRa模块进行通信。

图2 节点硬件结构图

本文选用STM32F103C8T6型号芯片作为系统核心控制器,与稳压供电电路、USART串口通信接口、晶振电路和LoRa通信接口构成微控制器电路。芯片的最高工作频率可达72 MHz,具有64 k字节的可编程FLASH空间和20 k字节的RAM空间,并支持SPI、USART等多种通信方式的外设,完全满足实现本项目的硬件和软件设计的性能需求。

电能采集电路采用精密的ZMPT107电压互感器和电流互感器TA1410对220 V交流电压实现1:1的电压转换,对交流电流实现5 A:2.5 mA的比例转换。RN8209芯片与微控制器的SPI1_MOSI、SPI1_MISO、SPI1_CLK和SPI1_CS引脚相连,电能采集电路的原理图如图3所示。该芯片是一款单相多功能专用计量芯片,能测量有功功率、无功功率、有功能量以及无功能量;同时提供两路独立的有功功率有效值、电压有效值、线频率和过零中断;支持全数字的增益、相位和直流偏置校正,并提供串行通信接口SPI和UART;内嵌的电源监测电路,能保证上电和断电时芯片工作的可靠性。因此,满足本系统的电能采集需求。

LoRa通信模块采用了安信可公司所设计的Ra-02型号的LoRa模组,与微控制器的SPI2引脚相连进行通信。该模组基于SX1278芯片,支持410 MHz至525 MHz的通信频段,支持6种调制方式,适用于长距离的扩频无线通信,理论通信距离可到达五公里,具有较强的抗干扰能力和高可靠性,接收灵敏度理论可达到-140 dBm,并支持最高+20 dBm的发射功率。同时,该模块还具备低功耗的特性,在接收模式下电流为12.15 mA,待机状态下的电流仅为1至2 mA。

1.2 集中器硬件设计

集中器的核心硬件主要由微控制器电路、NB-IoT通信电路和LoRa通信模块组成,其中,微控制器电路和LoRa通信模块采用与节点相同的设计方案。为了便于系统开发,NB-IoT通信电路则直接采用基于移远公司的BC26模块进行设计。BC26模块与STM32的USART串口的TX引脚和RX引脚相连接,STM32通过串口向模块发送特定的AT指令字符串与模块进行通信,用于控制NB-IoT模块的工作和数据发送。集中器通过LoRa通信模块接收各节点上发的数据包并解析,然后将各节点数据封装成MQTT协议支持的格式,上传至阿里云平台。

1.3 网络结构设计

本文设计了基于星型拓扑结构的无线传感器网络,星型网络是具有低时延的简单网络结构,消除了网络同步开销和跳数。由于LoRa模块本身具备较远的通信距离,这使得LoRa节点无需像网状网络一样依靠中继节点和路由协议实现与远端网关的通信,大大降低了LoRa传感器网络的复杂度和开发难度,不需要设计庞大的网状结构来覆盖更大的范围[15]。网络拓扑结构如图4所示。

图4 网络拓扑结构

2 CSMA/CA协议

CSMA/CA协议源于ALOHA协议[16],是一种基于竞争的带冲突避免的载波监听多址访问协议。CSMA/CA协议规定,节点在发送数据前首先使用载波侦听计数对当前信道进行检测,当信道空闲时,则延迟一次等待帧间间隔(DIFS)后再次检测,若信道仍然空闲,节点则获取当前退避窗口内的一个随机退避值并进入退避阶段。在退避阶段,节点根据退避值进行退避计数,每过一个时隙(SlotTime),若信道仍然保持空闲,则退避值减1。直到退避值减为0,表明节点成功竞争到信道,允许发送数据帧(DATA),若节点在短帧间间隔(SIFS)内没有接收到应答帧(ACK),说明当前通信发送碰撞,则节点根据预设的退避算法调整退避窗口(CW)的值以减小下一次通信发生冲突的概率。在退避阶段中,若节点检测到信道忙碌,则挂起当前退避值,等待下一次信道空闲再重新进入退避阶段。图5展示了基本的基于CSMA/CA通信机制的两节点竞争通信过程。

图5 节点工作时序图

其中,短帧间间隔(SIFS)是节点处理协议的最短时间,用来保证节点对信道的占用,以顺利完成帧数据的交换。由图5可知,SIFS被用作DATA帧之后,SIFS的大小由式(1)确定。其中,aRxRFDelay、aRxPLCPDelay为射频接收延时,aMACPrcDelay为节点处理MAC协议产生的延时,aRxTxTurnaroundTime为射频收发模式的转换时间[17]。

aSIFSTime=aRxRFDelay+

aRxPLCPDelay+aMACPrcDelay+

aRxTxTurnaroundTime

(1)

时隙(SlotTime)是MAC协议中的最小时间单位,协议中所有的时间都是其整数倍。等待帧间间隔(DIFS)是节点判定信道空闲的最小持续时间,当检测到信道持续空闲DIFS时间后,节点才能执行下一步的退避操作。DIFS的大小由式(2)确定。

DIFS=aSIFSTime+2×aSlotTime

(2)

2.1 握手机制

在无线网络通信中,由于无线信号的覆盖范围有限,会存在隐藏终端的问题[18]。假设节点A、C同时位于集中器B的覆盖范围之内,而A和C彼此间信号不相互覆盖。当A正在向B发送数据的时,由于节点C侦听不到A的载波,此时它会认为信道处于空闲从而接入信道。这就会造成集中器B在接收A的数据帧时发生冲突,从而降低了信道吞吐量。

本文采用RTS/CTS握手机制来解决隐藏终端的问题。当节点需要发送数据时,首先向集中器发送一个简短的RTS请求握手帧,然后集中器会立即向节点发送一个简短的CTS帧进行回应,当节点接收CTS信号时,表明握手成功可以继续发送数据帧,从而避免了直接发送较长的数据帧时因碰撞而造成较长时间的信道资源的浪费。因此,本文采用了RTS+CTS+DATA+ACK的通信机制来克服上述问题。

2.2 退避算法

在CSMA/CA协议中,退避算法的主要作用是为了保证网络中各节点公平地进行数据发送,当节点间通信发生碰撞或通信成功时,退避算法则会调整当前退避窗口,以减少冲突和延迟、提高吞吐量、提高网络性能[19]。

二进制指数退避算法[20](BEB)是最经典的退避算法。当节点通信发生冲突时,BEB算法将当前竞争窗口值CW乘以2,若CW己达到最大值,则不再增加。当通信成功时,则将竞争窗口值CW下降至最小值,节点随机退避值的取值范围则为0到CW之间的随机值,BEB算法如式(3)所示。

(3)

在发生冲突时,虽然BEB算法的倍乘操作能快速有效的解决冲突,但当数据发送成功时,它直接将竞争窗口重置为最小值,这样总是使得上次发送成功的节点获取到最大的竞争优先权,这样可能会导致网络中的不公平现象,甚至出现信道一直被某一节点占用,从而导致其它节点无法竞争到信道的极端情况。

为解决BEB算法存在的缺陷,目前提出了一系列改进的退避算法,如EIED[21]、MILD[22]和MIMLD[23]等。MILD算法调整了冲突和成功时竞争窗口的更新规律,当节点产生冲突,则将当前竞争窗口CW乘以乘法因子α,当节点交互成功或是竞争窗口值达到上限后,MILD采用线性递减的方法,将竞争窗口值CW减去一个线性因子β,使CW线性下降,如式(4)所示。该算法使得CW的变化更加缓慢,克服了BEB的极端不公平性。EIED和MIMLD算法也采用了类似的思想,即发生碰撞时,通过扩大竞争窗口以快速摆脱冲突,通信成功时缓慢减小竞争窗口,同时也保证了一定的公平性。

(4)

2.3 网络参数确定

由前文可知,CSMA/CA协议中有DIFS、SlotTime、SIFS三个重要的时间参数。在基于LoRa模块的CSMA/CA通信机制设计中,上述参数的确定与LoRa模块的工作参数密切相关。主要由扩频因子(SF)、带宽(BW)、编码率(CR)决定,不同的参数配置会导致时隙和各帧间间隔不同,若没有匹配合适的时隙与帧间间隔,则会导致网络性能的降低。在本文的系统设计中,LoRa模块的工作参数均设置为SF=12,BW=250 kHz,CR=4/5,前导码长度Npreamble=8,即在数据速率DR=0.58 kbps的条件下,确定系统时隙和帧间间隔的取值。

时隙SlotTime的确定方法为:当某节点在某时隙向信道中发送数据后,在下一个时隙前,其它节点都能检测到信道已经转变为忙碌状态。因此,上一时隙LoRa数据包中的前导码部分在信道中的传输时长与下一时隙节点CAD检测信道的时长就决定了时隙长度,时隙长度应大于等于二者中较长者。根据LoRa芯片手册,前导码的传输时间由式(5)确定,有LoRa参数计算可得,前导码的传输时间约为205 ms。CAD检测时长与LoRa参数的关系如表1所示。因此,本文选择将SlotTime的大小设置为205 ms。

(5)

SIFS的大小由射频接收延时、MAC协议解析处理协延时和射频收发模式的转换延时共同确定。根据LoRa芯片手册可知,射频接收延时和射频收发模式转换的时间都是微小的,通常不足1 ms。经过实验测试,单片机处理MAC协议的延时通常在5 ms左右。因此,本文将SIFS的大小确定为10 ms。最后根据式(2),将DIFS的大小确定为420 ms。

2.4 网络性能仿真

常用的网络性能评估标准有吞吐量、网络利用率、数据丢包率等指标,本文在MatLab中实现了CSMA/CA协议的仿真,在随着系统节点的不断增加的情况下,测试了第2小节中的4种不同退避算法,并比较其网络利用率的性能表现。

设定一个具有N个节点的星型网络拓扑环境,节点需要随机将数据上报给集中器,从而形成竞争网络。退避算法的目的就是根据通信情况合理的调整退避窗口,从而尽可能避免节点间通信发生碰撞,减少网络中发生冲突的时间,实现稳定的网络通信。无线网络利用率的定义如式(6)所示,网络利用率用E表示,其中Ttotal为总的网络通信时间,Tno_collision表示未发生数据包碰撞的通信时间。E越大,网络中发生冲突的时间就越短,表明退避算法的性能更加优越。

(6)

在仿真实验中,设置节点数量由1到100递增,仿真时间Ttotal=500 s,得到的网络利用率随节点数量递增的变化曲线如图6所示。由图中曲线可知,当网络中节点较少时,各退避算法的表现性能均相差不大。随着网络节点数量的增加,BEB算法由于在上一次通信成功时直接将退避窗口调整为最小值,因此性能急剧下降,EIED算法由于只是将退避窗口调整为原来的9/10,因此性能相对BEB算法较好。MILD采用乘性增加、线性递减的策略,当节点数量逐渐增多时,展现了比BEB和EIED算法更好的性能。MIMLD根据当前CW的值来判断网络的拥堵情况,以此来采取不同的策略调整CW,在4种退避算法中,具有最好的性能表现。因此,本系统采取了基于MIMLD退避算法的CSMA/CA协议设计。

图6 网络利用率仿真结果

3 系统软件设计

要实现基于CSMA/CA协议的传感器网络设计,前提是节点设备可以进行载波侦听,即判断当前信道是否被占用,LoRa模块提供了CAD工作模式以实现对信道的侦听。一个完整的LoRa数据包主要由前导码、数据有效负载和可选报头组成。在CAD模式下,LoRa模块将高效扫描当前信道,用于检测当前信道中是否存在前导码信息。若检测到前导码,LoRa模块会产生相应的CAD中断信号,表明当前信道中有正在传输的LoRa数据包,即信道处于忙碌状态。

3.1 通信协议设计

由于节点和集中器间采用了RTS+CTS+DATA+ACK的通信机制,因此本文针对这4种数据帧设计了对应的通信数据包,数据包格式如图7所示。其中,RTS数据包用于节点向集中器发送握手请求,主要由网络标识符(net_flag)、PANID、节点设备地址(dev_addr)、标识字符‘R’和校验和(chksum)组成。CTS数据包用于集中器发送握手响应指令,当节点收到CTS信号,表明握手成功。根据系统的设计需求,DATA数据帧除了包含网络标识符、PANID、设备地址和校验和外,还具备数据包标识字符‘D’、4字节的电压有效值(Urms)和电流有效值(Irms)。ACK数据包则用于集中器向节点发送数据包的应答信号,表明集中器成功接收数据包。

图7 数据包格式

3.2 节点软件设计

由于系统采用基于随机竞争的MAC协议进行通信,因此节点端的数据发送方式也采用随机发送的策略。在本系统的软件设计中,当检测到用电设备的电流有效值发生大于5 mA的变化时,即认为负载设备的运行状态发生变化,例如设备从断电状态变为上电运行状态。此时节点立即尝试获取信道资源,将当前设备的电压电流有效值打包后发送至集中器,在其它情况下都将LoRa模块设置为空闲模式,以降低LoRa模块的功耗。

本系统中的LoRa节点主要在CAD模式、空闲模式、接收模式、发送模式这4种工作模式间切换。节点上电后初始化为空闲模式,当有数据要发送时,节点立即进入CAD检测模式,若检测到信道连续空闲时间达到DIFS,则获取随机退避值,进入退避阶段。当随机退避值减为0时,则表明节点成功竞争到信道,然后切换至发送模式发送RTS,发送完毕后进入接收模式等待CTS信号。若经过SIFS时间后,仍未收到CTS信号,则说明当前发生超时,节点回到空闲模式,等待下次数据发送;若成功接收CTS信号则切换到发送模式发送DATA帧,并等待接收ACK帧。在节点通信过程中,若发生超时和数据包解析错误,则节点根据退避算法调整CW值并切换为空闲模式。节点的通信流程如图8所示。

图8 节点端通信流程图

3.3 集中器软件设计

集中器主要由NB-IoT通信任务和LoRa通信任务组成。集中器上电时,首先运行NB-IoT任务,主要包括初始化硬件接口,测试模块是否工作正常,并与云平台建立连接。集中器的LoRa模块主要工作在接收模式和发送模式,当NB模块初始化完成后即开启接收,用于接收节点发送的RTS帧和DATA帧。然后解析接收到的数据包,构造对应的CTS帧和ACK帧并转换为发送模式发送至节点,集中器的LoRa通信流程如图9所示。最后,由NB-IoT任务周期性的将采集到的各节点数据封装成MQTT协议支持的格式并发送至物联网云平台。

图9 集中器通信流程图

4 实验结果与分析

实验测试环境由4个LoRa节点和1个集中器组成,各LoRa节点读取传感器数据并随机进行上报,通过RTS/CTS/DATA/ACK的握手通信机制与集中器进行通信,同时将通信过程、随机获取的退避值、更新的竞争窗口CW、请求发送的次数和成功发送的次数通过串口输出到本地。LoRa集中器将接收的各节点的电流电压数据和各节点的数据包统计量通过串口定时输出,并通过NB-IoT模块将各节点的电流数据传送到阿里云平台。对比LoRa节点上报的数据量与集中器成功接收的数据包数量可以验证通信过程中是否丢包,程序是否按照设定的协议正确执行。在系统运行15分钟后查看集中器和各节点的运行结果。

节点1的串口输出结果如图10所示。由图中可知,节点1当前得到的随机退避值为6,竞争窗口CW值为31。节点1总共随机发起了186次RTS/CTS握手请求,成功通信的次数为150次,数据包投递率为80.6%。其中,通信失败的原因主要是由于节点间发生碰撞从而导致了集中器接收的数据包不正确或者接收超时造成的。

图10 节点1运行结果

集中器的输出结果如图11所示,集中器将节点的地址、当前上报的电压电流值和各节点上报数据包的数量总和通过串口输出值PC端。由输出结果可知,集中器成功接收的节点1上报的数据包数量为150,与节点1的运行结果相同,验证了程序的正确性。并且可以看到4个节点随机上报数据的成功次数相差不大,因此也可反映出协议具有一定的公平性。

图11 集中器运行结果

阿里云物联网平台的显示结果如图12所示,可以看出集中器通过NB-IoT模块成功将各节点的电流数据发送至云平台上。其中,由节点1的电流变化曲线可知,该节点在某一时刻开始上电工作,并在运行一段时间后又断电停止工作。

图12 物联网平台显示结果

5 结束语

本研究设计了一套新型的用电设备电能采集方案,该方案采用LoRa无线通信自组网技术,并实现基于CSMA/CA竞争通信机制的星型传感器网络,经过实验测试,系统各功能均正常实现。与传统的蓝牙、ZigBee和NB-IoT等物联网通信方式相比,该系统具有较远的通信距离、较低的开发运行管理成本和较高的灵活性等优点。本方案的设计符合万物互联的发展趋势,能较好的满足经济实惠的远距离用电信息监控系统的需求。依托LoRa无线通信技术,笔者后续将对组网算法做进一步研究,以进一步提高无线传感器网络的性能,增强其实用性。

猜你喜欢

集中器数据包信道
SmartSniff
谈低压集中器及表计在线故障快速排查方法
集中器常见死机原因分析及解决方法探究
基于导频的OFDM信道估计技术
一种改进的基于DFT-MMSE的信道估计方法
基于MED信道选择和虚拟嵌入块的YASS改进算法
基于Libpcap的网络数据包捕获器的设计与实现
三合一集中器作为台区线损考核表计的探讨
链表方式集中器抄表的设计
一种基于GPU的数字信道化处理方法