基于LoRa的组网设计方案.doc

上传人:牧羊曲112 文档编号:3843765 上传时间:2023-03-24 格式:DOC 页数:27 大小:1.14MB
返回 下载 相关 举报
基于LoRa的组网设计方案.doc_第1页
第1页 / 共27页
基于LoRa的组网设计方案.doc_第2页
第2页 / 共27页
基于LoRa的组网设计方案.doc_第3页
第3页 / 共27页
基于LoRa的组网设计方案.doc_第4页
第4页 / 共27页
基于LoRa的组网设计方案.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基于LoRa的组网设计方案.doc》由会员分享,可在线阅读,更多相关《基于LoRa的组网设计方案.doc(27页珍藏版)》请在三一办公上搜索。

1、 基于LoRa的组网设计方案目 录1 概述12 功能性能指标12.1 功能指标12.2 性能指标23 技术路线选择34 系统设计44.1 系统组成44.2 系统工作模式5 4.2.1 主机轮询的组网方式64.2.2 分时间片的组网方式65 通信设计75.1 MODBUS通信协议75.2 MODBUS通信示意图86 软件设计86.1 软件流程图86.2 软件时序图97 结构设计107.1 接口设计107.2 外形设计118 实验方案129 项目进度和质量保证139.1 项目研制进度计划139.2 质量控制与文件交付进度计划1410 主机与监测系统通信协议1410.1 概述1410.2 协议标准设

2、置1410.3 字节格式1510.4 帧格式1510.5 浮点数存贮和传输格式1610.6 功能码1610.7 读写保持寄存器1610.8 举例1710.9 异常响应1910.10 CRC16校验方式191 概述基于LoRa的组网通信系统采用LoRa通信协议进行组网通信,系统由计算机终端、通信基站、集成通信模块的用户设备、具备通信功能的用户设备等组成,实现整套系统的互相通信。2 功能性能指标2.1 功能指标n LoRa组网通信功能:通过通信基站向全部设备广播信息;通过通信基站向某一特定设备发送参数或控制命令;通信基站同时接收16个设备的上传数据。n LoRa通信加密功能:无线通信具备加密功能,

3、提供加密算法。n 设备命名功能:为每一个接入网络的设备定义设备编号,名字可长期不变,也可经授权改变,可唯一识别不同的设备,满足后续数据处理。n 485通信功能:按照485标准以及MODBUS数据格式,通信模块可完成与用户模块电路之间的数据通信。n 调试界面软件功能:实时显示各设备数据,包括设备工作状态、设备传感器数据;设置设备参数与状态,包括设备命名与修改、下达复位命令、设置报警值、设置数据上传时间间隔、启停数据采集等;存储数据,按照不同任务、不同设备进行关联存储;数据可查询;数据可打印。n API接口通信功能:按照MODBUS数据格式和LoRa通信协议,建立界面软件(包括调试界面软件)和通信

4、基站之间通信通道,界面软件可实现相应功能。n 故障显示与定位功能:当通信基站和通信模块发生故障时,界面可显示故障,并显示具体哪一个通信模块或通信基站发生故障。2.2 性能指标n 无线通信体制:LoRa通信,一个基站对多个通信设备的组网通信。n 无线通信距离:无遮挡传输距离5000m,有金属遮挡传输距离2000m。n 无线通信速率:通信基站向用户设备下传数据1kbps;用户设备向通信基站上传数据5kbps;通信基站数据吞吐速率10kbps,可同时接收16路的设备上传数据;有遮挡时,上传和下传数据率的衰减量50%。n 通信模块供电:采用+12V电源供电。n 通信基站功耗:通过DC12V电源适配器进

5、行设备供电。n 数据加密:无线通信上传和下传数据进行加密,16路同时上传时,数据吞吐速率不超过通信基站额定能力的70%。提供数据加解密算法。n 485通信速率:通信模块向用户模块电路的下传数据速率1kbps;用户模块电路向通信模块的上传数据速率5kbps;数据格式采用MODBUS通讯协议。n 一次工作时间:一次开机,可可靠连续工作12h。n 工作温度:-3555。n 存储温度:-4070。n 湿度:40工作温度下,90%湿度,通信基站、通信模块能正常工作,且不凝露。n 元器件和原材料的性能参数满足环境温度(工作温度、存储温度)要求。3 技术路线选择LoRa是LPWAN(低功耗广域物联网)通信技

6、术中的一种,LoRa作为目前最有发展前景的低功耗广域通信技术,已经被运用在个各行各业中。是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。LoRa 无线通信采用直序扩频技术, 具有通信距离远、 功率密度集中,抗干扰能力强的优势。同时具有软件 FEC 前向纠错算法,其编码效率较高,纠错能力强,在突发干扰的情况下,能主动纠正被干扰的数据包,大大提高可靠性和传输距离。目前,LoRa主要在全球免费频段运行,包括433、868、915 MHz等。LoRa是物联网应用中的无线技术有多种,可组成局域网或广域网。ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MH

7、z(欧洲流行)和915 MHz(美国流行)3个频段上,是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。基于此,我们选择传输距离远、功耗低(长电池寿命)的LoRa模块。4 系统设计基于LoRa的组网通信系统由计算机终端、通信基站、集成通信模块的用户设备、具备通信功能的用户设备等组成,系统采用LoRa通信协议进行组网通信,实现命令或参数的下达,以及数据的采集与上传等功能。图4.1 基于LoRa的组网通信系统组成示意图4.1 系统组成系统由计算机终端、通信基站、集成通信模块的用户设备(设备1设备10)、具备通信功能的用户设备(设备11设备16)等组成。表1 设备清单序号名称数量说明

8、1通信基站1台提供技术手册。2通信模块10块提供技术手册。3基站天线1套SMA接口;提供技术手册。4设备天线10套防水、防尘;SMA接口;提供技术手册。5通信模块电缆10套每套含:一根300mm的SMA电缆;一根300mm的485通信电缆(含接插件,提供定义,3个信号线);一根300mm的供电电缆(SMA接口);一根485转USB电缆。6API接口软件1套提供使用说明书。7LoRa通信协议与MODBUS数据格式1套采用该通信协议和数据格式,可满足其他设备实现LoRa通信功能设计。8调试界面软件1套供系统集成调试用,提供说明书。4.2 系统工作模式因射频的特性决定了无线串口收发模块可以一发多收,

9、不能同时多发一收,造成了射频组网的最大的障碍,因此,为了解决这个问题就只能够利用时间来实现组网,下面是无线LoRa收发模块实现多发一收的解决方案。4.2.1 主机轮询的组网方式主机轮询方式组网是主机逐个查询的方式,该组网方式能够准确上传,并且相互设备之间不容易出现冲突,组网也比较稳定,但是缺点是主机轮询耗时间长。这种组网方式适合那些对时间要求不高的组网应用。主机轮询的组网方式原理很简单,通过点名的方式实现应答。如主机发送给1号从机,由于从机都有地址设别,因此只有从机1能够响应主机。从机1收到主机的命令后,将数据上传给主机。主机再以相同点的轮询方式轮询其它从机数据。图4.2 主机轮询组网图4.2

10、.2 分时间片的组网方式分时间片的组网方式对于组网数据收集来说是比简单的轮询方式快了很多,但是对从机的时间同步以及发送延迟要求高。图4.3 分时间片组网图如图,这种组网方式是先由主机发起广播时间,从机收到后,同步自己的本地时间,同步完成后,根据自己的编号进行延时上传,从而实现多发一收的功能。这种组网方式收发数据时间节省很多,并且能够防止冲突,但是对软件延时等调整要求较高。为保证数据传输的实时性,选择第二种方式分时间片的组网方式,实现整个系统的无线通信。5 通信设计5.1 MODBUS通信协议MODBUS网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而

11、成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。它已经成为一种通用工业标准。MODBUS网络只有一个主机,所有通信都由它发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。MODBUS协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。MODBUS网络以RTU模式进行通信,在消息中的每个8Bit字节按照原值传送,不做处理。这种方式的主要优点是:数据帧传送之间没有间隔,相同波特率下传

12、输数据的密度要比ASCII高,传输速度更快。5.2 MODBUS通信示意图本系统由无线LoRa和有线485进行组网通信。均采用MODBUS通信协议RTU通信方式。可进行点对点通信和点(基站)对多(模块)通信。图5.1 基于LoRa的通信示意图6 软件设计6.1 软件流程图监测主机界面软件主要对整个系统的运行状况进行监控。出现异常情况时,给出报警提示;同时可进入设置界面进行参数设置,对历史数据存储和打印。图6.1 监测主机软件流程图6.2 软件时序图监测主机界面软件可通过无线LoRa或者有线485进行通信。监测主机作为主机,可对任一设备进行点对点通信,也可通过广播命令控制所有从机,当主机获取所有

13、从机数据时,从机根据设备编号延时间隔固定时间依次回应数据。图6.2 监测主机软件时序图7 结构设计通信基站和通信模块采用如图所示外形结构和安装尺寸,包括各接口定义。7.1 接口设计图7.1 电气接口示意图图7.2 状态指示图表2 电气接口定义表脚号名称功能说明1DB-9母型插座RS-232接口标准RS-232接口23.81接线端子RS-485、电源接口标准RS-232接口与压线式电源接口3PWR-LED电源指示灯红色,电源接通时点亮4TXD-LED发送指示灯黄色,发送数据时闪烁5RXD-LED接收指示灯黄色,接收数据时闪烁6DC电源接口电源接口直插式圆孔5.5*2.5mm7拨码开关拨码开关工作

14、模式控制8天线接口SMA-K接口外螺纹内孔,长10mm,特征阻抗50*注:DC电源接口和3.81接线端子供电均为12V,根据现场接线情况二选一即可。7.2 外形设计图7.3 结构外形尺寸图8 实验方案序号试验项目名称试验样品数量试验结果试验单位1外观、重量、尺寸全检检验报告陕西卫峰2无线通信距离抽检测试报告陕西卫峰3无线通信速率抽检测试报告陕西卫峰4通信模块供电与功耗抽检测试报告陕西卫峰5通信基站功耗抽检测试报告陕西卫峰6一次工作时间抽检检验报告陕西卫峰772h稳定性试验全检检验报告陕西卫峰8工作高温试验抽检检验报告陕西卫峰9工作低温试验抽检检验报告陕西卫峰10工作湿度试验抽检检验报告陕西卫峰

15、11贮存高温试验型式试验检验报告陕西卫峰12贮存低温试验型式试验检验报告陕西卫峰9 项目进度和质量保证9.1 项目研制进度计划序号名称时间备注1签订合同合同签订之日起算T02质量计划1周T0+13研制方案1周T0+14研制方案评审1周T0+25工程样机4周T0+66工程样机试验2周T0+87设备制造6周T0+148试验大纲3周T0+149型式试验2周T0+1610出厂验收2周T0+189.2 质量控制与文件交付进度计划文件清单如下:序号文件名称文件类型提交进度1技术文件、图纸1.1研制方案I合同签订后2周内1.2设备外形图、安装图、外部接线图I合同签订后2周内1.3通讯协议说明(LoRa)I合

16、同签订后2周内1.4安装说明书I合同签订后10周内2质保文件2.1产品出厂合格证明书I设备交运前10 主机与监测系统通信协议10.1 概述本协议规定了主机与监测系统的通信协议,所有相关硬件设备都应遵从协议规范。10.2 协议标准设置采用RS-485标准接口。 标准协议:Modbus RTU协议。 波特率: 9600 bps。 设备地址:1-247(出厂默认值为00H )。 通讯方式:监测主机主机主动发送命令,便携主机被动应答。10.3 字节格式编码系统: 8 位二进制,十六进制 09,AF。数据位: 1 起始位, 8位数据(低位先送),无奇偶校验,停止位1 位。错误校验区:循环冗余校验(CRC

17、16)RTU 错误校验码为 2 字节 16 位 CRC 码。10.4 帧格式Modbus信息以帧的方式传输,每帧有确定的起始点和结束点,使接收设备在信息的起点开始读地址,并确定要寻址的设备(广播时对全部设备),以及信息传输的结束时间。RTU 模式中,信息开始至少需要 3.5 个字节的静止时间,发送完最后一个字节后,也有一个 3.5 个字符的静止时间。整个信息必须连续发送。如果在发送帧信息期间,出现大于 1.5个字符的静止时间时,则接收设备刷新不完整的信息,并假设下一个地址数据。开始地址功能数据校验终止T1-T2-T3-T48bits8bitsN*8bits16bitsT1-T2-T3-T410

18、.5 浮点数存贮和传输格式浮点数采用IEEE标准的单精度浮点数格式,如图所示,每个数由4字节组成,数据传输时,从第一字节到第四字节的顺序传送。10.6 功能码功能代码功能名称03(0x03)读寄存器06(0x06)写单个寄存器16(0x10)写多个寄存器10.7 读写保持寄存器地址高字节低字节数据类型备注00H实时数据float只读01H02H报警状态TF卡状态uchar只读03H电池电量uchar只读04H年月uchar读写05H日时uchar06H分秒uchar07H报警阈值float读写08H09H报警时间uchar读写0AH密钥设备编号uchar只限485接口0BH系统复位uchar只

19、写02H、报警状态:0 = 正常, 1 = 报警。TF卡状态:0 = 正常, 1 = 异常。 03H、电量:0-100. 09H、报警时间:0 = 0.5s, 1 = 1s,2 = 2s. 0AH、设备编号:1 - 247. 0BH、系统复位:写入0x00AA可复位。10.8 举例1、读取设备数据与状态:01 03 00 00 00 07 xx xx(地址01)地址功能码寄存器起始地址寄存器数量CRC010300 0000 07xx xx从应答:01 03 07 00 00 00 50 12 07 01 09 0C 22 xx xx地址功能码字节数实时数据(4字节)报警、TF卡01030E3D

20、 4C CC CD00 00电池电量时间CRC00 5012 07 01 09 0C 22xx xx实时数据0.05 Bq/cm2,未报警,TF卡正常,80%,18年7月1日9时12分34秒。2、读取报警时间:01 03 00 09 00 01 xx xx(地址01)地址功能码寄存器起始地址寄存器数量CRC010300 0900 01xx xx从应答:01 03 02 00 01 xx xx地址功能码字节数数据CRC01030200 01xx xx报警时间为1s.3、 写系统时间:01 10 00 04 00 03 12 07 01 09 0C 22 xx xx地址功能码起始地址寄存器数量数据

21、CRC011000 0400 0312 07 01 09 0C 22xx xx从应答:01 03 02 00 01 xx xx地址功能码起始地址寄存器数量CRC011000 0400 03xx xx4、 系统复位:01 06 00 0B 00 AA xx xx地址功能码寄存器起始地址数据CRC010600 0B00 AAxx xx从应答:01 06 00 0B 00 AA xx xx(成功原样返回)地址功能码寄存器起始地址数据CRC010600 0B00 AAxx xx10.9 异常响应出现异常指令时,设置功能码的MSB为1。这使得异常响应中的功能码值比正常响应中的功能码值高0x80,返回异常

22、指令。地址功能码异常码CRC0180|xxxxxx xx异常码内容01非法功能码02非法数据地址03非法数据10.10 CRC16校验方式static const uint8 auchCRCHi = 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0x

23、C0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x

24、40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0x

25、C1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x

26、40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0x

27、C1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 ; static const uint8 auchCRCLo = 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF,

28、0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,

29、0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2,

30、0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF,

31、0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59,

32、0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 ; /* Function: calculate_crc* Description: 计算校验和* Input Para: * Output Para: * Return Value: */ui

33、nt16 calculate_crc(uint8 *puchMsg, uint8 usDataLen ) uint8 uchCRCHi = 0xFF ; uint8 uchCRCLo = 0xFF ; uint8 uIndex ;uint16 CrC16; while (usDataLen-) uIndex = uchCRCHi (*(puchMsg+); uchCRCHi = uchCRCLo auchCRCHiuIndex ; uchCRCLo = auchCRCLouIndex ; CrC16 = uchCRCLo;CrC16 = 8;CrC16 += uchCRCHi; return CrC16 ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号