第 3 章 アナログ入力制御に関する関数・命令 45
20. AI STOP
Interface Corporation - 46 -
3.1.1 プログラム内でのみ使用できるコマンド
No コマンド名 機能
●割り込み設定関数
1 ON AI ~ GOSUB ~ 割り込み発生時に分岐するサブルーチンを定義します。
3.1.2 トレース実行で使用できないコマンド
No コマンド名 機能
●割り込み設定関数
1 ON AI ~ GOSUB ~ 割り込み発生時に分岐するサブルーチンを定義します。
- 47 - Interface Corporation
3.2 機能説明
3.2.1 初期化機能
AIデバイスの初期化処理を行います。
初期化処理として、割り込み処理の初期化(割り込みを無効)/サンプリング条件の初期化が行われます。
初期化処理を行う場合には、AIOPENコマンドを実行します。
初期化を行うデバイスの指定を行う場合、デバイス番号を指定しますがデバイス番号は使用するAIデバイ スのRSWの情報と以下の定義で関連付けがされています。
デバイス番号 RSW番号
1 0
2 1
3 2
… …
15 E
16 F
下記製品を使用する場合は、デバイス番号は1となります。
・ ソルコン製品
・ タフコン製品
・ マザコン製品
・ I/O付きタッチパネル製品
●プログラム例
100 ' AIデバイスの動作モード設定を行い、オープンする 110 AIOPEN 1, "INPUT=SINGLE"
120 AIRANGE 1, [1;2;3;4], 16
130 ' AIデバイスのポートからアナログデータを1件入力する 140 AI1 = AIPORT(1, 1)
150 PRINT " AI1=";AI1
160 ' AIデバイスをクローズする 170 AICLOSE 1
デバイス番号については、省略することも可能であり省略した場合はデバイス番号が1で設定されます。
プログラム例:
100 ' AIデバイスの動作モード設定を行い、オープンする 110 AIOPEN "INPUT=SINGLE"
120 AIRANGE [1;2;3;4], 16
130 ' AIデバイスのポートからアナログデータを1件入力する 140 AI1 = AIPORT(1)
150 PRINT " AI1=";AI1
160 ' AIデバイスをクローズする 170 AICLOSE
Interface Corporation - 48 -
3.2.2 1件入力機能
AIデバイスから、指定したポートのアナログ入力データを取得することができます。
●処理概要
アナログ入力を行うには、以下の流れでコマンドを実行します。
デバイスのオープン AIOPENコマンドを実行
↓
レンジの設定 AIRANGEコマンドを実行
↓
1件のデータを取得 AIPORTコマンドを実行
↓
デバイスのクローズ AICLOSEコマンドを実行
●プログラム例
100 ' AIデバイスの動作モード設定を行い、オープンする 110 AIOPEN 1, "INPUT=SINGLE"
120 AIRANGE 1, [1;2;3;4], 16
130 ' AIデバイスのポートからアナログデータを1件入力する 140 FOR I = 1 TO 10
150 AI1 = AIPORT(1, 1) 160 AI2 = AIPORT(1, 2) 170 AI3 = AIPORT(1, 3) 180 AI4 = AIPORT(1, 4)
190 PRINT " AI1=";AI1; " AI2=";AI2; " AI3=";AI3; " AI4=";AI4 200 SLEEP 1
210 NEXT I
220 ' AIデバイスをクローズする 230 AICLOSE 1
●サンプリング方式
サンプリング方式とは、サンプリングを行うときの動作方式のことを示します。
サンプリング方式には次の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 -
- 55 - Interface Corporation
●プログラム例
100 INCLUDE "PO001AI.BAS"
110 ' 構造体を定義する 120 STRUCT TAISTATUS ST 130 ' 変数を定義する 140 FLAG = FALSE
150 PRINT "アナログデータのサンプリングを開始します"
160 ' AIデバイスの動作モード設定を行い、オープンする 170 AIOPEN 1, "INPUT=SINGLE"
180 ' AIデバイスの割り込み分岐先を設定する 190 ON AI 1 GOSUB LABEL1
200 ' AIデバイスのポートに対して、トリガ条件を設定する 210 AITRIGGER 1, "TRIGGER=NUM"
220 ' AIデバイスからの割り込みを有効とするか、無効とするかを設定する 230 AIEVENTCONFIG 1, "NUMBER=OFF, STOP=ON"
240 ' AIデバイスの割り込みを有効にする 250 AI ON 1
260 ' アナログデータのサンプリングを開始する 270 AISTART 1, [1;2], 1000, 1000
280 ' 無限ループで処理を待機する 290 WHILE FLAG = FALSE
300 SLEEP 1 310 WEND
320 ' AIデバイスの割り込みを無効にする 330 AI OFF 1
340 ' AIデバイスをクローズする 350 AICLOSE 1
360 ' プログラムを終了する 370 END
380 ' 割り込み発生後の処理 390 LABEL1:
400 EVT = AIEVENT(1) 410 IF EVT = AIEVTSTOP THEN 420 DIM SMPDATA(1999)
430 SMPDATA(0 TO 1999) = AIDATA(1, 1000) 440 FOR I = 0 TO 1998 STEP 2
450 PRINT (I / 2) + 1;"件目のデータ"; " AI1 =";SMPDATA(I); " AI2 =";SMPDATA(I + 1)
460 NEXT I
470 ERASE SMPDATA 480 FLAG = TRUE 490 END IF 500 RETURN
Interface Corporation - 56 -
3.2.5 デジタル入力機能
デジタル入力データは、 そのデバイスが持っている汎用デジタル入力端子の状態をbit単位で表した ものです。
●プログラム例
・bit毎に取得する場合には、AIDIPORTコマンドを使用します。
100 ‘ AIデバイスをオープンする 110 AIOPEN 1
120 ‘ AIデバイスからデジタルデータを入力する 130 DIM INDATA(3)
140 INDATA(0 TO 2) = AIDIPORT(1, [1;2;3] ) 150 PRINT INDATA
160 ‘ AIデバイスをクローズする 170 AICLOSE 1
・バイナリ値として取得する場合には、AIDIPORTSコマンドを使用します。
100 ‘ AIデバイスをオープンする 110 AIOPEN 1
120 ‘ AIデバイスからデジタルデータを入力する 130 INDATA = AIDIPORTS(1, [1;2;3] )
140 PRINT INDATA
150 ‘ AIデバイスをクローズする 160 AICLOSE 1
3.2.6 デジタル出力機能
デジタル出力データは、そのデバイスが持っている汎用デジタル出力端子の状態をbit単位で指定するもので す。
●プログラム例
・bit毎に出力する場合には、AIDOPORTコマンドを使用します。
100 ‘ AIデバイスをオープンする 110 AIOPEN 1
120 ‘ AIデバイスからデジタルデータを入力する 130 AIDOPORT(1, [1;2;3] ) = [1;0;1]
140 ‘ AIデバイスをクローズする 150 AICLOSE 1
・バイナリ値として出力する場合には、AIDOPORTSコマンドを使用します。
100 ‘ AIデバイスをオープンする 110 AIOPEN 1
120 ‘ AIデバイスからデジタルデータを入力する 130 AIDOPORTS(1, [1; 2; 3] ) = &H7
140 ‘ AIデバイスをクローズする 150 AICLOSE 1