基于北斗短报文的农业环境数据采集通信机制研究*
2021-11-26杨欣,郑禄,帖军,解伟
杨 欣 ,郑 禄 ,帖 军 ,解 伟
(1.中南民族大学 计算机科学学院,湖北 武汉 430076;2.湖北省制造企业智能管理工程技术研究中心,湖北 武汉 430076)
0 引言
近年来,随着物联网在农业领域的应用,现代农业快速向智慧农业发展[1]。在“乡村振兴”战略的推动下,农业物联网将进一步推广到广泛的农村地区,以加快农业的转型升级和高质量发展[2]。通过物联网技术获取的农业环境数据信息是智慧农业的基石,但部分农村地区存在通信问题,如有线网络尚未建设且建设成本大、时间长;移动网络信号不稳定,甚至没有被覆盖,这些情况给数据采集带来极大的不便。
目前,利用常规通信方式实现数据采集方面,许多专家学者进行了深入研究,并取得相应的研究成果。文献[3]提出采用以太网进行远程、实时数据采集与传输;文献[4]应用GPRS 等无线通信方式进行数据的远程传输;文献[5]在采集端结合ZigBee、LoRa 等WSN 技术延伸了数据采集的深度。上述研究成果在远程数据采集工作中发挥了重要作用,但无法应用到通信盲区的区域。相比于受地区限制的通信方式,卫星通信的覆盖范围更广,不存在通信盲区。
北斗短报文是北斗卫星导航系统的独特功能,不依靠移动通信信号,利用卫星进行双向通信,能够提供全天候无盲区服务[6],目前已经用于森林防护[7]、电力调度[8]、应急搜救[9]等领域。北斗短报文通信覆盖范围大,不受地理位置限制,是现有通信网络的有益补充;同时,北斗短报文也存在通信容量、频率限制以及不可靠通信三方面的不足。文献[10]结合ZigBee 与北斗短报文技术,在网关节点上嵌入北斗短报文模块用于数据传输,但没有对北斗短报文通信的不可靠性提出解决方案;文献[11]提出并建立双指挥机架构的自动气象站数据传输系统,针对北斗短报文通信的不可靠问题采用重复发送策略,但没有较好地利用通信资源;文献[12]提出一种分布传输方法提高可靠性,但没有充分利用北斗通信容量,小数据不能填满电文内容,造成传输效率降低;文献[13]提出采用丢包反馈重传机制完善数据传输的可靠性,运用粘包机制提高小数据传输效率,根据分包机制实现大数据的正确传输,但没有考虑多个发送端时接收端的反馈机制。
本文针对北斗短报文通信的特点,提出在发送端基于概率判断的请求确认机制,使得发送端在不同环境中都能可靠传输且最大化传输效率;在接收端采用动态累积确认机制,保证在多对一通信场景下的可靠通信。本设计基于以上机制采用北斗短报文通信实现了偏远地区等通信盲区的农业环境数据采集。
1 系统设计
1.1 系统结构
系统由多个环境数据监测站(包含北斗通信模块)、数据处理服务器及云数据库构成,如图1 所示。系统实现基于北斗短报文的农业环境数据采集。环境数据监测站通过北斗通信模块将数据发出,数据经过卫星的中转被接收端的北斗通信模块接收,数据解码后存入云数据库,完成数据采集。
图1 农业环境数据采集系统框架
1.2 系统硬件设计
环境数据监测站由终端控制器、供电系统、传感器组、北斗通信模块构成,如图2 所示。
图2 系统硬件结构图
终端控制器是环境数据监测站控制和数据处理的核心,由中央处理器、存储器等构成。同时,为控制器配置ADC、UART、I2C 和RS485 等多种通信方式的软硬件,可以与多种类型的传感器进行通信。
系统采用太阳能电池板和储能装置为系统供电,提供直流5 V 和24 V 电压,其终端断控制器的供电电压为5 V,传感器的供电电压为5 V 和24 V 两种。
系统开发与测试中使用的北斗通信模块为GYT2015C型北斗短报文一体机。该一体机采用北斗用户数据接口协议4.0,其通信申请指令为“$TXSQ”。
2 通信协议设计
2.1 农业环境数据介绍
农业环境数据是指农作物生长环境中的空气温度、湿度、光照、土壤湿度、土壤pH 值、二氧化碳含量、风速风向等影响作物生长和农事活动的环境数据。本系统中的环境数据监测站配备了12 项环境数据传感器,可以满足多种作物的种植需要。
农业种植中,作物的种植周期一般较长,对环境数据的采样频率要求较低,一般为5 min/次。因此,短报文的1 min 通信间隔可以满足农业环境数据传输要求。同时,监测站会根据北斗同步的时间为每组环境数据添加时间戳。
2.2 北斗短报文通信限制
北斗短报文通信具有全天候、无盲区通信的优势,但在民用领域使用中存在通信容量、频率以及不可靠通信3 方面的限制[14]。具体表现为:
(1)频率限制:同一设备2 次发送数据之间必须等待一段时间,时间间隔大于等于1 min,所以通信频率小于等于1 Hz。
(2)容量限制:民用终端单次有效通信的内容长度最大为78 B,因此只能传输较少的信息。
(3)通信不可靠:北斗卫星通信链路不可靠,表现为接收端接收短报文后不发回执信息,发送端无法确定数据是否发送成功。
对于不同的民用IC 卡,上述的限制条件可能不同。
2.3 系统通信协议设计
为了满足北斗短报文通信容量的要求,需要对北斗数据包的用户数据部分进行协议设计。
2.3.1 发送端协议
环境数据发送端协议分为环境数据部分和标志位部分,协议格式如图3 所示。
图3 农业环境数据北斗传输协议封装格式
环境数据部分根据不同数据项的大小分配字节数,在保证不损失数据的情况下,尽可能少地占用通信容量。为了进一步减少数据长度,采用如下规则:
(1)环境数据项的先后次序固定,每个数据项占用固定长度,不使用分隔符区分,接收端按照编码顺序即可对数据进行解码和提取;
(2)每个环境数据项由2 个整数组成,分别代表实际数据值的整数和小数部分,其中小数部分保留2 位;
(3)每项环境数据只传输数值,不传输单位,数值为十六进制。
环境数据的字节分配如表1 所示。
表1 环境数据编码格式
如温度数据用2 B 表示,第1 字节最高位为符号位,0 为正,1 为负,其 余位表示数值;第2 字节表示小数部分,-25.25 ℃对应的编码为0x99 0x19。
为实现基于北斗短报文的可靠传输,需要在有限的通信容量中拿出一部分用于传递非环境数据,即辅助标志位。标志位部分占用一定长度的字节,用来记录数据的检查控制信息,如表2 所示。
表2 环境数据发送端标志位编码格式
2.3.2 接收端协议
接收端主要对发送端进行确认,返回丢失的数据编号、发送端的成功率以及等待回复的最长时间。发送端编码如表3 所示。
表3 环境数据接收端标志位编码格式
其中丢失编号用不定长度字节表示,表明自上一次确认后丢失的北斗数据包的序号,由用户数据的时间戳来确认是否丢失,第一个字节表示丢失数据的个数,以后每个字节表示丢失数据的序号,最多记录60 个丢失序号。
在环境数据发送端,环境数据加上标志位共43 B,小于78 B,满足通信容量要求,并且为以后的扩展留有充足的容量。在环境数据接收端,确认数据包最长为72 B,小于78 B,也满足通信容量要求。
3 关键通信机制
为解决北斗短报文通信不可靠的问题,在满足通信容量限制的情况下提出一套扩展功能的应用协议。结合北斗短报文通信的特点,本文采用改进的丢失重传机制提高数据传输的可靠性,包括数据发送端基于概率判断的请求确认机制和数据接收端的动态累计确认机制。
3.1 基于概率判断的请求确认机制
在现实场景中,北斗短报文一体机进行通信时会受天气、障碍物、杂波等影响,使其通信成功率在60%~95%范围内较大波动[15]。本文提出基于概率判断的请求确认机制,依据通信成功率动态地调整请求的频率。
北斗短报文一体机会设置初始的成功率,在通信过程中持续进行成功率统计,并保持对成功率的更新。该功能在接收端实现,再同步到发送端。
设某北斗短报文一体机通信的成功率为p,根据发送端本地是否存储历史环境数据,分为2 种模式。一种是本地未存储数据模式,另一种是本地存储数据模式。
当本地没有存储数据,即所有数据都已发送出去,此时通信次数充足,只要有数据就能立即发送出去。数据采样的时间间隔为5 min,考虑到通信延迟以及设备处理需要的时间,则在5 min 内可以进行4 次通信,1 次用来发送最新产生的数据,3 次用来发送丢失的数据,则满足:
其中,p 为通信的成功率,n′为发送端请求确认的间隔。由于n′为整数,对式(1)中n′向上取整:
即本地没有存储数据的发送端每发送n′次数据,向接收端请求1 次确认。
当本地存储了若干数据时,发送端则会以最快的频率(1 min/次)连续地发送数据。此时需要尽快地知道数据丢失的情况,从而尽快重发,则满足:
其中,n″为发送端请求确认的间隔。同样,n″为整数,对式(3)中n″向上取整:
即本地存储数据的发送端每发送n″次数据,向接收端请求一次确认。
因此,根据发送端的成功率p,可以得出向接收端申请确认的间隔数。X 为本轮发送次数计数,当X<n 时,继续发送数据;当X=n,即在本次发送数据时申请确认,X 在发送申请确认后置零。
3.2 动态累积确认机制
在接收端,采用一个短报文一体机接收多个发送端的数据,并对每个发送端进行确认应答,因此每个发送端等待接收端确认的时间与发送端的总数量相关。本文提出接收端动态累积确认机制,根据数据发送端的数量动态调整应答频率,并将最大等待时间发送给每个发送端,避免发送端等待超时而重复发送。
若有m 个发送端向1 个接收端发送数据,每个发送端的单次通信成功概率为pi,根据每个发送端的发送频率可知其本地是否有存储数据,通过式(2)或者式(4)可以得出每个发送端的发送间隔n。则对于没有存储数据的发送端,其申请确认的频率为:
其中,f1为没有存储数据的发送端申请确认的频率。
对于有存储数据的发送端,其申请确认的频率为:
其中,f2为有存储数据的发送端申请确认的频率。
所有的请求都会累积到接收端,所以接收端的确认频率为:
其中,f 为接收端的确认频率,m1为没有存储数据的发送端数量,m2为有存储数据的发送端数量,且m1+m2=m。
最大等待确认的时间间隔为:
其中,Tmax表示最大等待确认的时间间隔,表示没有存储数据的第i 个发送端的请求确认间隔次数,表示有存储数据的第j 个发送端的请求确认间隔次数。
接收端在每次向发送端进行确认时,会将当前实时计算的最大等待时间也一起发送给发送端。当发送端接收到之后立即更新本地最大等待时间。
4 实验与结果分析
4.1 仿真实验
为验证本文提出的通信机制的有效性,在网络仿真平台OMNeT++(Objective Modular Network TestBed in C++)上进行仿真实验,通过实际重传率与理论重传率对比来评估改进机制的可行性。在北斗短报文通信中,北斗短报文一体机发送的数据需要北斗通信卫星转发,再被接收端接收。
本文仿真实验实验中定义了BDClient、BDServer 和BDSatellite 网元模块,分别表示发送端、接收端和北斗卫星,其中北斗通信的不可靠特性由BDSatellite 单元实现。client、server 和satellite 分别是3 个网元模块的实例,构成BDNet1 仿真网络,如图4、图5 所示。
图4 一对一通信仿真网络
图5 多对一通信仿真网络
通过实验重传率和理论重传率对比可以验证基于概率判断的请求确认机制。实际重传率为:
其中,R1为时间重传率,N1为实验中统计的发送端发送数据包数量,N2为接收端接收数据包数量。在传输大量数据包时实际要传输的数据量等于接收端接收数据包数量N2。
在未设定最大重传次数的情况下,理论重传次数为:
其中,N3为理论重传次数,C 为传输的数据包个数,q(0≤q≤1)为发送端理论单次通信成功率。
理论重传率为:
其中,R2表示理论重传率。
一对一通信仿真实验共进行了8 次,每次传输超过2 000 个的数据包,单次通信的成功率设置为60%~95%,每次递增5%。实验结果如表4 所示。
表4 仿真实验结果
一对多通信仿真实验中,发送端的数量逐渐增加,当出现某个发送端等待确认的时间大于10 min 时,不再增加发送端的数据,此时发送端的数量即为最大值。实验条件分两种极端情况进行,最好的情况是每个发送端的通信成功率为0.95,且本地未存储环境数据,此时接收端平均可以与73 个发送端完成数据传输;最坏的情况是每个发送端的通信成功率为0.60,且本地存储环境数据,此时接收端平均可以与12 个发送端完成数据传输。
4.2 结果分析
一对一通信网络仿真实验验证发送端基于概率判断的请求确认机制。在仿真实验开始前,设置发送端的通信的成功率。实验进行8 次,每次传输超过2 000 个数据包,单次通信的成功率设为60%~95%,每次递增5%。根据表4 中的实验结果,可得到如图6 实验重传率与理论重传率的对比图。
图6 实验重传率与理论重对比图
从图6 中可以得出,实际重传率的折线与理论重传率的折线趋势相同,重传率的平均差为0.95%。证明了本文提出的数据传输协议能保证北斗短报文通信的可靠性。
多对一通信网络仿真实验验证接收端动态累积确认机制。在最好情况下,接收端平均可以与73 个发送端进行数据通信;在最坏情况下,接收端平均可以与12 个发送端进行数据通信。当发送端的情况介于最好和最坏情况之间,接收端平均可以为12~73 个发送端提供数据通信服务。
4.3 实地试验
为了进一步验证本文提出的改进机制的有效性,将基于北斗短报文通信的环境数据监测设备在湖北省宜昌市长阳土家族自治县内2 个农业种植基地(都镇湾镇茶叶基地和渔峡口椪柑基地)进行部署和测试,如图7所示。
图7 湖北长阳种植基地环境数据监测站
由于地处偏僻山区,设备A 所处位置移动通信网络信号不稳定,设备B 所处位置没有移动通信网络信号。
在测试中,2 台设备持续运行,每台设备分别统计3个时间段内的数据发送和接收信息,进而计算出设备的单次通信成功率和数据传输成功率。数据如表5 所示。
在实地测试中,不同地点的单次通信成功率受环境影响而不同,同一地点的单次通信成功率不同时间段受环境影响也会不同。如表5 所示,设备A 在不同时段的测试下,其多次通信的平均成功率分别为90.98%、86.90%、91.99%;设备B 在不同时段的测试下,其多次通信的平均的成功率分别为88.96%、83.02%、81.49%。采用改进的通信机制后,其数据传输的成功率均能达到99%以上。
表5 实际测试结果
5 结论
随着北斗全球卫星导航系统建成,北斗卫星通信将为全球提供定位、导航和通信服务。北斗短报文通信将为偏远地区农业环境数据采集传输提供便捷的低成本通信服务。本文基于北斗短报文的可靠农业环境数据传输机制,针对北斗短报文的通信容量限制,对农业环境数据进行编码节省通信容量;针对北斗短报文的不可靠通信,提出基于概率判断的请求确认机制和动态累积确认机制,并通过仿真实验验证了系统机制的可行性。在湖北长阳县内进行实地试验,使发送端的传输成功率随环境动态变化情况下也能使数据传输的成功率提升至99%以上。本文提出的基于北斗短报文的农业环境数据采集机制为偏远地区的农业环境数据采集提供了经济、便捷、可靠的方案,具有一定的应用和推广的价值。