書式モード

iot無線モジュール

書式モードはTWE-LITEのUARTに所定の書式により入力するモードです。以下の特徴があります。

書式モードはインタラクティブモードにてUARTモード(m)をアスキー形式(A)またはバイナリ形式(B)に設定します。

送信可能文字数

書式

書式モードを考える上で、まず送信したいバイナリ列に対して、これを送信するためのコマンド形式、そして UART に入力するためのアスキーおよびバイナリ形式の2階建ての構造になっています。本ページでは下図に示すコマンド表現について解説します。

A: [送受信したいデータ]
 ↓↑
B: [コマンド表現 [A: ] ]
 ↓↑
C: 系列Bをアスキー形式またはバイナリ形式に変換
   [形式ヘッダ [B: [A: ] ] 終端]
 ↓↑
マイコンのUART入出力

本ページでは上記 B にあたる送信コマンドについて解説します。送信コマンドには論理IDのみを使用した簡易形式、および32bitアドレス指定や様々な送信オプションを設定可能な拡張形式が有ります。

送信コマンド (簡易形式)

入力

TWE-LITEに簡易コマンドとして入力する場合は、宛先の論理IDに加え 0x80 未満のバイトを連続する。

データ形式 バイト数 解説
バイト 1 送信先の論理ID。
0x00 ⇒ 親機宛
0x01 ~ 0x64(100) ⇒ 子機論理ID宛
0x78 ⇒ 全子機宛
バイト 1 コマンド種別(0x80未満任意)
※ データ領域として利用可能だが、0x80 以上を入力してはならない。
バイト列 N 送受信したいバイト列。

出力

TWE-LITEから出力される形式は、入力時と同形式です。

データ形式 バイト数 解説
バイト 1 送信元の論理ID。
0x00 ⇒ 親機
0x01 ~ 0x64(100) ⇒ 子機論理ID
0x78 ⇒ 子機。(論理ID未設定)
バイト 1 コマンド種別(0x80未満任意)
※ 送信時に指定した値がそのまま入る。
バイト列 N 送受信したいバイト列。

以下を親機に入力した場合、全子機に対し 0x11 0x22 0x33
0xAA 0xBB 0xCC というバイト列を送信するコマンドです。

  0x78 0x01 0x11 0x22 0x33 0xAA 0xBB 0xCC

受信側は、以下のように親機の論理 ID (0x00) から以下の
バイト列を得ます。

  0x00 0x01 0x11 0x22 0x33 0xAA 0xBB 0xCC

上記バイト列は TWE マイコンに直接入力するわけではあり
ません。 アスキー形式またはバイナリ形式で表現した上、
UART の入出力を行います。

例えば上記の出力形式の場合、アスキー形式では以下のよう
に表現されます。
  :0001112233AABBCC68[CR][LF]
(末尾の 68 がチェックサムです)

 

送信コマンド (拡張形式)

入力

TWE-LITEに簡易コマンドとして入力する場合は、宛先の論理IDに加え 0xA0 バイトを連続する。

データ形式 バイト数 解説
バイト 1 送信先の論理ID。
0x00 ⇒ 親機宛
0x01 ~ 0x64(100) ⇒ 子機論理ID宛
0x78 ⇒ 全子機宛
0x80 ⇒ 拡張アドレス
バイト 1 0xA0
バイト 1 応答ID。
任意に指定できる。後述の応答メッセージ(送信完了などの通知)に使用され、送信コマンドとの対応を付けるために使用する。
ビッグエンディアン4バイト 4 先頭バイトが拡張アドレス(0x80)指定の場合、アドレス指定を行います。拡張アドレス指定でない場合は、本領域は0バイトとなります。
バイト列 N オプション列。
オプションは {オプションバイト} {オプション引数} が連続し、オプションバイトが 0xFF を指定する事で終端します。オプションを指定しない場合は 0xFF の1バイトを指定します。
バイト列 N 送受信したいバイト列。

出力

TWE-LITEから出力される形式は、宛先の論理IDに続き 0xA0 バイトが続きます。

データ形式 バイト数 解説
バイト 1 送信元の論理ID。
0x00 ⇒ 親機宛
0x01 ~ 0x64(100) ⇒ 子機論理ID宛
0x78 ⇒ 子機(論理ID未設定)
バイト 1 0xA0
バイト 1 送信元で指定した応答ID。
ビッグエンディアン4バイト 4 送信元拡張アドレス。
ビッグエンディアン4バイト 4 送信先拡張アドレス。
1バイトの論理IDの指定で送信された場合 0xFFFFFFFF が格納される。
バイト 1 通信品質 LQI 値。
0..255 の値を取り、受信時の電波強度に対応する。0が一番弱く、255が一番強い。
ビッグエンディアン2バイト 2 続くデータ領域のバイト数。
バイト列 N 送受信したいバイト列。

 

オプション

各種送信時のオプションが指定できます。アプリケーション再送や遅延のためのオプションは、1パケットで送信できるデータ量(送受信したいデータが78バイト以内)で使用してください。

※ 本オプションはネットワーク層を利用した送信では使用しないでください。

オプションバイト パラメータバイト数 規定値v1.2.13以降 解説
0x1 0 無効 MAC ACK を設定します。
※ 中継機による中継が行われなくなります。
※ 送信先が 0x78(子機ブロードキャスト) の場合、この設定は無効になります。
0x2 1 0x00 アプリケーション再送を行います。
・0x00 ~ 0x0F: 0 から 16 回の再送を行います。 送信成功を持って終了します。主にMAC ACK 設定時に使用します。
・0x81 ~ 0x8F: 1 から 16 回の再送を行います。失敗成功に関わらず指定回数の送信を行います。主に MAC ACK を設定しない場合に利用します。
応答メッセージは、全ての再送処理が終わってから処理されます。
0x3 2 0x0000 初回の送信までの遅延を設定し、その最小値を与えます。
パラメータはビッグエンディアンの2バイトで、遅延[ms]を指定します。
0x4 2 0x0000 初回の送信までの遅延を設定し、その最大値を与えます。
パラメータはビッグエンディアンの2バイトで、遅延[ms]を指定します。最小値より小さい値を与えた場合は無効になります。

結果、送信要求発行からの遅延は (最小値)+(最大値-最小値)x(乱数 0...1) となります。
0x5 2 パケット数 x 10 [ms] アプリケーション再送の再送間隔を指定します。
パラメータはビッグエンディアンの2バイトで、送信間隔[ms]を与えます。
0x6 0 無効 併行要求処理を行う。
このオプションが設定された要求は、要求完了までブロックせず、次の要求処理を受け付けます。
例えば 0.5 秒の遅延を設定した要求を 3 ヶを連続して投入した場合、本オプションを付けない場合は 0.5 秒後、1.0秒後、1.5秒ごと順次処理されますが、本オプションを付加すると 0.5秒後に3つの送信要求が処理されます。
※ パケット分割しない送信処理に限ります。
※ 併行動作の最大数は5ヶで、送信順は保証されません。
0x07 0 無効 送信後、応答メッセージを表示しない。
0x08 0 無効 送信後、速やかにスリープする。
※ スリープからの復帰は RX ポート (DIO7) に Lo>Hi への割り込み信号を入力します(何か1バイト入力する)。コマンドはUART初期化が終わってから入力します。

※ 遅延や再送回数などによりコマンド入力から1秒を経過すると、コマンド処理がタイムアウトし、処理待ちのコマンドが処理されます。

※ 遅延処理やアプリケーション再送が行われている間は、内部のパケットバッファー(10ヶ)が処理待ちで埋まっていて新しい処理要求が実行されない場合が有ります。また同時に平行処理できるパケットは5ヶとなります。

※ パケットの重複確認は、内部で割り振っている連番で新しいものを優先し旧いものは採用しません。新しい要求受け付けのパケットが先に届き、旧い要求受け付けのパケットが後に届くような場合、古いパケットは受信されません。(特に 0x06 オプションを付加した時に、このような現象が発生しやすくなります)

※ パケット分割されるデータサイズの場合に遅延処理やアプリケーション再送処理を行うと、後半のパケットが前半のパケットの処理完了後に処理されるため、大きな時間差が発生し受信側でタイムアウトを起こし受信が失敗します。原則として遅延が発生するオプションはパケット分割しない範囲で使用してください。

応答メッセージ

応答メッセージはコマンドの入力に対し、処理結果を通知する。

データ形式 バイト数 解説
バイト 1 0xDB
バイト 1 0xA1
バイト 1 応答ID。
拡張形式では指定した応答ID、 簡易形式では続き番号(128~255)が振られます。
※ 拡張形式と簡易形式を混在させて利用する場合、応答IDに128以上の値を使用すると識別できなくなります。
バイト 1 0:失敗 1:成功

 

以下の例では、バイトまたはバイト列を 0x を省略して表記する。

0x01 0x02 0x0A 0x0B ⇒ 01020A0B

※ 以下の例をそのままTWE-LITEに入力できるわけではなく、アスキーまたはバイナリ形式で表現します。

簡易形式

◆ 子機から親機へ 0203 の2バイトを送る(コマンドバイトは 01)
・送信コマンド
  00010203
  ^1^2
  
  *1 00:親機宛
  *2 データ
  
・応答メッセージ
  DBA18001
        ^1
  *1 01:成功, 00:失敗
  
・受信
  78010203
  ^1
  
  *1 78:子機(論理ID設定なし)から来た
  
◆ 親機から全子機へ、長い系列 
  78020304DB32807005D70101100001000080A005D718DB32807005D7010110
  0001000080A005D718DB32807005D70101100001000080A005D718DB328070
  05D70101100001000080A005D718DB32807005D70101100001000080A005D7
  

拡張形式

◆ 子機→親機、単純な送信
・送信コマンド
  00A012FF123456
      ^1^2^3
      
  *1 応答番号 12
  *2 オプション無し
  *3 データ

・応答メッセージ
  DBA11201
      ^1^2
   
  *1 応答番号 12
  *2 01:成功

・受信
  78A01286300001FFFFFFFFD80003123456
      ^1^2      ^3      ^4^5  ^6
  
  *1 応答番号 12
  *2 送信元アドレス(86300001)
  *3 送信先アドレス(FFFFFFFF 情報なし)
  *4 通信品質(LQI)
  *5 データ部バイト数 (0003=3バイト)
  *6 データ (3バイトのデータ)
  
◆ 子機→親機、Ack 付きの送信
・送信コマンド
  00A01301FF123456
        ^1
        
   *1 ACK 指定
   
◆ 子機→親機(0.77秒後)
・送信コマンド
  00A01001030300FF123456
          ^1^2  ^3
  
  *1 送信遅延最小の設定
  *2 0300(=768ms)後
  *3 オプション終端
  

カスタムデフォルト

ファームウェアバイナリに設定情報を付記した設定済みファームウェアバイナリが利用できます。例えば、ボーレートを最初から設定したファームウェアを作成しておけば、毎回インタラクティブモードなどで設定する必要がなくなります。>>詳細

0xDB コマンド

インタラクティブモードでの設定を行う替わりに、書式モード(バイナリモード・アスキーモード)では、コマンドによりモジュールの動作(リセット・サイレント解除)や設定を行えます。>>詳細

サイレントモード

サイレントモードでは、受信回路を動作させず稼働中にパケット受信を行いません。起動後にマイコン経由で毎回特定の設定を反映させてから、通信を始めるような場合に利用します。>>詳細