書式モード(A, B)
Mode A/B
最終更新
Mode A/B
最終更新
書式モードはTWELITE-トワイライトのUART(シリアル通信ポート)に所定の書式により入力するモードです。以下の特徴があります。
チェックサムによるエラーチェックを行う事で UART通信のデータ化けを検出する。
マイコンからバイナリ形式で直接送受信する。
書式モードはインタラクティブモードにてUARTモード(m)をアスキー形式(A)またはバイナリ形式(B)に設定します。
送信したいバイナリデータ列をアスキー文字列(0-9,A-F)に変換して無線モジュールに入力します。
Modbus ASCII 形式の書式に倣っています。(例: バイナリ系列 0x00 0x11 0x22 0x33 0xAA 0xBB 0xCC は ":00112233AABBCC69" という文字列で表現されます。)
送信したいバイナリデータ列にヘッダとチェックサムを付加し直接無線モジュールに入力します。
人手による検証は困難になりますが、マイコン間通信では最も効率が良い形式です。
最大送信バイト数は640バイトですが、1パケットに収めて送受信する事を推奨します。 下記【書式】のAにあたる[送受信したいデータ]
1パケットに収めるためには80バイト以下にしてください。
書式モードは、送信コマンドを使用してデータを送信するモードです。このコマンドを送る際にデータ形式をアスキー形式とバイナリ形式の2種類から選択できます。送信コマンドとデータ形式の関係は以下の図の通りです。
本ページでは下図に示す送信コマンドについて解説します。
送信コマンドには論理IDのみを使用した簡易形式と、32bitアドレス指定や様々な送信オプションを設定可能な拡張形式が有ります。それぞれの形式を以下で説明します。
TWELITE-トワイライトから出力される形式は、入力時と同形式です。
以下のコマンドを親機に入力した場合、全子機に対し 0x11 0x22 0x33 0xAA 0xBB 0xCC というバイト列を送信します。
受信側は、以下のように親機の論理ID (0x00)から以下の バイト列を得ます。
上記バイト列はTWELITEに直接入力するわけではあり ません。アスキー形式またはバイナリ形式で表現した上、 UARTの入出力を行います。
例えば上記の出力形式の場合、アスキー形式では以下のよう に表現されます。
末尾の68はチェックサムです。
TWELITE-トワイライトから出力される形式は、宛先の論理IDの次に0xA0バイトが続きます。
各種送信時のオプションが指定できます。アプリケーション再送や遅延のためのオプションは、1パケットで送信できるデータ量(送受信したいデータが78バイト以内)で使用してください。
※ 本オプションはネットワーク層を利用した送信では使用しないでください。
※ 遅延や再送回数などによりコマンド入力から1秒を経過すると、コマンド処理がタイムアウトし、処理待ちのコマンドが処理されます。
※ 遅延処理やアプリケーション再送が行われている間は、内部のパケットバッファー(10ヶ)が処理待ちで埋まっていて新しい処理要求が実行されない場合が有ります。また同時に平行処理できるパケットは5ヶとなります。
※ パケットの重複確認は、内部で割り振っている連番で新しいものを優先し旧いものは採用しません。新しい要求受け付けのパケットが先に届き、旧い要求受け付けのパケットが後に届くような場合、古いパケットは受信されません。(特に 0x06 オプションを付加した時に、このような現象が発生しやすくなります)
※ パケット分割されるデータサイズの場合に遅延処理やアプリケーション再送処理を行うと、後半のパケットが前半のパケットの処理完了後に処理されるため、大きな時間差が発生し受信側でタイムアウトを起こし受信が失敗します。原則として遅延が発生するオプションはパケット分割しない範囲で使用してください。
応答メッセージはコマンドの入力に対し、処理結果を通知します。
以下の例では、バイトまたはバイト列を 0x を省略して表記します。
※ 以下の例をそのままTWELITEに入力できるわけではなく、アスキーまたはバイナリ形式で表現します。
子機から親機へ( 0203 の2バイトを送信、コマンドバイトは 01)
親機から全子機へ(長い系列)
子機→親機(単純な送信)
子機→親機(Ack付きの送信)
子機→親機(0.768秒後に送信)
ファームウェアバイナリに設定情報を付記した設定済みファームウェアバイナリが利用できます。例えば、ボーレートを最初から設定したファームウェアを作成しておけば、毎回インタラクティブモードなどで設定する必要がなくなります。
インタラクティブモードでの設定を行う替わりに、書式モード(バイナリモード・アスキーモード)では、コマンドによりモジュールの動作(リセット・サイレント解除)や設定を行えます。
サイレントモードでは、受信回路を動作させず稼働中にパケット受信を行いません。起動後にマイコン経由で毎回特定の設定を反映させてから、通信を始めるような場合に利用します。
データ形式
バイト数
解説
バイト
1
送信先の論理ID。 0x00 ⇒ 親機宛 0x01 ~ 0x64(100) ⇒ 子機論理ID宛 0x78 ⇒ 全子機宛
バイト
1
コマンド種別(0x80未満任意) ※ データ領域として利用可能だが、0x80以上を入力してはならない。
バイト列
N
送受信したいバイト列。
データ形式
バイト数
解説
バイト
1
送信元の論理ID。 0x00 ⇒ 親機 0x01 ~ 0x64(100) ⇒ 子機論理ID 0x78 ⇒ 子機。(論理ID未設定)
バイト
1
コマンド種別(0x80未満任意) ※ 送信時に指定した値がそのまま入る。
バイト列
N
送受信したいバイト列。
データ形式
バイト数
解説
バイト
1
送信先の論理ID。 0x00 ⇒ 親機宛 0x01 ~ 0x64(100) ⇒ 子機論理ID宛 0x78 ⇒ 全子機宛 0x80 ⇒ 拡張アドレス
バイト
1
0xA0
バイト
1
応答ID。 任意に指定できる。後述の応答メッセージ(送信完了などの通知)に使用され、送信コマンドとの対応を付けるために使用する。
ビッグエンディアン4バイト
4
先頭バイトが拡張アドレス(0x80)指定の場合、アドレス指定を行います。拡張アドレス指定でない場合は、本領域は0バイトとなります。
バイト列
N
オプション列。 オプションは {オプションバイト} {オプション引数} が連続し、オプションバイトが 0xFF を指定する事で終端します。オプションを指定しない場合は 0xFF の1バイトを指定します。
バイト列
N
送受信したいバイト列。
データ形式
バイト数
解説
バイト
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
送受信したいバイト列。
オプションバイト
パラメータバイト数
規定値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
0xDB
バイト
1
0xA1
バイト
1
応答ID。 拡張形式では指定した応答ID、 簡易形式では続き番号(128~255)が振られます。 ※ 拡張形式と簡易形式を混在させて利用する場合、応答IDに128以上の値を使用すると識別できなくなります。
バイト
1
0:失敗 1:成功