超簡単!標準アプリ(App_Twelite)の UART 機能で使用するデータ形式を解説します。
デジタル・アナログ入出力
0x81:相手端末からの状態通知
受信した入力信号の状態を出力します。
データ形式
| # | データ | 内容 | 備考 |
|---|---|---|---|
char | ヘッダ | :のみ | |
| 0 | uint8 | 送信元の論理デバイスID | |
| 1 | uint8 | コマンド番号 | 0x81のみ |
| 2 | uint8 | パケット識別子 | アプリケーションIDより生成 |
| 3 | uint8 | プロトコルバージョン | 0x01のみ |
| 4 | uint8 | LQI | 0-255 |
| 5 | uint32 | 送信元のシリアルID | 0x8??????? |
| 9 | uint8 | 送信先の論理デバイスID | |
| 10 | uint16 | タイムスタンプ | 1秒で64カウント |
| 12 | uint8 | 中継回数 | |
| 13 | uint16 | 電源電圧 | 単位はmV |
| 15 | int8 | - | (未使用) |
| 16 | uint8 | デジタル信号 | LSBから順にDIxへ対応、0がHighMSBが 1なら定期送信 |
| 17 | uint8 | デジタル信号マスク | LSBから順にDIxへ対応、1が有効 |
| 18 | uint8 | AI1の変換値 | アナログ信号の計算を参照、0xFFで未使用 |
| 19 | uint8 | AI2の変換値 | アナログ信号の計算を参照、0xFFで未使用 |
| 20 | uint8 | AI3の変換値 | アナログ信号の計算を参照、0xFFで未使用 |
| 21 | uint8 | AI4の変換値 | アナログ信号の計算を参照、0xFFで未使用 |
| 22 | uint8 | AIxの補正値 | LSBから2ビットずつ順にAIxへ対応 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D/'\r') | |
char | フッタ | LF (0x0A/'\n') |
親機・中継機アプリの出力と同一です。
アナログ信号の計算
AIxの入力電圧 \(V\)は、受信した変換値\(e_{r}\)および補正値\(e_{fr}\)を使って次のように表すことができます。
$$\begin{align*}
V &= e+e_f \\
\text{where} \\
e &= 16e_r \\
e_f &= 4e_{fr} \\
\end{align*}$$
単位は mV
出力データの例
:78811501C98201015A000391000C2E00810301FFFFFFFFFB
上記データの解釈
| # | データ | 内容 | 値 | |
|---|---|---|---|---|
: | char | ヘッダ | : | |
78 | 0 | uint8 | 送信元の論理デバイスID | 0x78 |
81 | 1 | uint8 | コマンド番号 | 0x81 |
15 | 2 | uint8 | パケット識別子 | 0x15 |
01 | 3 | uint8 | プロトコルバージョン | 0x01 |
C9 | 4 | uint8 | LQI | 201/255 |
8201015A | 5 | uint32 | 送信元のシリアルID | 0x201015A |
00 | 9 | uint8 | 送信先の論理デバイスID | 0x00 |
0391 | 10 | uint16 | タイムスタンプ | 約14.27秒 |
00 | 12 | uint8 | 中継回数 | 0 |
0C2E | 13 | uint16 | 電源電圧 | 3118mV |
00 | 15 | int8 | - | |
81 | 16 | uint8 | デジタル信号 | DI1 L DI2 HDI3 H DI4 H(定期送信) |
03 | 17 | uint8 | デジタル信号マスク | DI1 DI2 |
01 | 18 | uint8 | AI1の変換値 | 16mV |
FF | 19 | uint8 | AI2の変換値 | 未使用 |
FF | 20 | uint8 | AI3の変換値 | 未使用 |
FF | 21 | uint8 | AI4の変換値 | 未使用 |
FF | 22 | uint8 | AIxの補正値 | AI1 0x03 |
FB | uint8 | チェックサム | 0xFB | |
char | フッタ | \r | ||
char | フッタ | \n |
0x80:相手端末の出力変更
相手端末の出力信号を制御します。
データ形式
| # | データ | 内容 | 備考 |
|---|---|---|---|
char | ヘッダ | :のみ | |
| 0 | uint8 | 送信先の論理デバイスID | 親機0x00,子機0x01-0x64,全子機0x78 |
| 1 | uint8 | コマンド番号 | 0x80のみ |
| 2 | uint8 | 書式バージョン | 0x01のみ |
| 3 | uint8 | デジタル信号 | LSBからDOxに対応、0でHigh |
| 4 | uint8 | デジタル信号マスク | LSBからDOxに対応、1で有効 |
| 5 | uint16 | PWM1信号 | 0-1024,0xFFFFで無効 |
| 7 | uint16 | PWM2信号 | 0-1024,0xFFFFで無効 |
| 9 | uint16 | PWM3信号 | 0-1024,0xFFFFで無効 |
| 11 | uint16 | PWM4信号 | 0-1024,0xFFFFで無効 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D/'\r') | |
char | フッタ | LF (0x0A/'\n') |
UART 入出力
0x01:任意のデータの送信
データ形式
| # | データ | 内容 | 備考 |
|---|---|---|---|
char | ヘッダ | :のみ | |
| 0 | uint8 | 送信先の論理デバイスID | 親機0x00,子機0x01-0x64,全子機0x78 |
| 1 | uint8 | コマンド番号 | 0x01のみ |
| 2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列(\(N\leqq80\)を推奨) |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D/'\r') | |
char | フッタ | LF (0x0A/'\n') |
シリアル通信アプリの書式モード(アスキー)の簡易形式のコマンド番号に
0x01を指定する場合と同様です。0x01:任意のデータの受信
データ形式
| # | データ | 内容 | 備考 |
|---|---|---|---|
char | ヘッダ | :のみ | |
| 0 | uint8 | 送信元の論理デバイスID | 親機0x00,子機0x01-0x64,未設定子機0x78 |
| 1 | uint8 | コマンド番号 | 0x01のみ |
| 2 | [uint8] | 任意のデータ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D/'\r') | |
char | フッタ | LF (0x0A/'\n') |
シリアル通信アプリの書式モード(アスキー)の簡易形式のコマンド番号が
0x01であった場合と同様です。I2C 入出力
0x88:I2C 入力
データ形式
| # | データ | 内容 | 備考 |
|---|---|---|---|
char | ヘッダ | :のみ | |
| 0 | uint8 | 送信先の論理デバイスID | 親機0x00,子機0-0x7F,全子機0x78,自身0xDB |
| 1 | uint8 | パケット識別子 | 0x88のみ |
| 2 | uint8 | 応答番号 | 応答メッセージへ出力する番号 |
| 3 | uint8 | コマンド番号 | 書き込み0x1,読み出し0x2,読み書き0x4 |
| 4 | uint8 | I2Cアドレス | 7ビット |
| 5 | uint8 | I2Cコマンド | 最初のコマンドバイト |
| 6 | uint8 | データサイズ | 0はなし |
| 7 | [uint8] | データ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D/'\r') | |
char | フッタ | LF (0x0A/'\n') |
コマンド番号
0x4では、データサイズに読み出すデータのサイズを指定したうえで、データを省略してください。指定されたI2Cコマンドを書き込み、データサイズの分だけ読み出しを行います。0x89:I2C 出力
データ形式
| # | データ | 内容 | 備考 |
|---|---|---|---|
char | ヘッダ | :のみ | |
| 0 | uint8 | 送信元の論理デバイスID | 親機0x00,子機0-0x7F,全子機0x78,自身0xDB |
| 1 | uint8 | パケット識別子 | 0x89のみ |
| 2 | uint8 | 応答番号 | 応答メッセージへ出力する番号 |
| 3 | uint8 | コマンド番号 | 書き込み0x1,読み出し0x2,読み書き0x4 |
| 4 | uint8 | 結果 | 失敗0、成功1 |
| 5 | uint8 | データサイズ | 0はなし |
| 6 | [uint8] | データ | 長さ\(N\)のバイト列 |
uint8 | チェックサム | LRC8 | |
char | フッタ | CR (0x0D/'\r') | |
char | フッタ | LF (0x0A/'\n') |