第 3 章 アナログ入力制御に関する関数・命令 45
3.2 機能説明
3.2.3 サンプリング機能
●サンプリング方式
サンプリング方式とは、サンプリングを行うときの動作方式のことを示します。
サンプリング方式には次の4種類があります。
方式 説明
I/O方式 パソコンへのハードウェア割り込みで、1件ずつデータをサンプリングする方 式です。
FIFO方式 デバイス上のFIFOメモリにサンプリングデータを蓄え、一定件数のサンプリ ングデータがFIFOに蓄えられるとパソコンにハードウェア割り込みをかけ、
必要な件数分のサンプリングデータをFIFOから取り出す方式です。
高速なサンプリングを実現できます。
メモリ方式 デバイス上のメモリを利用してサンプリングを行う方式です。
非常に高速なサンプリングを行うことができます。
バスマスタ方式 PCIバスマスタ機能を使用したDMA転送を利用してサンプリングを行う方式で す。
デバイスからパソコン上のメモリに直接データが転送されるため、非常に高 速なサンプリングを行うことができます。
●トリガディレイ
トリガ機能が設定されている場合、トリガとなったタイミングからサンプリングを終了させるタイミングをず らせる機能です。
トリガディレイについては、サンプリング件数とディレイ件数の関係で以下のような動作となります。
トリガ位置 サンプリング件数を n、ディレイ件数を d とした時
d == 0
d > 0
d < 0
n
n d
n
d
サンプリング結果として得られるデータ
Interface Corporation - 50 -
●トリガ
トリガ条件の設定を行うには、AITRIGGERコマンドで設定を行います。
トリガ条件として以下のトリガを指定することができます。
1 フリーラン (トリガなし) 2 レベルトリガ
・ 立ち上がり
・ 立ち下がり 3 レンジトリガ
・ イン
・ アウト 4 外部トリガ
・ 立ち上がり
・ 立ち下がり 5 指定件数
■フリーラン (トリガなし)
AISTOPコマンドが実行されるまでサンプリングは実行されます。
バッファとしては、AISTARTコマンドで指定したサンプリング件数のバッファをリングに使用されます。
コマンド例:
AITRIGGER 1, "TRIGGER=FREERUN"
■レベルトリガ(立ち上がり)
トリガレベル_1で設定したレベルより、低いレベルから高いレベルへ変化が起こったときをトリガと します。トリガレベル_2の設定はできません。
コマンド例:
AITRIGGER 1, "TRIGGER= LEVEL, MODE= RISE", 1, 5.0
■レベルトリガ(立ち下がり)
トリガレベル_1で設定したレベルより、高いレベルから低いレベルへ変化が起こったときをトリガと します。
トリガレベル_2の設定はできません。
コマンド例:
AITRIGGER 1, "TRIGGER= LEVEL, MODE= FALL", 1, 5.0
○
トリガポイント トリガレベル_1
○
トリガポイント
トリガレベル_1
- 51 - Interface Corporation
■レベルトリガ(立ち上がり + 立ち下がり)
レベルトリガの立ち上がりと立ち下がりをORで指定することができます。
コマンド例:
AITRIGGER 1, "TRIGGER= LEVEL, MODE= RISE+FALL ", 1, 5.0
■レンジトリガ(アウト)
トリガレベル_1, トリガレベル_2の2つのレベルを設定し、2つのレベル範囲内から範囲外へと変化が起 こった時をトリガとします。
トリガレベル_2をトリガ範囲の上限レベル、トリガレベル_1をトリガ範囲の下限レベルとして設定して ください。
コマンド例:
AITRIGGER 1, "TRIGGER= RANGE, MODE=OUT ", 1, 0.0, 2.5
■レンジトリガ(イン)
トリガレベル_1, トリガレベル_2の2つのレベルを設定し2つのレベル範囲外から範囲内へと変化が起こ った時をトリガとします。
トリガレベル_2をトリガ範囲の上限レベル、トリガレベル_1をトリガ範囲の下限レベルとして設定して ください。
コマンド例:
AITRIGGER 1, "TRIGGER= RANGE, MODE=IN", 1, 0.0, 2.5
○ ○
トリガポイント1
トリガポイント
2トリガレベル_1
トリガエリア
○
○
トリガレベル_2 トリガレベル_1
トリガエリア
○
○
トリガレベル_2
トリガレベル_1
Interface Corporation - 52 -
■外部トリガ
外部トリガは、外部からのトリガ入力信号によりトリガのタイミングを決定します。
外部トリガ入力端子は使用するデバイス、サンプリング方式により異なります。
サンプリング方式 外部トリガ入力端子 I/O方式 EXINT IN端子 FIFO方式 EXTRG IN端子 メモリ方式 EXTRG IN端子 バスマスタ方式 EXTRG IN端子 外部トリガ有効エッジ:立ち上がり コマンド例:
AITRIGGER 1, "TRIGGER= EXTERNAL, MODE= RISE"
外部トリガ有効エッジ:立ち下がり コマンド例:
AITRIGGER 1, "TRIGGER= EXTERNAL, MODE= FALL"
■指定件数
AISTARTコマンドで指定したサンプリング件数のサンプリングが行なわれると終了します。。
コマンド例:
AITRIGGER 1, "TRIGGER= NUM"
●処理概要
サンプリングを行うには、以下の流れでコマンドを実行します。
デバイスのオープン AIOPENコマンドを実行
↓
レンジの設定 AIRANGEコマンドを実行
↓
トリガ条件の設定 AITRIGGERコマンドを実行
↓
サンプリングの開始 AISTARTコマンドを実行
↓
サンプリング状態を取得 AISTATUSコマンドを実行
↓
サンプリングデータの取得 AIDATAコマンドを実行
↓
デバイスのクローズ AICLOSEコマンドを実行
※「INCLUDE "PO001AI.BAS"」でPO001AI.BASをインクルードする必要があります。
- 53 - Interface Corporation
●データフォーマット
取得できるデータフォーマットは以下のフォーマットとなります。
例:ポート数:5 、サンプリング件数:100件の場合
サンプリング件数 ポート毎のサンプリング件数 配列要素番号 ポート1の1件目 配列(1番目) ポート2の1件目 配列(2番目)
: :
1件目 ←
ポート5の1件目 配列(5番目) ポート1の2件目 配列(6番目) ポート2の2件目 配列(7番目)
: :
2件目 ←
ポート5の2件目 配列(10番目)
:
:
:
:
:
:
:
: ポート1の100件目 配列(496番目) ポート2の100件目 配列(497番目)
: :
100件目 ←
ポート5の100件目 配列(500番目)
●プログラム例
100 ' 必要なファイルをインクルードする 110 INCLUDE "PO001AI.BAS"
120 ' 構造体を定義する 130 STRUCT TAISTATUS ST
140 ' AIデバイスの動作モード設定を行い、オープンする 150 AIOPEN 1 "INPUT=SINGLE"
160 ' AIデバイスのポートに対して、トリガ条件を設定する 170 AITRIGGER 1, "TRIGGER=NUM"
180 ' アナログデータの入力サンプリングを開始する 190 AISTART 1, [1;2], 1000, 1000
200 ' AIデバイスからのアナログデータ入力サンプリングの状態を取得する 210 ST = AISTATUS (1)
220 WHILE ST.SAMPLING <> 0 230 ST = AISTATUS(1) 240 SLEEP 1
250 WEND
260 ' アナログデータの入力サンプリングデータを取得する 270 DIM SMPDATA(1999)
280 SMPDATA = AIDATA(1, 1000) 290 FOR I = 0 TO 1999 STEP 2
300 PRINT (I / 2) + 1;"件目のデータ"; " AI1 =";SMPDATA(I); " AI2 =";SMPDATA(I + 1) 310 NEXT I
320 ERASE SMPDATA
330 ' AIデバイスをクローズする 340 AICLOSE 1
Interface Corporation - 54 -