第 4 章 アナログ出力制御に関する関数・命令 75
9. AOSTOP
10 AOSTATUS 連続出力の状態を取得します。
●デジタル入出力
11 AODIPORT デジタルデータを入力します。(値をbit毎に返します。) 12 AODIPORTS デジタルデータを入力します。(値をバイナリ値で返します。) 13 AODOPORT デジタルデータを出力します。(値はbit毎に設定します。) 14 AODOPORTS デジタルデータを出力します。(値をバイナリ値で設定します。)
●割り込み
15 AOEVENTCONFIG 割り込みの発生条件を設定します。
16 AOEVENT 割り込みの発生要因を取得します。
17 ON AO ~ GOSUB ~ 割り込み発生時に分岐するサブルーチンを定義します。
18 AO ON 割り込みを有効にします。
19 AO OFF 割り込みを無効にします。
20 AO STOP 割り込みを保留にします。
Interface Corporation - 76 -
4.1.1 プログラム内でのみ使用できるコマンド
No コマンド名 機能
●割り込み
1 ON AO ~ GOSUB ~ 割り込み発生時に分岐するサブルーチンを定義します。
4.1.2 トレース実行で使用できないコマンド
No コマンド名 機能
●割り込み
1 ON AO ~ GOSUB ~ 割り込み発生時に分岐するサブルーチンを定義します。
- 77 - Interface Corporation
4.2 機能説明
4.2.1 初期化機能
AOデバイスの初期化処理を行います。
初期化処理として、割り込み処理の初期化(割り込みを無効)/連続出力条件の初期化が行われます。
初期化処理を行う場合には、AOOPENコマンドを実行します。
初期化を行うデバイスの指定を行う場合、デバイス番号を指定しますがデバイス番号は使用するAIデバイ スのRSWの情報と以下の定義で関連付けがされています。
デバイス番号 RSW番号
1 0
2 1
3 2
… …
11 A
… …
15 E
16 F
下記製品を使用する場合は、デバイス番号は1となります。
・ ソルコン製品
・ タフコン製品
・ マザコン製品
・ I/O付きタッチパネル製品
●プログラム例
100 ' AOデバイスをオープンする 110 AOOPEN 1
120 ' AOデバイスのポートからアナログデータを出力する 130 AOPORT(1, 1)=4095
140 SLEEP 1
150 ' AOデバイスをクローズする 160 AOCLOSE 1
デバイス番号については、省略することも可能であり省略した場合はデバイス番号が1で設定されます。
100 ' AOデバイスをオープンする 110 AOOPEN
120 ' AOデバイスのポートからアナログデータを出力する 130 AOPORT(1)=0
140 SLEEP 1
150 ' AOデバイスをクローズする 160 AOCLOSE
Interface Corporation - 78 -
4.2.2 1件出力機能
指定したポートからアナログ出力を行うことができます。
●処理概要
出力を行うには、以下の流れでコマンドを実行します。
デバイスのオープン AOOPENコマンドを実行
↓
レンジの設定 AORANGEコマンドを実行
※デフォルトレンジで使用する場合は不要
↓
1件のデータを出力 AOPORTコマンドを実行
↓
デバイスのクローズ AOCLOSEコマンドを実行
●プログラム例
100 ' AOデバイスをオープンする 110 AOOPEN 1
120 ' AOデバイスのレンジを±5Vレンジに設定する 130 AORANGE 1, [1;2;3;4], 16
140 ' AOデバイスのポートからアナログデータを出力する 150 AOPORT(1, 1)=0
160 AOPORT(1, 2)=4095 170 AOPORT(1, 3)=0 180 AOPORT(1, 4)=4095 190 SLEEP 1
200 ' AOデバイスをクローズする 210 AOCLOSE 1
複数のポートに対して一つのコマンドで出力させることもできます。
100 ' AOデバイスをオープンする 100 AOOPEN 1
100 PRINT "「Q」または「q」が入力されるまでアナログデータの出力を繰り返します。"
'100 AOデバイスのポートにアナログデータを出力する 100 WHILE INKEY$ <> "Q"
100 AOPORT(1, [1;2;3;4], -10, 10) = [9;0;0;0]
100 SLEEP 1
100 AOPORT(1, [1;2;3;4], -10, 10) = [0;9;0;0]
100 SLEEP 1
100 AOPORT(1, [1;2;3;4], -10, 10) = [0;0;9;0]
100 SLEEP 1
100 AOPORT(1, [1;2;3;4], -10, 10) = [0;0;0;9]
100 SLEEP 1 100 WEND
100 ' AOデバイスをクローズする 100 AOCLOSE 1
AOデバイスの指定したポートから連続出力を行うことができます。
●処理概要
連続出力を行うには、以下の流れでコマンドを実行します。
デバイスのオープン AOOPENコマンドを実行
↓
レンジの設定 AORANGEコマンドを実行
※デフォルトレンジで使用する場合は不要
↓
連続出力データの設定 AODATAコマンドを実行
↓
トリガ条件の設定 AODATAコマンドを実行
↓
連続出力の開始 AOSTARTコマンドを実行
↓
連続出力状態を取得 AOSTATUSコマンドを実行
連続出力を強制停止させたい場合には、AOSTOPコマンドを実行しま す。
↓
デバイスのクローズ AOCLOSEコマンドを実行
※「INCLUDE "PO001AO.BAS"」でPO001AO.BASをインクルードする必要があります。
●データフォーマット
連続出力データフォーマットは以下のフォーマットとなります。
例:ポート数: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番目)
Interface Corporation - 80 -
●プログラム例
100 ' 必要なファイルをインクルードする 110 INCLUDE "PO001AO.BAS"
120 ' 構造体を定義する 130 STRUCT TAOSTATUS ST 140 ' 変数を定義する 150 PI = 3.14159265358979 160 DIM CONTDATA_SIN(1023) 170 DIM CONTDATA_SQUARE(1023) 180 DIM CONTDATA(2047)
190 ' アナログ出力データを作成する 200 FOR I = 0 TO 1023
200 CONTDATA_SIN(I) = 9 * SIN(2 * PI * ( I * 4 / 1023)) 210 IF 0 <= I AND I < 256 THEN
220 CONTDATA_SQUARE(I) = -9
230 ELSEIF 256 <= I AND I < 512 THEN 240 CONTDATA_SQUARE(I) = 9
250 ELSEIF 512 <= I AND I < 768 THEN 260 CONTDATA_SQUARE(I) = -9
270 ELSEIF 768 <= I AND I < 1024 THEN 280 CONTDATA_SQUARE(I) = 9
290 END IF
300 CONTDATA(I * 2) = CONTDATA_SIN(I)
310 CONTDATA(I * 2 + 1) = CONTDATA_SQUARE(I) 320 NEXT I
330 ' AOデバイスをオープンする 340 AOOPEN 1
350 ' AOデバイスのアナログデータ出力値をスケール変換する 360 CONTDATA = AOSCALE(1, CONTDATA, -10, 10)
370 ' アナログデータの連続出力データを設定する 380 AODATA(1, 1024) = CONTDATA(0 TO 2047)
390 ' AOデバイスのポートに対して、トリガ条件を設定する 400 AOTRIGGER 1 , "TRIGGER=FREERUN"
410 ' アナログデータの連続出力を開始する 420 AOSTART 1, [1;2], 1024, 1, 1000
430 ' アナログデータの連続出力の状態を取得する 440 ST = AOSTATUS(1)
450 WHILE ST.SAMPLING <> 0 460 ST = AOSTATUS(1) 470 SLEEP 1
480 WEND
490 ' AOデバイスをクローズする 500 AOCLOSE 1
510 ' 変数の後処理をする
520 ERASE CONTDATA_SIN, CONTDATA_SQUARE, CONTDATA 530 ' プログラムを終了する
540 END
- 81 - Interface Corporation
●トリガ
トリガ条件の設定を行うには、AOTRIGGERコマンドで設定を行います。
トリガ条件として以下のトリガを指定することができます。
1 フリーラン (トリガなし) 2 外部トリガ
・ 立ち上がり
・ 立ち下がり
■外部トリガ
外部トリガは、外部からのトリガ入力信号によりトリガのタイミングを決定します。
外部トリガ入力端子は使用するデバイス、サンプリング方式により異なります。
サンプリング方式 外部トリガ入力端子 I/O方式 EXINT IN端子 FIFO方式 EXTRG IN端子 メモリ方式 EXTRG IN端子 外部トリガ有効エッジ:立ち上がり コマンド例:
AOTRIGGER 1, "TRIGGER= EXTERNAL, MODE= RISE"
外部トリガ有効エッジ:立ち下がり コマンド例:
AOTRIGGER 1, "TRIGGER= EXTERNAL, MODE= FALL"
■フリーラン
設定したデータが全て出力したら終了いたします。
コマンド例:
AOTRIGGER 1, "TRIGGER= FREERUN”
Interface Corporation - 82 -
- 83 - Interface Corporation
●プログラム例
70 ' 必要なファイルをインクルードする 80 INCLUDE "PO001AO.BAS"
90 ' 構造体を定義する 100 STRUCT TAOSTATUS ST 110 ' 変数を定義する 120 PI = 3.14159265358979 130 DIM CONTDATA_SIN(1023) 140 DIM CONTDATA_SQUARE(1023) 150 DIM CONTDATA(2047)
160 BOOL FLAG = FALSE
170 ' アナログ出力データを作成する 180 FOR I = 0 TO 1023
190 CONTDATA_SIN(I) = 9 * SIN(2 * PI * ( I * 4 / 1023)) 200 IF 0 <= I AND I < 256 THEN
210 CONTDATA_SQUARE(I) = -9
220 ELSEIF 256 <= I AND I < 512 THEN 230 CONTDATA_SQUARE(I) = 9
240 ELSEIF 512 <= I AND I < 768 THEN 250 CONTDATA_SQUARE(I) = -9
260 ELSEIF 768 <= I AND I < 1024 THEN 270 CONTDATA_SQUARE(I) = 9
280 END IF
290 CONTDATA(I * 2) = CONTDATA_SIN(I)
300 CONTDATA(I * 2 + 1) = CONTDATA_SQUARE(I) 310 NEXT I
320 PRINT "アナログデータの連続出力を開始します"
330 ' AOデバイスをオープンする 340 AOOPEN 1
350 ' AOデバイスのアナログデータ出力値をスケール変換する 360 CONTDATA = AOSCALE(1, CONTDATA, -10, 10)
370 ' AOデバイスの割り込み分岐先を定義する 380 ON AO 1 GOSUB LABEL1
390 ' AOデバイスからの割り込みを有効とするか、無効とするかを設定する 400 AOEVENTCONFIG 1, "STOP=ON"
410 ' AOデバイスの割り込みを有効にする 420 AO ON 1
430 ' アナログデータの連続出力データを設定する 440 AODATA(1, 1024) = CONTDATA(0 TO 2047)
450 ' AOデバイスのポートに対して、トリガ条件を設定する 460 AOTRIGGER 1, "TRIGGER=FREERUN"
470 ' アナログデータの連続出力を開始する 480 AOSTART 1, [1;2], 1024, 1, 1000 490 ' 割り込みが発生するまで待機する 500 WHILE FLAG = FALSE
510 SLEEP 1 520 WEND
530 ' AOデバイスの割り込みを無効にする 540 AO OFF 1
550 ' AOデバイスをクローズする 560 AOCLOSE 1
570 PRINT "アナログデータの連続出力を終了します"
580 ' 変数の後処理をする
590 ERASE CONTDATA_SIN, CONTDATA_SQUARE, CONTDATA 600 ' プログラムを終了する
610 END
Interface Corporation - 84 - 620
630 ' 割込み発生後の処理 640 LABEL1:
650 EVT = AOEVENT(1)
660 IF EVT = AOEVTSTOP THEN 670 FLAG = TRUE
680 END IF 690 RETURN
- 85 - Interface Corporation
Interface Corporation - 86 -
4.2.7 終了処理機能
AOデバイスの終了処理を行います。
終了処理として、割り込みを無効に設定し、連続出力を停止させます。
終了処理を行う場合には、AOCLOSEコマンドを実行します。
4.2.8 使用するハードウェアによる制限について
使用するハードウェアによって、使用できる機能に制約がある場合があります。
ハードウェア毎の制約事項については、弊社 webページを参照してください。
- 87 - Interface Corporation
4.3 詳細個別説明
1. AOOPEN
命令 i99-BASIC -
機 能 デバイスをオープンします
書式 AOOPEN [ <デバイス番号> ] ①
① < デバイス番号>
(1) , 1~16 ○ 数値
パラ メータ
オープンするデバイスのデバイス番号を設定します。
※デバイス番号については、「4.2.1 初期化機能」を参照してください。
備 考 ・割り込み設定は、オープン直後は無効になります。
・同じデバイス番号のAIデバイスを2重にオープンすることはできません。
使用例 ・「4.2.1 初期化機能」のプログラム例を参照してください。
2. AOCLOSE
命令 i99-BASIC -
機 能 AOデバイスをクローズします
書式 AOCLOSE [ <デバイス番号> ] ①
① < デバイス番号>
(1) , 1~16 ○ 数値
パラ メータ
オープンするデバイスのデバイス番号を設定します。
※デバイス番号については、「4.2.1 初期化機能」を参照してください。
備 考 なし
使用例 ・「4.2.1 初期化機能」のプログラム例を参照してください。
Interface Corporation - 88 -
3. AORANGE
命令 i99-BASIC
-
機 能 レンジを設定します。
書式 AORANGE [<デバイス番号>, ] <ポート番号[]>, <レンジ設定値>
①
②
③
① < デバイス番号>
(1) , 1~16 ○ 数値
レンジを設定するデバイスのデバイス番号を設定します。
※デバイス番号については、「4.2.1 初期化機能」を参照してください。
② < ポート番号[]>
1~N(ボード依存) × 数値・
数値配列 ポート番号を設定します
・複数のポートを設定する場合は連続したポートのみ設定できます。
OK : (1 TO 3) NG : (1;3;4;7)
③ < レンジ設定値>
- × 数値
パラ メータ
出力レンジを設定します。
■ 対応表
設定値 内容
1 電圧 ユニポーラ0~1V 2 電圧 ユニポーラ0~2.5V 3 電圧 ユニポーラ0~5V 4 電圧 ユニポーラ0~10V 5 電圧 ユニポーラ1~5V 11 電流 ユニポーラ0~20mA 12 電流 ユニポーラ4~20mA 13 電流 バイポーラ ±20mA 14 電圧 バイポーラ ±1V 15 電圧 バイポーラ ±2.5V 16 電圧 バイポーラ ±5V 17 電圧 バイポーラ ±10V 28 電流 ユニポーラ0~1mA 29 電流 ユニポーラ0~100mA
備 考 ・本コマンドを実行していない場合、デフォルトのレンジが設定されています。
使用例 ・「4.2.2 1件出力機能」のプログラム例を参照してください。
- 89 - Interface Corporation
4. AOPORT
命令 i99-BASIC
-
機 能 アナログデータを出力します。
書式
AOPORT([ < デバイス番号 > ,] < ポート番号[] > [, <変換スケール最小値, 変換スケール最大値>])=
① ② ③ < 出力値 >
④
① < デバイス番号>
(1) , 1~16 ○ 数値
アナログデータを出力するAOデバイスのデバイス番号を設定します。
※デバイス番号については、「4.2.1 初期化機能」を参照してください。
② < ポート番号[]>
1~N(ボード依存) × 数値・
数値配列 ポート番号を設定します。
ポート番号を数値型変数で指定した場合(1点だけ指定した場合)、指定した1点のポートからデ ジタルデータを出力します。
ポート番号を数値配列型変数で指定した場合、指定したポート番号の数に応じたデジタルデータを 出力します。
③ <変換スケール最小値, 変換スケール最大値>
○ 数値 変換スケールの最小値、最大値を設定します。
– 2,147,483,648 ~ 2,147,483,647の範囲で設定してください。
省略した場合はバイナリ値として扱われます。
④ < 出力値[]>
0,1 × 数値・
数値配列 パラ
メータ
出力するアナログデータをバイナリで設定します。
備 考 ・ 出力値の配列とポート番号の配列は、同一の要素数を持つものを指定する必要があります。
・ 出力値を指定しなかったポートの出力は、以前の出力を継続します。
例:下記の行20でのコマンド実行ではポート2の出力値を指定していませんが、
行10で1を出力するよう設定しているため、ポート2も継続して256が出力されます。
10 AOPORT(1,[1,2]) = [0;256]
20 AOPORT(1,[1]) = 0
使用例 ・「4.2.2 1件出力機能」のプログラム例を参照してください。