MWSDK(TWELITE SDK)
MONO WIRELESS INC.
MWSDK
MWSDK
  • TWELITE SDK (MWSDK) マニュアル
  • はじめに
    • TWELITE SDK 利用規定
    • サポート、対応
    • モノワイヤレスソフトウェア使用許諾書
    • TWELITE SDKの構成
  • 最新版の取得
    • TWELITE SDK 改版履歴
  • TWELITE SDKの使用法
    • TWELITE SDKのインストール
    • VSCode での利用
    • フォルダ構成
    • コマンドラインでのビルド方法
    • ビルド定義について
      • Makefile について
      • Version.mk について
      • binファイル命名則
    • ファームウェア書換
      • ファームウェア書換用配線
      • tweterm.py
  • TWELIET NET API 解説
    • 用語
    • TWELITE NET ライブラリ構造
    • TWENET 動作フロー
      • 始動フロー
      • メインループフロー
      • 無線関連フロー
      • ハードウェアフロー
      • ユーザ定義イベント処理関数フロー
    • ソースコードの構造
    • モジュール
    • 無線パケット
      • パケットの最大長
      • アドレスの指定
      • アプリケーションID
    • ネットワークについて
      • 単純ネット
        • 送信
        • 受信
      • 中継ネット
        • 親機の実装
        • 中継器の実装
        • 子機の実装 (MININODES)
        • NBビーコン方式の接続
        • 中継ネットのアドレス
        • 上位アドレスを固定した静的中継
  • TWELITE NET API リファレンス
    • コールバック関数
      • cbAppColdStart()
      • cbAppWarmStart()
      • cbToCoNet_vMain()
      • cbToCoNet_vRxEvent()
      • cbToCoNet_vTxEvent()
      • cbToCoNet_vNwkEvent()
      • cbToCoNet_vHwEvent()
      • cbToCoNet_u8HwInt()
    • TWELITE NET関数
      • ToCoNet_vMacStart()
      • ToCoNet_bMacTxReq()
      • ToCoNet_u32GetSerial()
      • ToCoNet_u32GetRand()
      • ToCoNet_vSleep()
      • ToCoNet_vDebugInit()
      • ToCoNet_vDebugLevel()
      • ToCoNet_u32GetVersion()
      • ToCoNet_bRegisterAesKey()
      • ToCoNet_vRfConfig()
      • ToCoNet_vChConfig()
      • ToCoNet_Tx_vProcessEventQueue()
      • ToCoNet_u16RcCalib()
    • 中継ネット API
      • functions
        • ToCoNet_Nwk_bInit()
        • ToCoNet_Nwk_bStart()
        • ToCoNet_Nwk_bPause()
        • ToCoNet_Nwk_bResume()
        • ToCoNet_Nwk_bTx()
      • Structure
        • tsTxDataApp (中継ネット)
        • tsRxDataApp (中継ネット)
        • tsToCoNet_Nwk_Context
      • LayerTree ネット
        • ToCoNet_NwkLyTr_psConfig()
        • ToCoNet_NwkLyTr_psConfig_MiniNodes()
        • tsToCoNet_NwkLyTr_Context
    • 型 typedef, よく使うマクロ
    • 構造体
      • sToCoNet_AppContext
      • tsRxDataApp
      • tsTxDataApp
    • TWELITE NET マクロ
      • ToCoNet_REG_MOD_ALL()
      • utils.h
    • ユーザ定義イベント処理関数
      • ステート(状態)
      • イベント
      • ToCoNet_Event API
        • ToCoNet_Event_Register_State_Machine()
        • ToCoNet_Event_Process()
        • ToCoNet_Event_SetState()
        • ToCoNet_Event_vKeepStateOnRamHoldSleep()
        • ToCoNet_Event_u32TickFrNewState()
    • モジュール ライブラリ
      • ENERGY SCAN
      • NB SCAN
    • PRSEV ライブラリ
    • グローバル変数
      • uint32 u32TickCount_ms
      • sToCoNet_AppContext (静的変数)
    • PANIC
  • HW API リファレンス
    • ペリフェラル
      • ADC
        • adc.c
      • DIO
      • TickTimer
      • UART
        • SERIAL ライブラリ
          • SERIAL_vInit()
          • SERIAL_vInitEx()
          • SERIAL_bRxQueueEmpty()
          • SERIAL_i16RxChar()
          • SERIAL_vFlush()
          • tsSerialPortSetup
          • tsUartOpt
        • fprintf ライブラリ
          • vfPrintf()
          • vPutChar()
          • tsFILE
      • Timer
        • Timerライブラリ
          • vTimerConfig()
          • vTimerStart()
          • vTimerStop()
          • vTimerDisable()
          • tsTimerContext
      • WakeTimer
      • I2C
      • SPI
    • Flash, EEPROM
      • EEPROM
      • Flash
  • Utils リファレンス、他
    • ByteQueue
    • u8CCITT8()
    • SPRINTFライブラリ
    • BTMライブラリ(連照式 DIO 入力 )
GitBook提供
このページ内
  • 中継について
  • 役割と宛先について
  1. TWELIET NET API 解説
  2. ネットワークについて

単純ネット

前へネットワークについて次へ送信

最終更新 3 年前

単純ネットでは、TWENET 内での中継配送手続きの介在を行わず、単純なノード間通信を行います。通信方法はアドレス指定によるもの、同報通信による2種類を利用します。標準アプリケーション など多くのアプリケーションはこの単純ネットを用いています。

中継について

単純ネットでサポートする通信自体は中継を実施しないスター型のネットワークになりますが、簡単で実用的な中継を実装する方法もあります。

中継配送を行う場合は、いくつかの方法があります。代表的な中継方法を紹介します。

同報通信により中継を実施する方法。受信したパケット内に中継回数にあたる寿命データを含めておいて、中継ごとに寿命カウントを減少させて、一定回数無条件に中継する。

特定の要求に基づいたネットワークの実装も可能です。例えばショートアドレスを決め打ちにしたリニア型のネットワークです。

親局は 0x0000 のアドレスとし、親局から順に 0x0001 0x0002 ... とショートアドレスを振っていきます。自局の前後のアドレスは常に通信可能という前提をおきます。

こうすれば、子局から親局の配送は、自局のアドレスより1小さいアドレスに配送します。

ネットワークの自動構成について

周囲の中継器を探索し、中継局を決定することは、無線通信においては非常にオーバヘッドが大きいため、多くのアプリケーションでは推奨されません。

  • 通信相手先を決定するのに多くの無線通信が必要になる。

    • 電池の消耗

    • 起動後から通信可能になるまでの時間がかかる

  • 安定性が高くない中継局が選ばれてしまう場合がある。

    • 通信相手先の探索条件を、その時もっとも良い通信とした場合、偶然条件が良かった遠くの局が選ばれてしまう。

  • 通信相手先の途絶を知るにも時間がかかる。

    • 通信失敗が連続したといった条件を成立するまでは、通信相手先の途絶とすることができないため、通信相手先の再探索まで長い時間が必要(または動的に通信相手先を切り替えるといった処方が必要)

  • 中継ネットワークを維持するために多くの無線通信が必要になる。

    • 帯域の圧迫となり、結果として、収容可能ノード数が減少する。

上記のような中継局を決定・維持するための原理的な問題があります。どのような手法を取っても一長一短があり、要求に合わせて考慮する必要があります。

一般に電池駆動のノードでは、こういった中継のための通信は現実的でありません。

役割と宛先について

単純ネットであっても、通常は親子といった役割を定めたネットワークとします。この役割についても、無線パケット通信ではいくつかの実装方法があります。

アドレスによるもの。

無線パケットでサポートするアドレス方式をそのまま用いて、アプリケーションでの役割を実現する方法です。具体的にはショートアドレスを用いて、親局のアドレスを 0x0000 とし、子局のアドレスを 0x0001 ... とする方法です。

子局は親局に配送する場合は、常に 0x0000 宛に配送すればよく、また、中継を必要としない場合は、ACK 通信を用いて効率的な無線配送が可能です。

パケット内のデータによるもの。

中継を実現したい場合は、アドレスや役割に相当するもの(ここでは論理アドレスと言います)を無線パケット内のデータとして格納します。

親局には 0x00 という論理アドレスを割り振ります。子局には0x01...という論理アドレスを割り振ります。この論理アドレスは、無線送信時のパケット内のデータとして、送り主・宛先として格納します。

ショートアドレスの仕組みを使用したいところですが、中継を行う時に都合が良くないため(中継局のショートアドレスを送信元アドレスとして中継パケットを送るため)、パケット内のデータとして格納します。

無線パケットは全て同報通信として送信します。同報通信であるため、電波到達可能範囲の全てのノードがそのパケットを受信します。(注:宛先を指定したパケットであっても、その内容は電波到達範囲であれば全てのノードが受信します。宛先が違うためその受信データを無視しているだけです。)

受信されたパケットのデータを参照して、自局で処理すべきか、中継すべきかといったことをアプリケーション側で決定します。

App_Twelite