書式モード(A, B)

Mode A/B

特徴

書式モードはTWELITE-トワイライトのUART(シリアル通信ポート)に所定の書式により入力するモードです。以下の特徴があります。

  • チェックサムによるエラーチェックを行う事で UART通信のデータ化けを検出する。

  • マイコンからバイナリ形式で直接送受信する。

設定方法

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

アスキー形式(A)

送信したいバイナリデータ列をアスキー文字列(0-9,A-F)に変換して無線モジュールに入力します。

Modbus ASCII 形式の書式に倣っています。(例: バイナリ系列 0x00 0x11 0x22 0x33 0xAA 0xBB 0xCC は ":00112233AABBCC69" という文字列で表現されます。)

バイナリー形式(B)

送信したいバイナリデータ列にヘッダとチェックサムを付加し直接無線モジュールに入力します。

人手による検証は困難になりますが、マイコン間通信では最も効率が良い形式です。

送信可能文字数

  • 最大送信バイト数は640バイトですが、1パケットに収めて送受信する事を推奨します。 下記【書式】のAにあたる[送受信したいデータ]

  • 1パケットに収めるためには80バイト以下にしてください。

書式

書式モードは、送信コマンドを使用してデータを送信するモードです。このコマンドを送る際にデータ形式をアスキー形式とバイナリ形式の2種類から選択できます。送信コマンドとデータ形式の関係は以下の図の通りです。

本ページでは下図に示す送信コマンドについて解説します。

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

送信コマンドには論理IDのみを使用した簡易形式と、32bitアドレス指定や様々な送信オプションを設定可能な拡張形式が有ります。それぞれの形式を以下で説明します。

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

入力

出力

TWELITE-トワイライトから出力される形式は、入力時と同形式です。

使用例

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

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

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

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

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

例えば上記の出力形式の場合、アスキー形式では以下のよう に表現されます。

:0001112233AABBCC68[CR][LF]

末尾の68はチェックサムです。

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

入力

出力

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

オプション

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

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

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

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

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

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

応答メッセージ

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

使用例

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

0x01 0x02 0x0A 0x0B ⇒ 01020A0B

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

簡易形式

子機から親機へ( 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.768秒後に送信)

	  
・送信コマンド
  00A01001030300FF123456
          ^1^2  ^3
  
  *1 送信遅延最小の設定
  *2 0300(=768ms)後
  *3 オプション終端

カスタムデフォルト

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

0xDB コマンド

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

サイレントモード

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

最終更新