LoraWan MAC命令

目录

1. 概述

2. LinkCheckReq,LinkCheckAns

3.LinkADRReq,LinkADRAns

4. DutyCycleReq,DutyCycleAns

5.RXParamSetupReq,RXParamSetupAns

6.DevStatusReq, DevStatusAns

7. NewChannelReq, NewChannelAns, DlChannelReq, DlChannelAns

8.RXTimingSetupReq, RXTimingSetupAns

9.TXParamSetupReq, TXParamSetupAns

10.DeviceTimeReq, DeviceTimeAns


1. 概述

MAC指令会在NS和终端MAC层之间传递,AS对此不可见,终端应用层对MAC命令也不可见

MAC命令可以搭载在数据帧的FOpts字段中(可以和数据payload一起传输),此时MAC命令不加密,并且不超过15字节。

或者当作为单独的数据帧发送(FPort字段设置为0的FRMPayload字段中)。此时MAC命令会加密,并且不得超过FRMPayload最大长度

MAC命令由命令ID(CID)开始,后面跟特定CID相关的数据(下图中标“X”的为使用)

2. LinkCheckReq,LinkCheckAns

终端和服务器都应该实现该功能,终端使用该命令来检查自己和服务器之间的连接是否正常,该命令没有payload部分

当服务器收到LinkCheckReq后,NS应该使用LinkCheckAns进行回复

margin是在0..254范围内的8位无符号整数,表示LinkCheckReq命令的解调余量(以dB为单位)。

0意味着帧是在解调底噪处接收的,而20意味着数据帧到达解调底噪之上20dB。255保留

解调余量(demodulation margin)指的是在数字通信系统中,在接收端进行解调时,信号幅度偏离理论值所允许的范围。当信号幅度偏离理论值超出该范围时,可能会导致解调错误或误码率的增加。因此,解调余量是衡量信号质量和系统容错能力的重要指标之一。

解调底噪(demodulation floor)是指在数字通信系统中,在接收端进行解调时,由于各种噪声的存在引起的最小可靠解调信号电平。它反映了解调器在接收低信噪比环境下的性能表现。较高的解调底噪意味着在低信噪比条件下可能会出现更多的误码率或解调错误。因此,解调底噪是衡量接收机灵敏度和抗干扰能力的重要指标之一。

GwCnt表示有几个网关收到了LinkCheckReq

3.LinkADRReq,LinkADRAns

终端和服务器都应该实现LinkADRReq,NS使用该命令来请求终端执行速率自适应

DataRate和TXPower与地区参数有关,TXPower表示终端可以使用的最大发射功率。

如果设备收到的TXPower大于其最大发射功率范围(比如最大N DB),它也会回复一个成功,但是只会工作在其最大发射功率(N DB)。

如果设备收到的TXPower大小其最小发射功率范围(比如最大M DB),它不会进行回复,这个时候,它只会工作在它之前的发送功率上,而忽略本次配置。

如果DataRate或者TXPower是0xF,表示终端应该忽略那个字段,并保持当前配置

终端应该有一个功率范围,一般2dBm -14dB。建议终端最小TX功率在2dBm以上。

在射频条件较好的情况下,服务器应该逐步降低终端的发射功率,或者提高终端的数据速率,以免大的配置改动引起设备离线

通道掩码(ChMask)应按照以下方式对可用于上行的信道进行编码,其中比特0对应最低有效位:

如果ChMask中的某个比特位设置为1,表示可以使用相应的信道进行上行传输,前提是该信道允许终端使用当前的数据速率。如果某个比特位被设置为0,则说明相应的信道不应被使用。

在Redundancy中,NbTrans字段表示每个上行帧的传输次数。这适用于确认和非确认的上行帧。默认值为1,表示每个帧只进行一次传输。有效范围为[1:15]。如果收到NbTrans值为0,则终端设备应使用默认值。NS可以使用该字段来控制上行传输(重传)的冗余性以获得特定的服务质量。终端设备会像往常一样对重传进行频率跳频,并在每次重传后等待RX2超时。当在RX1或RX2期间接收到下行帧时,终端设备将停止对相同的上行帧进行进一步重传。

通道掩码控制(ChMaskCntl)字段控制先前定义的ChMask位掩码的解释方式。它控制应用ChMask的16个通道块。它还可以用于使用特定的调制方式全局地打开或关闭所有通道。ChMaskCntl的含义是区域特定的,并在“LoRaWAN区域参数”[RP002]文档中定义。

网络服务器可以在单个下行帧中包含多个LinkADRReq命令。为了配置终端设备的通道掩码,终端设备将按照下行帧中存在的顺序处理所有连续的LinkADRReq命令作为一个原子块命令。终端设备将接受或拒绝连续块中的所有通道掩码控制,并在每个LinkADRAns命令中提供一致的通道掩码ACK状态指示,反映对此原子通道掩码设置的接受或拒绝。终端设备仅从连续块中的最后一个LinkADRReq命令中处理DataRate、TXPower和NbTrans。

通道频率是区域特定的,并在[RP002]中定义。终端设备应该使用LinkADRAns命令回答LinkADRReq请求

Status的各个字段取值含义

Bit=0

Bit=1

ChannelMaskACK

通道掩码启用了一个未定义的通道,或者通道掩码要求禁用所有通道,或者通道掩码与所得到的数据速率或发射功率不兼容。该命令被丢弃,终端设备状态未改变。

发送的通道掩码成功解析。根据该掩码,所有当前定义的通道状态已设置。

DataRateACK

所请求的数据速率对终端设备来说是未知的,或者根据提供的通道掩码(在任何启用的通道中都不支持)是不可能的。该命令被丢弃,终端设备状态未改变。

数据速率已设置

PowerACK

终端设备无法在该功率运行。该命令被丢弃,终端设备状态未改变。

发射功率已设置

如果这三个位中的任何一个等于0,则命令未成功执行,终端设备应保持其先前的状态。

4. DutyCycleReq,DutyCycleAns

终端和服务器都应该实现DutyCycleReq,可以由服务器使用,用于限制终端设备的最大聚合传输占空比。聚合传输占空比是指所有子频段上的传输占空比。

允许的最大终端设备传输占空比为 Aggregated duty cycle = 1/2MaxDutyCycle

MaxDutyCycle的有效范围为[0:15]。值为0表示100%的传输占空比,因此“没有传输占空比限制”,除非由区域规定的限制。

注意:当应用DutyCycleReq命令时,终端设备将使用特定子频段的区域限制和DutyCycleReq定义的限制中较低的值,这些值在所有子频段上进行聚合。

当MaxDutyCycle不等于0时,终端设备在任何通道上发送帧之前应遵守一个静默期Toff。该静默期确保即使在短观测窗口内也能满足传输占空比限制。它的计算方式为:

𝑇𝑜𝑓𝑓=𝑇𝑖𝑚𝑒𝑂𝑛𝐴𝑖𝑟∗((2^𝑀𝑎𝑥𝐷𝑢𝑡𝑦𝐶𝑦𝑐𝑙𝑒)−1)

注意:DutyCycleReq命令由网络服务器用于流量调整,以限制来自特定终端设备的传输。它是根据上述公式计算的,该公式可能与规定中定义的传输占空比测量方法不同,规则中可能有这样的限制。

终端设备应该使用DutyCycleAns命令回答DutyCycleReq请求。DutyCycleAns MAC响应不包含有效载荷。

5.RXParamSetupReq,RXParamSetupAns

终端和服务器都应该实现DutyCycleReq。

RXParamSetupReq命令允许更改在每个上行之后为RX2设置的频率和数据速率。该命令还允许在上行和RX1时隙之间设置偏移量。

RX1DROffset设置上行数据速率与RX1下行数据速率之间的偏移量。

默认偏移量为0。该偏移量考虑了某些地区网关的最大功率密度限制,并平衡了上行和下行的无线链路余量。

RX2DataRate定义了在使用第二接收窗口进行下行通信时的数据速率,与LinkADRReq命令采用相同的约定。例如,0表示DR0/125 kHz。

频率(Frequency)字段对应于第二接收窗口的信道的频率,其中频率的编码遵循NewChannelReq命令中的约定。

RXParamSetupAns命令由终端设备用于确认接收到RXParamSetupReq命令。RXParamSetupAns命令应添加在FOpts(如果FPort丢失或FPort>0)或FRMPayload字段(如果FPort=0)的所有上行消息中,直到终端设备接收到一个Class A下行消息。这样可以确保即使在上行消息丢失的情况下,网络始终知道终端设备使用的下行参数。

在发送修改RX2(频率或RX2DataRate字段)的RXParamSetupReq命令后,网络服务器在接收到包含有效的RXParamSetupAns的上行帧之前,不得发送Class C下行消息。

注意:期望接收Class C下行消息的终端设备,在接收到修改RX2(频率或RX2DataRate字段)的有效RXParamSetupReq之后,会尽快发送上行消息。

如果三个中的任何一个等于0,则命令不成功,终端应保持先前的状态。

6.DevStatusReq, DevStatusAns

终端和服务器都应该实现这两个指令

网络服务器可以使用DevStatusReq命令向终端设备请求状态信息。该命令没有载荷。如果终端设备接收到DevStatusReq命令,则应响应一个DevStatusAns命令。

RadioStatus字段包含了最近成功接收的 DevStatusReq命令中,以dB为单位编码的信噪比(SNR)信息,取六个最低位并四舍五入为最接近的整数值。它是一个带符号的整数,最小值为-32,最大值为31。

7. NewChannelReq, NewChannelAns, DlChannelReq, DlChannelAns

除非终端设备在定义了固定信道计划的地区操作,在这种情况下,不需要实现这些命令,否则终端设备和网络服务器应该实现这些命令。

请参考“LoRaWAN Regional Parameters” [RP002]以获取适用地区的相关信息。

网络服务器可以使用NewChannelReq命令来创建一个新的双向信道,或者修改现有信道的参数。该命令设置新信道的中心频率,并确定在该信道上可用的上行数据速率范围

信道索引(ChIndex)是正在创建或修改的信道的索引。根据地区和频段,“LoRaWAN Regional Parameters” [RP002]文档规定了默认信道,这些默认信道将对所有终端设备都通用,并且不得通过NewChannelReq命令进行修改。如果默认信道的数量为N,则默认信道从0到N-1,而ChIndex的可接受范围为N到15。一个终端设备应能够处理至少16个不同的信道定义。在某些地区,终端设备必须存储多于16个信道定义。

频率字段是一个24位的无符号整数。实际的信道频率(以Hz为单位)是100 × Frequency,其中表示低于100 MHz的频率值保留供将来使用。这使得信道的频率可以在100 MHz到1.67 GHz之间以100 Hz的增量进行设置。如果Frequency的值为0,则禁用该信道。终端设备应检查频率是否被其硬件允许,并且如果终端设备无法使用该频率,则不应设置答复中Status字段的信道频率位。

数据速率范围(DRRange)字段指定了该信道允许的上行数据速率范围。该字段分为两个4位索引:

最小数据速率(MinDR)子字段指定了该信道允许的最低上行数据速率。最大数据速率(MaxDR)指定了最高上行数据速率。数据速率索引到物理层的映射在[RP002]中为每个地区定义。

新定义或修改的信道已启用,可以立即用于通信。RX1的下行链路频率设置为与上行频率相等。

终端设备应通过返回NewChannelAns命令来确认接收到NewChannelReq。该帧的有效载荷包含以下信息:

如果其中任何一个比特等于0,则命令未成功,终端设备应保持其先前的状态。

DlChannelReq命令允许网络将不同的下行频率与RX1时隙关联起来。该命令适用于支持NewChannelReq命令的所有地区(例如,EU863-870和CN779-787,但不包括US902-928或AU915-928)。在未定义该命令的地区,终端设备应静默丢弃该命令。

该命令设置下行RX1时隙的中心频率:

信道索引(ChIndex)是修改下行频率的信道的索引。

频率(Frequency)字段是一个24位的无符号整数。实际的下行频率(以Hz为单位)是100 × Frequency,其中表示低于100 MHz的频率值保留供将来使用。终端设备应检查频率是否被其硬件允许,否则应返回错误。

注意:要将RX1频率恢复为默认值,网络服务器可以发送另一个DlChannelReq命令,其值与上行频率相同。

如果DlChannelReq命令在终端设备所在的地区被定义,终端设备应通过返回DlChannelAns命令来确认接收到DlChannelReq命令。DlChannelAns命令应添加到所有上行消息的FOpts字段(如果FPort要么缺失要么>0),或者添加到FRMPayload字段(如果FPort=0),直到终端设备接收到一个A类下行消息。这样可以确保即使在上行消息丢失的情况下,网络始终知道终端设备使用的下行频率。

该帧的有效载荷包含以下信息:

如果上述任何一个比特为0,则命令不成功,终端设备应保持其先前的状态。

8.RXTimingSetupReq, RXTimingSetupAns

终端设备和网络服务器应该实现这些命令

网络服务器可以使用RXTimingSetupReq命令来配置TX上行传输结束和RX1开启之间的延迟时间。RX2始终在RX1之后1秒打开[RP002]。

RxTimingSettings字段指定了延迟时间。该字段分为两个4位索引。

延迟时间以秒为单位表示。Del 0被映射为1秒。

终端设备应使用没有有效载荷的RXTimingSetupAns命令回复RXTimingSetupReq命令。

RXTimingSetupAns命令应添加到所有上行消息的FOpts字段(如果FPort要么缺失要么大于0),或者添加到FRMPayload字段(如果FPort=0),直到终端设备接收到一个A类下行消息。这样可以确保即使在上行帧丢失的情况下,网络始终知道终端设备使用的下行参数。

9.TXParamSetupReq, TXParamSetupAns

网络服务器可以使用TXParamSetupReq命令通知终端设备允许的最大传输时间,比如空中数据包的最大连续传输时间,以及允许的终端设备有效等向辐射功率(EIRP)。

TXParamSetupReq命令的[0..3]比特位用于编码MaxEIRP值,如下表所示。该表中的EIRP值是根据不同地区法规所施加的最大EIRP限制范围来选择的。

最大EIRP对应于终端设备的无线发射功率的上限。终端设备不需要以该功率进行传输,但是不得超过指定的EIRP进行发送。

第4位和第5位分别定义了最大上行和下行传输时间,其编码如下表所示:

如果实现了这个MAC命令(特定于地区),终端设备应通过发送TXParamSetupAns命令来确认接收到TXParamSetupReq命令。TXParamSetupAns命令不包含有效载荷。

注意:在应用TxParamSetupReq命令时,终端设备必须使用以下两者中的最低值:区域对EIRP的限制或MaxEIRP编码的值。它还必须使用以下两者中的最低值:区域对停留时间的限制或UplinkDwellTime编码的值。

TXParamSetupAns命令应添加到所有上行消息的FOpts字段(如果FPort要么缺失要么大于0),或者添加到FRMPayload字段(如果FPort=0),直到终端设备接收到一个A类下行消息。这样可以确保即使在上行消息丢失的情况下,网络始终知道终端设备使用的下行参数。

当该MAC命令在不需要的地区使用时,终端设备不应处理它,并且不应发送确认。[RP002]

10.DeviceTimeReq, DeviceTimeAns

终端设备和网络服务器应实现这些命令。此MAC命令已在LoRaWAN L2 1.0.3 [TS001-1.0.3]中引入。

终端设备可以使用DeviceTimeReq命令向网络服务器请求当前的网络时间。这允许终端设备将其内部时钟与网络时钟同步。这对于加快获取class B信标非常有用。该请求没有有效载荷。

网络服务器可以使用DeviceTimeAns命令向终端设备提供GPS时间。提供的时间是上行传输结束时的GPS时间。该命令具有一个5字节的有效载荷,定义如下:

由网络提供的时间的最差精度应为±100毫秒。DeviceTimeAns命令应作为class A下行消息发送(即通过class A的RX1/RX2)。

(*) GPS纪元(即1980年1月6日00:00:00 UTC)被用作起点。秒字段是自起点以来经过的秒数。该字段每秒递增1。要将此字段转换为UTC时间,必须考虑闰秒。

示例:UTC时间为2016年2月12日星期五14:24:31对应于自GPS纪元以来的1319 1139322288秒。截至2017年6月,GPS时间比UTC时间提前了17秒1320。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值