README
LoRaWAN-Specification_ZH_CN项目介绍这是《LoRaWAN-Specification》的中文译本。 《LoRaWAN-Specification》是 LoRa 联盟规范的核心协议,由于国内LoRa从业者数量众多,难免有不少伙伴需要中文译本,所以诞生了这个小项目。 项目采用 gitbook 进行编写,地址在 https://www.gitbook.com/book/twowinter/lorawan-specification_zh_cn。 由于这是民间自发的翻译,一些地方翻译可能不够恰当。如果觉得协议的某处比较晦涩,请不要怀疑自己,大概率是翻译的问题。 非常欢迎朋友们反馈翻译问题,争取给行业伙伴们提供一份相对可靠的译本。 项目进展LoRaWAN_V1.0.2 的中文版本经过1年半时间断断续续的调整,现已优先发布。 其他版本待整理后,新建分支来跟进。大家可持续关注github 仓库地址。 贡献者介绍 IoT小能手 twowinter 厦门四信的小伙伴 厦门四信的几个小伙伴在业余时间对协议的部分内容做了校对,尤其是 kevin 同学贡献了 CLASS...
1 Introduction
第1章 介绍本文档描述了LoRaWAN网络协议,是针对电池供电的终端设备(不管移动还是固定位置)进行优化的一套网络协议。 LoRaWAN网络通常采用星型拓扑结构,由拓扑中的网关来转发终端与后台网络服务器间的消息。网关通过标准IP连接来接入网络服务器,而终端则通过单跳的 LoRa 或者 FSK 来和一个或多个网关通讯。虽然主要传输方式是终端上行传输给网络服务器,但所有的传输通常都是双向的。 终端和网关间的通讯被分散到不同的信道频点和数据速率上。数据速率的选择需要权衡通信距离和消息时长两个因素,使用不同数据速率的设备互不影响。LoRa的数据速率范围可以从 0.3kbps 到 50kbps。为了最大程度地延长终端的电池寿命和扩大网络容量,LoRa网络使用速率自适应(ADR)机制来独立管理每个终端的速率和RF输出。 每个设备可以在任意可用的信道,任意时间,使用任意数据速率发送数据,只要遵守如下规定: 终端的每次传输都使用伪随机方式来改变信道。频率的多变使得系统具有更强的抗干扰能力。 终端要遵守相应频段和本地区的无线电规定中的最大发射占空比要求。 终端要遵守相应频段和本地区的无线电规定中...
10 Uplink frame in Class B mode
第10章 Class B 模式的上行帧Class B 模式的上行帧和 Class A 的基本一样,除了帧头Fctrl字段的RFU位域有所不同。在 Class A 上行帧中这个位没有使用(RFU),而在 Class B 中有使用。 Bit# 7 6 5 4 [3..0] FCtrl bits ADR ADRACKReq ACK Class B FOptsLen 上行帧中的 Class B 位域置为1,用于通知network server设备已切换到 Class B 模式,准备好接收下行ping包。 下行帧的FPending位域的定义是不变的,仍然和Class A的定义一样,表示server有多个下行帧要下发,设备应当继续接收。
12 Beacon acquisition and tracking
第12章 信标的获得和追踪在从 Class A 切换到 Class B 之前,终端必须首先接收一个网络的信标来将它自身的时间基准与网络时间进行校准。 一旦处于 Class B 模式,终端必须定期地去搜索并且接收一个网络信标,以消除自身内部基准时间相对于网络时间的任何漂移。 Class B 模式的设备也许会短暂性地无法接收信标(超出与网关的通信范围,存在干扰,…)在这种情况之下,终端必须考虑它内部时钟可能产生的漂移,逐步地加大信标和ping时隙的接收窗口时间。 例如,一个设备精度为 10ppm 的内部时钟每个信标周期(128s)就会有+/-1.3ms的漂移。 12.1 最小 beacon-less 操作时间在信标丢失的情况之下,一个终端需要在接收到最后一个信标节点时间开始算起保持2小时的 Class B 操作。这种短暂的没有信标的 Class B 操作就称之为 “beacon-less” 操作。这种情况之下就需要依赖终端自己的时钟来保持时间。 在 “beacon-less” 的情况下,单播、多播还有信标接收时隙都必须逐步地扩大接收窗口时间以容纳终端可能的时钟漂移。 ...
13 Class B Downlink slot timing
第13章 Class B下行时隙时序13.1 定义为了使 Class B模式能够正常运行,终端必须以信标规定的精准时刻打开接收时隙窗口。这章节定义了所需的时序操作。 两个连续的信标起始点之间的间隔称为信标周期。信标帧的传输以 BEACON_RESERVED 时间间隔的起始端对齐。每个信标都有一个保护时间间隔,在该时间间隔之内是没有 ping 时隙的。保护间隔的长度对应于允许帧在空中的最长时间。这样就能保证在保护时间之前的一个 ping 时隙内发起的下行数据帧总是有时间去完成传输而不与信标的传输发生冲突。因此用于ping时隙的时间间隔是从 BEACON_RESERVED 时间间隔的末尾节点到下一 BEACON_GUARD 时间间隔的起始节点。 图 12 :信标时序 Beacon_period 128 s Beacon_reserved 2.120 s Beacon_guard 3.000 s Beacon-window 122.8...
14 Class B MAC commands
第14章 Class B Mac命令所有在 Class A 协议中描述的命令都应该在 Class B 中实现。Class B 协议还额外添加了如下的 MAC 命令。 CID Command 由谁传输 描述 终端 网关 0x10 PingSlotInfoReq x 终端设备用于将 ping 单播时隙数据速率和周期性传送给网络服务器 0x10 PingSlotInfoAns x 用于网络应答PingInfoSlotReq命令 0x11 PingSlotChannelReq x 用于网络服务器设置一个终端的单播 ping 通道 0x11 PingSlotFreqAns x 终端用于应...
16 Class B unicast & multicast downlink channel frequencies
第16章 Class B单播/多播下行信道频率16.1 欧盟 863-870MHz ISM 频段所有的 Class B 的下行单播和多播都使用由 “PingSLotChannelReq” MAC 命令所定义的单频信道。默认的频率是 869.525MHz。 16.2 美国 902-928MHz ISM 频段默认的,Class B的下行使用最后一个信标(鉴信标帧格式内容)的 Time 字段的信道函数和 DevAddr。 Class B downlink channel = [DevAddr + floor(Beacon_Time/Beacon_period)] modulo 8 其中 Beacon_Time 是当前信标周期的 32 位 Time 字段。 Beacon_period 是信标周期的长度(协议中定义的是128s) Floor 指的是四舍五入到临近的较低整数值。 DevAddr 是终端的32位网络地址。 因此 Class B 的下行在 ISM 频段的 8 个信道进行跳跃并且所有的 Class B 终端平等地使用 8 个下行信道...
11 Downlink Ping frame format
第11章 Class B 模式的下行帧(Class B选项)11.1 物理层帧格式下行 Ping 帧使用和 Class A 下行帧相同的格式,但可能会采用不同的信道频率规划。 11.2 单播和多播 MAC消息信息的传播方式可以是“单播”或者“多播”。单播是指将信息传递给一个指定的终端,多播是指将信息传递给多个终端。多播组内的所有终端都必须共享一个相同的多播地址和相关的加密密钥。LoRaWAN Class B 协议中并没有明确规定如何去建立这样的多播组,以及如何安全地分配多播密钥。这必须通过 节点个性化设置 或者 应用层 来实现。 11.2.1 单播 MAC 消息格式单播下行 Ping 帧的 MAC 载荷格式和 Class A 的定义一样。终端的处理也采用相同的方式。同时也采用相同的帧计数,在收到 Class B ping 时隙或者 Class A 应答时隙时都进行递增处理。 11.2.2 多播 MAC 消息格式多播帧和单播帧大部分都一样,仅有一些区别: 不允许携带 MAC 命令,既不能在 FOpt 字段里,也不能 port 0 时的载荷里携带,因为多播下行不像单播帧那样具备认证...
3 Physical Message Formats
第3章 PHY 帧格式LoRa 有上行消息和下行消息。 3.1 上行消息上行消息是由终端发出,经过一个或多个网关转发给网络服务器。 上行消息使用 LoRa 射频帧的严格模式,消息中含有 PHDR 和 PHDR_CRC 。载荷有CRC校验来保证完整性。 PHDR,PHDR_CRC 及载荷 CRC 域都通过射频收发器加入。 上行 PHY: Preamble PHDR PHDR_CRC PHYPayload CRC 图2.上行PHY帧格式 3.2 下行消息下行消息是由网络服务器发出,经过单个网关转发给单个终端。 下行消息使用射频帧的严格模式,消息中包含 PHDR 和 PHDR_CRC。 下行 PHY: Preamble PHDR PHDR_CRC PHYPayload 图3.下行PHY帧格式 3.3 接收窗口每个上行传输后终端都要开两个短的接收窗口。接收窗口开始时间的规定,是以传输结束时间为参考。 图4.终端接收时隙的时序图 ...
4 MAC Message Formats
第4章 MAC帧格式LoRa所有上下行链路消息都会携带PHY载荷,PHY载荷以1字节MAC头(MHDR)开始,紧接着MAC载荷(MACPayload),最后是4字节的MAC校验码(MIC)。 射频PHY层: Preamble PHDR PHDR_CRC PHYPayload CRC 图5.射频PHY结构(注意 CRC只有上行链路消息中存在) PHY载荷: MHDR MACPayload MIC 或者 MHDR Join-Request MIC 或者 MHDR Join-Response MIC 图6.PHY载荷结构 MAC载荷: FHDR FPort FRMPayload 图7.MAC载荷结构 FHDR: DevAddr FCtrl ...