IoT
LoRaWan

LoRaWANのMACコマンド(翻訳中)

ネットワーク管理のために、一組のMACコマンドをネットワークサーバとエンドデバイスのMACレイヤとの間で個別に交換することができます。 MACレイヤコマンドは、アプリケーション、アプリケーションサーバ、またはエンドデバイス上で実行されているアプリケーションからは見えません。

image.png

ひとつのデータフレームの中には、複数のMACコマンドシーケンスを含めることができます。MACコマンドは、デーフレームのFOptsフィールドに含めるか、FPortフィールドに0を設定したMACコマンド送信専用データフレームのFRMPayloadフィールドに含めることができます。FOptsフィールドに含まれるMACコマンドは、常に暗号化なしで送信され、15オクテットを超えてはいけません。また、FRMPayloadとして送信されるMACコマンドは常に暗号化され、最大FRMPayload長を超えてはいけません。

image.png

注:盗聴者に内容を開示してはならないMACコマンドは、データメッセージとは別のFRMPayloadで送信する必要があります。

MACコマンドは、1オクテットのコマンド識別子(CID)とそれに続くオクテットのコマンド特有のシーケンスで構成されます。

MACコマンド一覧

CID コマンド エンドデバイスから送信 ゲートウェイから送信 概要
0x02 LinkCheckReq x エンドデバイスがネットワークへの接続を検証するために使用します。
0x02 LinkCheckAns x LinkCheckReqコマンドに応答します。エンドデバイスに受信品質(リンクマージン)を示す受信信号電力推定値を格納します。
0x03 LinkADRReq x エンドデバイスにデータレート、送信電力、繰り返しレートまたはチャネルを変更するよう要求します。
0x03 LinkADRAns x LinkRateReqを許可します。
0x04 DutyCycleReq x デバイスの最大送信デューティサイクルを設定します。
0x04 DutyCycleAns x DutyCycleReqコマンドを許可します。
0x05 RXParamSetupReq x 受信スロットのパラメータを設定します。
0x05 RXParamSetupAns x RXSetupReqコマンドを許可します。
0x06 DevStatusReq x エンドデバイスのステータスを要求します。
0x06 DevStatusAns x エンドデバイスのステータス、つまりバッテリレベルと復調マージンを返します
0x07 NewChannelReq x 無線チャネルの定義を作成または変更します。
0x07 NewChannelAns x NewChannelReqコマンドを許可します。
0x08 RXTimingSetupReq x 受信スロットのタイミングを設定します。
0x08 RXTimingSetupAns x XTimingSetupReqコマンドを許可します。
0x09 TxParamSetupReq x 地域の規制に基づいて、ネットワークサーバーが許容される最大滞留時間とエンドデバイスの最大EIRPを設定するために使用されます。
0x09 TxParamSetupAns x TxParamSetupReqコマンドを許可します。
0x0A DlChannelReq x アップリンク周波数からダウンリンク周波数をシフトする(すなわち、非対称チャネルを生成する)ことにより、ダウンリンクRX1無線チャネルの定義を変更します。
0x0A DlChannelAns x DlChannelReqコマンドを許可します。
0x80 to 0xFF Proprietary x x プロプライエタリネットワーク専用
注:MACコマンドの長さは明示的に与えられておらず、MAC実装によって暗黙的に知られていなければなりません。 したがって、未知のMACコマンドはスキップすることができず、最初の未知のMACコマンドはMACコマンドシーケンスの処理を終了する。 したがって、初めてMACコマンドを導入したLoRaWAN仕様のバージョンに応じてMACコマンドを注文することをお勧めします。 このように実装されたLoRaWAN仕様のバージョンまでのすべてのMACコマンドは、実装されているものより新しいバージョンのLoRaWAN仕様でのみ指定されたMACコマンドが存在する場合でも処理できます。
注:ネットワークサーバーによって調整された値(RX2、新規または調整されたチャンネル定義など)は、エンドデバイスの次の参加まで有効です。 したがって、正常終了するたびにエンドデバイスはデフォルトのパラメータを再度使用し、必要に応じて値を再調整するのはネットワークサーバの責任です。

1.リンクチェックコマンド(LinkCheckReq/LinkCheckAns)

LinkCheckReqコマンドを使用すると、エンドデバイスはネットワークとの接続を検証できます。このコマンドにはペイロードはありません。
LinkCheckReqが、単独または複数のゲートウェイ経由でネットワークサーバーによって受信されると、LinkCheckAnsコマンドを応答します。

Size (bytes) 1 1
LinkCheckAns Payload Margin GwCnt

復調マージン(Margin)は、最後に受信が成功したLinkCheckReqコマンドのリンクマージン(dB)を示す、0..254の範囲の8ビットの符号なし整数です。値が「0」の場合は、フレームが復調フロア(0dBまたはマージンなし)で受信されたことを意味し、値が「20」の場合は、フレームが復調フロアより20dB高くゲートウェイに到達したことを意味します。「255」は予約されています。
※リンクマージンとは、受信電力が最小許容値を超える量のこと。
image.png

ゲートウェイカウント(GwCnt)は、最後のLinkCheckReqコマンドを正常に受信したゲートウェイの数です。

2.リンクADRコマンド(LinkADRReq/LinkADRAns)

ネットワークサーバは、LinkADRReqコマンドにより、レート調整をエンドデバイスに要求します。

Size (bytes) 1 2 1
LinkADRReq Payload DataRate_TXPower ChMask Redundancy
Bits [7:4] [3:0]
DataRate_TXPower DataRate TXPower

要求されたデータレート(DataRate)とTX出力電力(TXPower)は地域固有のもので、LoRaWAN地域パラメータ文書[PARAMS]に示されているようにエンコードされています。
コマンドに示されているTX出力電力は、デバイスが動作可能な最大送信電力とみなされます。 エンドデバイスは、使用可能なより高い送信電力を指定するコマンドが成功したと認識し、その場合には可能な最大電力で動作すべきである。 チャネルマスク(ChMask)は、以下のように、LSBに対応するビット0でアップリンクアクセスに使用可能なチャネルを符号化する。

Bit# Usable channels
0 Channel 1
1 Channel 2
.. ..
15 Channel 16

Table 5: Channel state table

ChMaskフィールドのビットが1に設定されていることは、このチャネルがエンドデバイスによって現在使用されているデータレートを許可する場合、対応するチャネルをアップリンク送信に使用できることを意味します。 ビットを0に設定すると、対応するチャネルを避ける必要があります。

Bits 7 [6:4] [3:0]
Redundancy bits RFU ChMaskCntl

冗長ビットでは、NbTransフィールドは各アップリンクメッセージの送信数です。これは、「確認されていない」アップリンクフレームにのみ適用されます。デフォルト値は、各フレームの1回の送信に対応して1です。有効範囲は[1:15]です。 NbTrans == 0が受信された場合、エンドデバイスはデフォルト値を使用する必要があります。このフィールドは、ネットワーク管理者が、所与のサービス品質を得るためにノードアップリンクの冗長性を制御するために使用することができる。エンドデバイスは、繰り返しの送信の間に通常どおり周波数ホッピングを実行し、受信ウィンドウが終了するまで各繰り返しの後に待機します。 。 RX1スロットウィンドウの間にダウンリンクメッセージが受信されるときはいつでも、それは同じアップリンクメッセージのそれ以上の再送信を停止する。クラスAデバイスの場合、RX2スロットの受信にも同じ効果があります。

チャネルマスク制御(ChMaskCntl)フィールドは、以前に定義されたChMaskビットマスクの解釈を制御する。 ChMaskが適用される16チャネルのブロックを制御します。また、特定のモジュレーションを使用して全チャンネルをグローバルにオン/オフすることもできます。このフィールドの使用法は地域固有のもので、LoRaWAN Regional Parametersドキュメント[PARAMS]で定義されています。

ネットワークサーバは、単一のダウンリンクメッセージ内に複数のLinkAdrReqコマンドを含むことができる。エンドデバイスのチャネルマスクを設定する目的で、エンドデバイスは、ダウンリンクメッセージに存在するすべての連続したLinkAdrReqメッセージを単一のアトミックブロックコマンドとして処理します。エンドデバイスは、隣接ブロック内のすべてのチャネルマスク制御を受け入れるか拒否し、この原子チャネルマスク1設定の受け入れまたは拒否を反映して、各LinkAdrAnsメッセージ内の連続ブロック内の各コマンドについて一貫したチャネルマスクACK状態指示を提供する。デバイスは、連続ブロックの最後のメッセージからのDataRate、TXPower、およびNbTransのみを処理します。これらの設定は、これらの値のエンドデバイスグローバル状態を制御します。エンドデバイスは、これらの最終設定の受諾または拒否を反映して、各LinkAdrAnsメッセージに一貫したACKステータスを提供します。

チャネル周波数は領域固有であり、第6章で定義されています。エンドデバイスは、LinkADRAnsコマンドを使用してLinkADRReqに応答します。

Size (bytes) 1
LinkADRAns Payload Status
Bits [7:3] 2 1 0
Status bits RFU Power ACK Data rate ACK Channel mask ACK

LinkADRAnsステータスビットの意味は次のとおりです。

Bit = 0 Bit = 1
Channel mask ACK 送信されたチャネルマスクは未定義のチャネルを有効にするか、チャネルマスクはすべてのチャネルを無効にする必要があります。 コマンドは破棄され、エンドデバイスの状態は変更されませんでした。 送信されたチャネルマスクは正常に解釈されました。 現在定義されているすべてのチャネル状態は、マスクに従って設定されています。
Data rate ACK 要求されたデータレートは、エンドデバイスには未知であるか、または提供されたチャネルマスク(使用可能なチャネルのいずれによってもサポートされていない)を考慮すると、不可能である。 コマンドは破棄され、エンドデバイスの状態は変更されませんでした。 データレートが正常に設定されました。
Power ACK 要求された電力レベルは、デバイスに実装されていません。 コマンドは破棄され、エンドデバイスの状態は変更されませんでした。 電力レベルが正常に設定されました。

Table 6: LinkADRAnsステータスビットの意味

これらの3ビットのいずれかが0に等しい場合、コマンドは成功せず、ノードは以前の状態を維持しています。

3.エンドデバイス送信デューティーサイクル(DutyCycleReq/DutyCycleAns)

DutyCycleReqコマンドは、ネットワークコーディネータによって、エンドデバイスの最大の送信デューティサイクルを制限するために使用されます。 総送信デューティサイクルは、すべてのサブバンドにわたる送信デューティサイクルに対応します。

Size (bytes) 1
DutyCycleReq Payload DutyCyclePL
Bits 7:4 3:0
DutyCyclePL RFU MaxDCycle

許可される最大エンドデバイス送信デューティサイクルは次のとおりです。

総デューティーサイクル = 1 / 2^MaxDCycle

MaxDutyCycleの有効な範囲は[0:15]です。 値0は、地域規則で設定されているものを除き、「デューティサイクル制限」に相当します。

エンドデバイスは、DutyCycleAnsコマンドを使用してDutyCycleReqに応答します。 DutyCycleAns MAC応答にはペイロードは含まれません。

4.受信ウィンドウパラメーター(RXParamSetupReq/RXParamSetupAns)

RXParamSetupReqコマンドは、各アップリンクに続く2番目の受信ウィンドウ(RX2)に設定された周波数およびデータレートの変更を可能にします。コマンドはまた、アップリンクとRX1スロットのダウンリンクデータレートとの間のオフセットをプログラムすることを可能にします。

Size (bytes) 1 3
RXParamSetupReq Payload DLsettings Frequency
Bits 7 6:4 3:0
DLsettings RFU RX1DRoffset RX2DataRate

DLsettings

RX1DRoffset

RX1DRoffsetフィールドは、最初の受信スロット(RX1)でエンドデバイスと通信するためのアップリンクデータレートとダウンリンクデータレートとの間のオフセットを設定します。デフォルトのオフセットは0です。オフセットは、いくつかの地域の基地局の最大電力密度制約を考慮し、アップリンクおよびダウンリンクの無線リンクマージンのバランスをとるために使用されます。
※地域によっては、アップリンクとダウンリンクのデータレートを変更することができる。つまり、ゲートウェイの送信出力を大きく(日本では250mW)できる場合は、下りのデータレートを高くすることができる。

RX2DataRate

データレート(RX2DataRate)フィールドは、LinkADRReqコマンドの規約に従い、2番目の受信ウィンドウ(RX2)で使用するダウンリンクのデータレートを定義します(例えば、0はDR0 / 125kHzを意味する)。

Frequency

周波数(Frequency)フィールドは、2番目の受信ウィンドウ(RX2)に使用されるチャネルの周波数に対応し、周波数は、NewChannelReqコマンドで定義された規則に従って符号化されます。

RXParamSetupAns

RXParamSetupAnsコマンドは、RXParamSetupReqコマンドの受信を確認するためにエンドデバイスによって使用されます。 RXParamSetupAnsコマンドは、クラスAダウンリンクがエンドデバイスによって受信されるまで、すべてのアップリンクのFOptフィールドに追加する必要があります。これにより、アップリンクパケット損失の存在下であっても、ネットワークは、エンドデバイスによって使用されるダウンリンクパラメータを常に認識していることを保証します。ペイロードには単一のステータスバイトが含まれます。

5.エンドデバイスステータス(DevStatusReq/DevStatusAns)

DevStatusReqコマンドにより、ネットワークサーバは、エンドデバイスからステータス情報を要求することができます。 このコマンドにはペイロードはありません。 DevStatusReqがエンドデバイスによって受信されると、DevStatusAnsコマンドで応答します。

Size (bytes) 1 1
DevStatusAns Payload Battery Margin

報告されるバッテリレベル(バッテリ)は、次のようにエンコードされます。

Battery 説明
0 エンドデバイスは外部電源に接続されています。
1..254 バッテリーレベルは、最小値は1、最大値は254です。
255 エンドデバイスはバッテリレベルを測定できませんでした。

Table 8: バッテリーレベルのデコード

マージン(Margin)は、正常に受信した最後のDevStatusReqコマンドの最も近い整数値に丸めたdB単位の復調信号対雑音比です。 6ビットの符号付き整数で、最小値は-32、最大値は31です。

Bits 7:6 5:0
Status RFU Margin

6.チャンネルの生成/変更(NewChannelReq/NewChannelAns,DlChannelReq/DlChannelAns)

NewChannelReqコマンドを使用すると、既存の双方向チャネルのパラメータを変更したり、新しいチャネルを作成したりすることができます。 このコマンドは、新しいチャネルの中心周波数と、このチャネルで使用可能なアップリンクデータレートの範囲を設定します。

Size (bytes) 1 3 1
NewChanne Req Payload ChIndex Freq DrRange

チャネルインデックス(ChIndex)は、作成または変更されるチャネルのインデックスです。
LoRaWAN仕様では、使用されているリージョンと周波数帯によって、すべてのデバイスに共通でなければならないデフォルトのチャンネルが適用され、NewChannelReqコマンドで変更することはできません(第6章参照)。 デフォルトチャネルの数がNの場合、デフォルトチャネルは0からN-1になり、ChIndexの許容範囲はNから15になります。デバイスは、少なくとも16の異なるチャネル定義を処理できなければなりません。 ある領域では、デバイスは16以上のチャネル定義を格納しなければならない場合があります。

周波数(Freq)フィールドは、24ビットの符号なし整数です。 Hzの実際のチャネル周波数は100×Freqであり、100MHz未満の周波数を表す値は将来の使用のために予約されています。 これにより、100Hzステップで100MHz〜1.67GHzの間の任意のチャンネルの周波数を設定することができます。 Freqの値が0の場合、チャネルは無効になります。 エンドデバイスは、周波数が無線ハードウェアによって実際に許可されているかどうかをチェックし、そうでなければエラーを返さなければならなりません。

データレート範囲(DrRange)フィールドは、このチャネルに許容されるアップリンクデータレート範囲を指定する。 このフィールドは、2つの4ビットインデックスに分割されています。

Bits 7:4 3:0
DrRange MaxDR MinDR

セクション5.2で定義された規約に従って、最小データレート(MinDR)サブフィールドは、このチャネル上で許容される最低のアップリンクデータレートを指定する。 たとえば、0はDR0 / 125 kHzを示します。 同様に、最大データレート(MaxDR)は、最も高いアップリンクデータレートを指定する。 たとえば、DrRange = 0x77はチャネルで50 kbpsのGFSKのみが許可され、DrRange = 0x50はDR0 / 125 kHz〜DR5 / 125 kHzがサポートされていることを意味します。
  新しく定義または変更されたチャネルが有効になり、通信にすぐに使用できます。 RX1ダウンリンク周波数は、アップリンク周波数と等しく設定される。
エンドデバイスは、NewChannelAnsコマンドを返信することにより、NewChannelReqの受信を確認する。 このメッセージのペイロードには、次の情報が含まれています。

Size (bytes) 1
NewChannelAnsペイロード ステータス

ステータス(ステータス)ビットの意味は次のとおりです。

ビット 7:2 1 0
ステータス RFU データレート範囲OK チャネル周波数ok
ビット= 0 ビット= 1
データレート範囲OK 指定されたデータレートの範囲は、このエンドデバイスに現在定義されているデータレートの範囲を超えています データレートの範囲は、エンドデバイスが使用できるデータレートと互換性があります。
チャネル周波数ok デバイスはこの周波数を使用できません デバイスはこの周波数を使用できます。

表9:NewChannelAnsステータスビットの意味

これらの2ビットのいずれかが0に等しい場合、コマンドは成功せず、新しいチャネルは作成されていません。

DlChannelReqコマンドは、ネットワークが異なるダウンリンク周波数をRX1スロットに関連付けることを可能にします。 このコマンドは、NewChannelReqコマンドをサポートしているすべての地域(たとえば、EUと中国ですが、LoRaWAN地域パラメータ文書[PARAMS]で説明されているように米国やオーストラリアでは使用できません)に適用されます。

このコマンドは、次のようにダウンリンクRX1スロットに使用される中心周波数を設定します。

Size (bytes) 1 3
DlChannelReqペイロード ChIndex Freq

チャネルインデックス(ChIndex)は、ダウンリンク周波数が変更されたチャネルのインデックスである。周波数(Freq)フィールドは、24ビットの符号なし整数である。 Hzの実際のダウンリンク周波数は100×Freqであり、100MHz未満の周波数を表す値は将来の使用のために予約されている。 エンドデバイスは、周波数が無線ハードウェアによって実際に許可されているかどうかをチェックし、そうでなければエラーを返さなければならない。

エンドデバイスは、DlChannelAnsコマンドを送り返してDlChannelReqの受信を確認します。 DlChannelAnsコマンドは、ダウンリンクパケットがエンドデバイスによって受信されるまで、すべてのアップリンクのFOptフィールドに追加されなければならない。 これにより、アップリンクパケット損失の存在下でも、ネットワークは、エンドデバイスによって使用されるダウンリンク周波数を常に認識していることを保証する。

このメッセージのペイロードには、次の情報が含まれています。

Size (bytes) 1
DlChannelAns Payload

ステータス(ステータス)ビットの意味は次のとおりです。

ビット 7:2 1 0
Status RFU アップリンクの周波数が存在する チャンネルの周波数はOK
Bit = 0 Bit = 1
チャンネルの周波数はOK デバイスはこの周波数を使用できません デバイスはこの周波数を使用することができます。
アップリンクの周波数が存在する Tアップリンク周波数はこのチャネルに対して定義されておらず、ダウンリンク周波数は、すでに有効なアップリンク周波数を有するチャネルに対してのみ設定可能である チャネルのアップリンク周波数は有効です

表10:DlChannelAnsステータスビットの意味

7.TXとRX間の遅延設定(RXTimingSetupReq/RXTimingSetupAns)

RXTimingSetupReqコマンドは、TXアップリンクの終わりと最初の受信スロットのオープンとの間に遅延を設定することを可能にする。 2番目の受信スロットは、最初の受信スロットの1秒後に開きます。

Size (bytes) 1
RXTimingSetupReq Payload Settings

遅延(Delay)フィールドは、遅延を指定します。 このフィールドは、2つの4ビットインデックスに分割されています。

Bits 7:4 3:0
Settings RFU Del

遅延は秒単位で表されます。 Del 0は1秒にマッピングされます。

Del Delay [s]
0 1
1 1
2 2
3 3
.. ..
15 15

Table 11: Delマッピングテーブル

エンドデバイスは、ペイロードのないRXTimingSetupAnsを使用してRXTimingSetupReqに応答します。 RXTimingSetupAnsコマンドは、クラスAダウンリンクがエンドデバイスによって受信されるまで、すべてのアップリンクのFOptフィールドに追加する必要があります。 これにより、アップリンクパケットロスがあっても、ネットワークはend18デバイスが使用するダウンリンクパラメータを常に認識しています。

8.エンドデバイス送信パラメーター(TxParamSetupReq/TxParamSetupAns)

このMACコマンドは、特定の規制地域でのコンプライアンスのためにのみ実装する必要があります。 LoRaWAN Regional Parameters [PARAMS]文書を参照してください。

TxParamSetupReqコマンドは、許可された最大滞留時間、すなわち、空中でのパケットの最大連続送信時間、および最大許容エンドデバイス有効等方放射電力(EIRP)をエンドデバイスに通知するために使用することができる。

Size (bytes) 1
TxParamSetup payload EIRP_DwellTime

EIRP_DwellTimeフィールドの構造は以下の通りです。

Bits 7:6 5 4 3:0
MaxDwellTime RFU DownlinkDwellTime UplinkDwellTime MaxEIRP

TxParamSetupReqコマンドのビット[0 ... 3]は、次の表のようにMax EIRP値をエンコードするために使用されます。 この表のEIRP値は、各地域の規制によって課された最大EIRP制限の広い範囲をカバーするように選択されています。

Coded Value 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Max EIRP (dBm) 8 10 12 13 14 16 18 20 21 24 26 27 29 30 33 36

最大EIRPは、デバイスの無線送信電力の上限に対応します。デバイスは、その電力で送信する必要はありませんが、この特定のEIRPを放射しないでください。

ビット4および5は、最大アップリンクおよびダウンリンクドウェル時間をそれぞれ定義し、以下の表に従って符号化される。

Coded Value Dwell Time
0 No Limit
1 400 ms

このMACコマンドが実装されると(領域固有)、エンドデバイスはTxParamSetupAnsコマンドを送信してTxParamSetupReqコマンドを確認応答します。 このTxParamSetupAnsコマンドにはペイロードは含まれていません。

このMACコマンドが必要でない領域で使用されるとき、デバイスはそれを処理せず、肯定応答を送信してはならない。