汎用IO通信テスト入力タイミングスイープ

テンプレート説明

2信号間のタイミングオフセットを段階的にスイープし、タイミング差に対するテスト対象機器の応答を確認します。

 

  • 1 2信号の同時出力
    信号Aと信号B(IOまたはUART)を同時に出力します。信号Bはオフセット分だけ遅延させ、テスト対象機器に2信号の時間差を与えます。
  • 2 応答の照合
    ①の出力完了後、GPIの現在レベルまたはUARTレスポンスを取得し、パターン定義の期待値と照合します。
  • 3 全パターン実行とマージン特定
    ①②をオフセット違いの全パターンで繰り返し、最後にPASS/FAIL件数を集計して許容できるタイミングマージンを把握します。
初期ユニット配置
 ・スロット1:DIOユニット(TC-IFDIO) ※1
ユニットの選択肢

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

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

接続図

TC-3000のGPO1(信号A)とGPO2(信号B)を同時に出力し、GPI1でテスト対象機器の応答を受け取ります。

※ 図はIO_IOモードの構成例です。

TC-3000 DIOユニット(TC-IFDIO) GPO1 信号A出力(基準) GPO2 信号B出力(Δt 遅延) GPI1(応答入力) テスト対象機器 テスト対象機器 IO 信号入力A 基準タイミング受信 信号入力B オフセット付き受信 応答出力 ① 信号A出力(基準) ② 信号B出力(Δt遅延) ③ 応答取得 同時出力

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

タイミングイメージ

信号Aを基準として、信号Bのオフセット Δt をステップごとに増やしていく一連の波形を示します。

 

SWEEP_MODE="IO_IO"PULSE_ON_MS=0.5PERIOD_MS=10、3ステップ実行の例。

信号A(基準)と信号B(オフセット可変)のタイミングスイープ step 1(Δt₁ 小) 信号A 信号B Δt₁ step 2(Δt₂ 中) 信号A 信号B Δt₂ step 3(Δt₃ 大/マージン超過) 信号A 信号B Δt₃ GPI期待値と照合 GPI期待値と照合 GPI期待値と照合 Δt₁ < Δt₂ < Δt₃ オフセットをステップごとに増加させ、応答の合否で許容マージンを特定します。 時間 基点

設定変数

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

変数名

内容

初期値

IO_SLOT

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

DIO1

UART_SLOT

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

DIO1

GPO_A_CH

信号A出力チャネル(基準タイミング)

GPO1

GPO_B_CH

信号B出力チャネル(オフセット分遅延して出力)

GPO2

GPI_CH

IO応答入力チャネル

GPI1

UART_CH

UARTチャネル番号(IO_UART出力/UART_RESP送受信に使用)

UART1

PULSE_ON_MS

信号A/信号Bのパルス幅 (ms)

0.5

PERIOD_MS

1パターンあたりの出力時間 (ms)。オフセット最大値+パルス幅より大きく設定する必要があります。

10

RECV_TIMEOUT

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

2000

INTERVAL_WAIT_MS

次のパターンを実行する前の待機時間 (ms)。0を指定すると待機しません。

100

SWEEP_MODE

出力モードの選択。

"IO_IO" 信号AとBをそれぞれGPOから同時出力。
"IO_UART" 信号AをGPO、信号BをUARTコマンドとして同時出力します。

"IO_IO"

CHECK_MODE

応答確認方法の選択。

"GPI_LEVEL" 出力完了後にGPIの現在レベル(High/Low)を読み、期待値と比較します。
"UART_RESP" 確認コマンドを送信し、UARTレスポンスを期待値と比較します。

"GPI_LEVEL"

UART_CMD

IO_UARTモードで信号Bとして送信するUARTコマンド

"\x10\x01\x00\x00"

CHECK_CMD

UART_RESPモードで各パターン後にテスト対象機器へ送信する確認コマンド

"\x04\x00\x00\x00"

patterns_io_io
patterns_io_uart

SWEEP_MODEごとのタイミングスイープパターン定義テーブル。各エントリに下記フィールドを持ちます。

フィールド 内容
offset_ms 信号A→信号Bのオフセット時間 (ms)
io_expected GPI現在レベル期待値(1=High/0=Low)。CHECK_MODE="GPI_LEVEL"時に使用します。
uart_expected UARTレスポンス期待値(バイト列)。CHECK_MODE="UART_RESP"時に使用します。

サンプル有
使用例はテーブル設定例参照

判定条件

各オフセットパターン実行後に取得した値が以下の条件を満たした場合にPASSと判定します。

判定項目

合格条件

GPI現在レベル(GPI_LEVEL時)

出力完了後に読み取ったGPI値が、パターン定義のGPI期待値と一致すること

UARTレスポンス(UART_RESP時)

確認コマンドに対する受信バイト列が、パターン定義のUARTレスポンス期待値と一致すること

UART受信(UART_RESP時)

UART受信タイムアウト以内にレスポンスを受信できること

テーブル設定例

テンプレート初期値のスイープパターン定義テーブルの記述例を示します。実機のタイミング仕様に合わせてオフセット値と期待値を編集してください。

例1:IO_IO モード(patterns_io_io

2チャネルGPOをオフセット付きで同時出力し、GPI応答レベルを確認するパターン例です。オフセットを段階的に増加させ、マージン境界を特定します。

local patterns_io_io = {
          -- offset_ms  io_expected  uart_expected
          { offset_ms =  0.000, io_expected = 1, uart_expected = "\x04\x80\x00\x00" },
          { offset_ms =  0.050, io_expected = 1, uart_expected = "\x04\x80\x00\x00" },
          { offset_ms =  0.100, io_expected = 1, uart_expected = "\x04\x80\x00\x00" },
          { offset_ms =  0.200, io_expected = 1, uart_expected = "\x04\x80\x00\x00" },
          { offset_ms =  0.300, io_expected = 0, uart_expected = "\x04\x80\x01\x00" },  -- マージン境界(NG想定)
          { offset_ms =  0.500, io_expected = 0, uart_expected = "\x04\x80\x01\x00" },
      }

例2:IO_UART モード(patterns_io_uart

GPOとUARTをオフセット付きで同時出力するパターン例です。

local patterns_io_uart = {
          -- offset_ms  io_expected  uart_expected
          { offset_ms =  0.000, io_expected = 1, uart_expected = "\x04\x80\x00\x00" },
          { offset_ms =  0.100, io_expected = 1, uart_expected = "\x04\x80\x00\x00" },
          { offset_ms =  0.200, io_expected = 0, uart_expected = "\x04\x80\x01\x00" },  -- マージン境界(NG想定)
          { offset_ms =  0.300, io_expected = 0, uart_expected = "\x04\x80\x01\x00" },
      }