その他テスト状態遷移

テンプレート説明

ユーザー定義のシーケンスを順に実行し、各遷移で期待通りの状態に遷移していることをテスト対象機器の状態応答をもって確認します。

 

  • 1 シーケンス実行
    定義したシーケンスを先頭から順に実行します。1ステップが1遷移に対応します。
  • 2 遷移確認
    遷移コマンド送信後、状態取得コマンドで応答を受信し、期待値と照合します。
  • 3 判定
    期待値と一致した場合はPASS、一致しない場合はFAILとしてログに出力します。全ステップ完了後にPASS/FAIL件数を表示します。
初期ユニット配置
 ・スロット1:DIOユニット(TC-IFDIO) ※1
ユニットの選択肢

 ・UART通信:DIFユニット(TC-IFDIF)またはCOMユニット(TC-IFCOM)でも利用できます。※2

※1 ユニットを別スロットへ変更する場合、ユニット設定のスロット割り付け変更を行うことで、設定値などを引き継ぎ可能です。
※2 スロットにユニットを取り付け・配線し、スクリプトのスロット設定を変更してください。

接続図

TC-3000からUARTコマンドまたはGPOパルスで遷移トリガーを送信し、テスト対象機器のUART状態通知を受信して期待値と照合します。

TC-3000 DIOユニット(TC-IFDIO)※初期設定 UART1(コマンド送受信) テスト対象機器 (テスト対象機器) UART(コマンド送受信)

 ※必ずGNDは接続してください。

動作イメージ

シーケンステーブルの各ステップが状態遷移マトリックス上のどのセルに対応するかを示します。

 

SEQUENCES テーブル(実行) 1 初期 → 状態Acmd=0x01 期待: 0x01 2 状態A → 状態Bcmd=0x02 期待: 0x02 3 状態B → 状態Ccmd=0x03 期待: 0x03 4 状態C → 状態Dcmd=0x04 期待: 0x04 5 状態D → 状態Acmd=0x05 期待: 0x01 動作イメージ コマンド \状態 初期 状態A 状態B 状態C 状態D 0x01 →A ① →B →A →A →C 0x02 →B ② →C →A 0x03 →C ③ 0x04 →A →B →D ④ →D 0x05 →A ⑤

設定変数

全設定変数を記載しています。実機の仕様に合わせて変更してください。

変数名

内容

初期値

SLOT

使用するユニットのスロット番号。使用するユニットに応じて変更。

DIO1

TRIGGER_MODE

状態遷移の起こし方を選択します。

動作
"UART_COMMAND" UARTコマンドで遷移を起こす。UART_SEQUENCESSEQUENCES に選択される。
"GPO_PULSE" GPOパルスで遷移を起こす。GPO_SEQUENCESSEQUENCES に選択される。

"UART_COMMAND"

UART_CH

コマンド送受信のUARTチャネル

UART1

STATUS_QUERY_CMD

状態確認コマンド。遷移トリガーとは別に送信し、現在の状態を問い合わせます。

"\x00\x00"

RESP_SIZE

状態確認コマンドへの応答バイト数

2

RECV_TIMEOUT

UART受信タイムアウト (ms)

2000

PULSE_WAIT_MS

GPOパルス送出後の待機時間 (ms)。Writeは出力完了を待たないため、パルス送出完了を待つために使用します。0 で待機をスキップします。(TRIGGER_MODE = "GPO_PULSE" 時のみ有効)

1000

UART_SEQUENCES / GPO_SEQUENCES

シーケンス定義テーブル。TRIGGER_MODE に応じていずれかが SEQUENCES に自動選択されます。各行が1ステップに対応し、列インデックスで値を参照します。

内容
label 遷移の説明。ログ出力・Assert結果の識別に使用。
trigger UART_COMMAND: 送信するコマンドのバイト列。GPO_PULSE: GPO Hiパルス幅(ms)。
ack_size ACK受信バイト数。0 の場合はACK受信をスキップ。(UART_COMMAND 時のみ有効。GPO_PULSE 時は nil
ack_expected ACKの期待値(バイト列)。nil の場合は値照合をスキップ。(UART_COMMAND 時のみ有効。GPO_PULSE 時は nil
status_expected STATUS_QUERY_CMD に対する期待応答(状態通知バイト列)

サンプル有
使用例は動作イメージ参照

判定条件

各ステップの状態通知受信後、以下の条件を満たした場合にPASSと判定します。

判定項目

合格条件

状態通知レスポンス

シーケンス定義の期待値と一致すること

受信タイムアウト

受信タイムアウト時間以内に状態通知が返却されること

テーブル設定例

実機のプロトコルに合わせてシーケンステーブルを書き換えた例を記載します。

例1:UARTコマンドで遷移(ACKあり)

遷移コマンドに対してACK(0x06)が返却される場合。ACK受信後に状態取得コマンドで状態を確認します。

local UART_SEQUENCES = {
          -- label            trigger  ack_size  ack_exp   status
          { "初期 → 状態A",   "\x10",  1,        "\x06",   "\x01" },
          { "状態A → 状態B",  "\x11",  1,        "\x06",   "\x02" },
          { "状態B → 状態C",  "\x12",  1,        "\x06",   "\x03" },
          { "状態C → 状態A",  "\x00",  1,        "\x06",   "\x00" },
      }

例2:GPOパルスで遷移

TRIGGER_MODE = "GPO_PULSE" に変更し、GPO_SEQUENCES のパルス幅を実機に合わせて設定します。

local TRIGGER_MODE = "GPO_PULSE"
      local GPO_SEQUENCES = {
          -- label            pulse(ms)  status_expected
          { "初期 → 状態A",   30,        nil, nil, "\x00\x01" },
          { "状態A → 状態B",  150,       nil, nil, "\x00\x02" },
          { "状態B → 状態A",  5,         nil, nil, "\x00\x01" },
      }