転送方式にデバイスバッファモードを使用する場合、AioSetAoSamplingData関数またはAioSetAoSamplingDataEx関数を使用して、出力データを設定します。
AioSetAoSamplingData関数は変換データをバイナリ値で設定し、AioSetAoSamplingDataEx関数は変換データを電圧または電流値で設定します。
出力データの設定
Ret = AioSetAoSamplingData ( Id , AoSamplingTimes , AoData )
Ret = AioSetAoSamplingDataEx ( Id , AoSamplingTimes , AoData )
AoSamplingTimesにはジェネレーティング回数を設定します。
ジェネレーティング回数は変換の行われる回数を意味し、変換に使用するチャネル数には無関係です。
デバイス(ドライバ)メモリは256×1024データ分の有限メモリであるため、メモリに格納可能なジェネレーティング総数は使用するチャネルによって変わります。
チャネル数 |
メモリに格納可能な最大ジェネレーティング数 |
1 |
256×1024/1 = 262144 |
2 |
256×1024/2 = 131072 |
: |
|
8 |
256×1024/8 = 32768 |
: |
|
16 |
256×1024/16 = 16384 |
AoDataには、出力データを格納した配列のアドレスを指定します。
AioSetAoSamplingDataの場合、アナログ出力データをバイナリで指定し、範囲は12ビット分解能デバイスの場合で0~4095、16ビット分解能デバイスの場合で0~65535です。
AioSetAoSamplingDataExの場合、アナログ出力データを電圧または電流値で指定します。
配列は必ずAioSetAoChannels関数で設定した[
チャネル数×ジェネレーティング回数 ]分のサイズを確保してください。
出力データは以下の順序で設定します。
出力方式がトランスペアレント出力の場合、出力は0, 1, 2,...の順で行われます。
出力方式が同期出力の場合、データは同時に出力されます。
AioSetAoSamplingData、AioSetAoSamplingDataEx関数は、使用するメモリ形式によって使用方法が異なります。
電圧からバイナリ値への変換
出力データはバイナリ値で指定します。
電圧値からバイナリ値への変換は以下の式で行います。
バイナリ値 = 分解能 × ( 電圧値 - レンジの最小値 ) ÷ ( レンジの最大値 - レンジの最小値 )
分解能は12ビットの場合4095、16ビットの場合65535です。
例)アナログ出力レンジ:±5V、分解能:12ビット、2.5Vをバイナリ値に変換
バイナリ値 = 4095 × ( 2.5 - (-5) ) ÷ ( 5 - (-5) ) ≒ 3071
電流からバイナリ値への変換
出力データはバイナリ値で指定します。
電流値からバイナリ値への変換は以下の式で行います。
バイナリ値 = 分解能 × ( 電流値 - レンジの最小値 ) ÷ ( レンジの最大値 - レンジの最小値 )
分解能は12ビットの場合4096、16ビットの場合65536です。
例)アナログ出力レンジ:4~20mA、分解能:12ビット、10mAをバイナリ値に変換
バイナリ値 = 4096 × ( 10.0 - 4 ) ÷ (20 -4 ) = 1536