Contec API-AIO(98/PC) 取扱説明書

  • こんにちは!私はコンテックのアナログ入出力ボードのドライバ移行ガイドに関する情報を熟知しています。このガイドでは、従来の98/PCドライバから新しいWDMドライバへの移行方法、API関数の違い、デバイスマネージャでの設定方法などを詳しく説明しています。AD16-16U(PCI)EV、ADI12-16(PCI)、DA12-4(PCI)などのモデルに対応していますので、ご不明な点がございましたらお気軽にご質問ください!
  • 98/PCドライバとWDMドライバを同時に使用できますか?
    WDMドライバのデバイスマネージャでの分類は?
    WDMドライバで一度に扱えるデバイス数は?
    WDMドライバのデバイス名の設定方法は?
    AioOpen関数とAioInit関数の違いは?
アナログ⼊出⼒ボード/USB製品用
Windowsドライ 『API-AIO(WDM)』
従来ドライバ 『API-AIO(98/PC)』
からの移⾏ガイド
www.contec.com
2
1. はじめに
WDMドライバについて
98/PCドライバに対して「より使いやすく便利に」を目指したのがWDMドライバです。
お客様に当社製品をお使いいただくにあたってはWDMドライバの使用をお勧めします。
WDMドライバでは、新規OSや新規デバイスへの対応を⾏いますが、98/PCドライバでは
対応できない場合があります。
対応OS (2019年1月現在)
WDMドライバ
98/PCドライバ
対応デバイス製品(2019年1月現在)
WDMドライバ
PCI Expressボード、PCIボード、PCカード(CardBus)、
USBデバイス、Ethernetデバイス、Wirelessデバイス
98/PCドライバ
PCI Expressボード、PCIボード、PCカード(PCMCIA、CardBus)、
ISAバスボード、98(C)バスボード
以降本書では、各ドライバを簡略化して下記で表記いたします。
・従来ドライバ(API-AIO(98/PC)) → 98/PCドライバ
・新ドライバ(API-AIO(WDM)) → WDMドライバ
本書は従来ドライバ(API-AIO(98/PC))から新ドライバ(API-AIO(WDM))への移⾏を
スムーズに⾏うための資料です。
なお、同じパソコン上で98/PCドライバとWDMドライバを同時に使用することはできません。
使用するドライバソフトを変更するには、それまで使用していたドライバソフトをアンインストー
ルする必要があります。
3
2. 98/PCドライバとWDMドライバの相違点
デバイスマネージャでの扱いの違い
98/PCドライバでは「多機能アダプタ」に分類されていましたが、WDMドライバでは
「CONTEC Devices」という新規カテゴリに分類されます。
ソフトウェアの初期設定の違い
98/PCドライバでは、「API-TOOLコンフィグレーション」にて使用するデバイスを登録し、
グループごとにデバイス名を設定していました。WDMドライバでは、デバイスマネージャから
デバイスを選択し、「プロパティ」の「共通設定」タブでデバイスごとにデバイス名を設定します。
※実装したボード名
が表示されます。
AD16-16U(PCI)EV,
ADI12-16(PCI),
DA12-4(PCI) など
《98/PCドライバの場合》
《WDMドライバの場合》
《98/PCドライバの場合》
《WDMドライバの場合》
4
API関数の違い (Visual Basic の例で紹介しますが、他の⾔語でも同様です)
【初期化関数】
98/PCドライバではグループに複数デバイスを登録することが可能でしたが、考え方が
複雑になってしまう側面があり、WDMドライバではデバイスごとに管理する形をとっています。
(例)98/PCドライバ
DrvNo = 20
‘ ドライバ番号に20(アナログEシリーズ)を指定
GrpNo = 1 ‘ グループ番号を指定
Ret = AioOpen ( hDrv, DrvNo, GrpNo )
‘ もしくは
DeviceName = “AIO000” ‘ デバイス名を指定
Ret = AioOpenEx ( DeviceName, hDrv )
(例)WDMドライバ
DeviceName = “AIO000” ‘ デバイス名を指定
Ret = AioInit ( DeviceName , Id )
【終了関数】
関数名および引数に違いがありますが、機能的には相違ありません。
(例)98/PCドライバ
Ret = AioClose ( hDrv )
(例)WDMドライバ
Ret = AioExit ( Id )
項目 API-AIO(98/PC)ドライバ API-AIO(WDM)ドライバ
関数名 AioOpen
AioOpenEx
AioInit
関数の種類 グループ番号を指定する方法と、デバイス
を指定する方法の2種類があります。
1種類のみで、デバイス名を指定する
方法となります。
指定できる
デバイス数
API-TOOLで1つのグループに複数の
デバイスを登録することで、最大4つの
デバイスを1度に扱うことが可能です。
1度に扱えるのは1つのデバイスまでです。
初期化関数後の
デバイス指定方法
初期化関数実⾏後の引数に入ってくる
情報を、デバイスハンドルとして使用します。
初期化関数実⾏後の引数に入ってくる
情報を、デバイスIDとして使用します。
項目 API-AIO(98/PC)ドライバ API-AIO(WDM)ドライバ
関数名 AioClose AioExit
引数 デバイスハンドルで指定します。 デバイスIDで指定します。
5
【入出⼒レンジの設定、設定取得】
98/PCドライバでは入出⼒のレンジ設定関数、設定取得関数のほか、入⼒用設定関数、
出⼒用設定関数がありましたが、WDMドライバでは関数体系が整理されています。
(例)98/PCドライバ
Mode = 0
‘入⼒レンジ設定
Type = 0 ‘全チャネル同時設定
Range = 0 ‘レンジ±10V
Ret = AioSetRange ( hDrv, Mode, Type, 0, Range )
(例)WDMドライバ
Ret = AioSetAiRangeAll ( Id , PM10 ) ‘ PM10(0) : ±10V
【関数実⾏時のパラメータ設定】
98/PCドライバでは構造体(VBはVB6までユーザ定義型)設定を多く用いますが、
WDMドライバは基本的に構造体での設定は⾏いません。
(例)98/PCドライバ
Ret = AioInp ( hDrv, lpAInp ) ‘ lpAInp構造体の設定で入⼒を実⾏
(例)WDMドライバ
Ret = AioMultiAi ( Id , 8 , AiData(0) ) ‘ AiData配列に8チャネル分入⼒
詳細な関数仕様等は、各ドライバのヘルプをご参照ください。
項目 API-AIO(98/PC)ドライバ API-AIO(WDM)ドライバ
関数名 <設定関数>
AioSetRange
AioSetGain
AioRange
<設定関数>
AioSetAiRange
AioSetAiRangeAll
AioSetAoRange
AioSetAoRangeAll
<設定取得関数>
AioGetRange
<設定取得関数>
AioGetAiRange
AioGetAoRange
関数の種類 AioSetRangeは入出⼒両対応、
AioSetGainは入⼒専用、
AioRangeは出⼒専用の設定関数です。
AioGetRangeは入出⼒両対応の
設定取得関数です。
設定関数は入⼒用と出⼒用、チャネル単位
設定用と全チャネル設定用に分かれています。
取得関数は入⼒用と出⼒用があります。
6
3. ドライバ移⾏のステップ
「4.98/PCドライバのアンインストール」
を参照。
ドライバ移⾏のステップ
スタート
98/PCドライバが
残っている?
98/PCドライバ
アンインストール
お客様の
プログラムの移⾏
WDMドライバ
インストール
完了
98/PCドライバをご使用中のPC環境に、
WDMドライバを入れ替える場合は、
98/PCドライバのアンインストールが必要です。
YES
NO
「5.WDMドライバのインストール」を参照。
「6.プログラムの移⾏」を参照。
7
4. 98/PCドライバのアンインストール
1.デバイスマネージャから登録されているデバイスを削除します。
「多機能アダプタ」(またはマルチファンクションアダプタ)登録のハードウェアを削除します。
※右クリックでポップアップメニューから[削除]を選択、またはDELキーで削除できます。
2.INFファイルを削除します。
INFファイルはWindowsフォルダの以下の場所にコピーが作成されます。
このファイルがあると、一旦デバイスを削除しても、⾃動的に再度そのドライバが
インストールされてしまいますので、削除します。
¥Windows¥Inf、または¥Winnt¥Inf フォルダ中にある以下のファイルから、
該当するファイルを削除します。
oem*.inf、oem*.pnf (*は任意の数字)
WindowsがINFファイルの名前を変更してコピーしまうため、ファイルの内容を確認して
削除してください。すべてのoem*.*ファイルを削除した場合は、再度ハードウェアの
インストール時にINFファイルが要求されます。(当社のハードウェアだけとは限りません)
ただし、ファイルがoem1.*しかない場合は、それが該当ファイルになるので削除してください。
INFファイルの確認方法
1).メモ帳(NOTEPAD.EXE)等でoem*.infファイルを開く
2).[version]セクションに以下の⽂字列があるか確認
Class=MultiFunction
provider=%CONTEC%
3).[strings]セクションに使用するハードウェアが記載されていることを確認
4).以上が確認できたらファイルを削除します。
3.Windowsをシャットダウンし、パソコンの電源を切ります。
4.パソコンの電源が切れてから、PCI Expressボードなどのハードウェアをパソコンから外します。
8
5. WDMドライバのインストール
製品によってはドライバソフトを格納したCD/DVD等のメディアが添付していますが、
当社ホームページから最新バージョンをダウンロードして使用されることをお勧めします。
ご使用製品のページから「サポート・ダウンロード」→「ドライバ」にある
“Windows版⾼機能アナログ入出⼒ドライバ API-AIO(WDM) 開発環境(フルセット)”
をダウンロードしてください。
1.ダウンロードした圧縮ファイルを展開してください。
← 圧縮ファイル展開後のイメージ
2.開発環境をインストールしてください。
開発環境にはサンプルプログラムや、関数リファレンスなどが書かれたヘルプファイルがあります。
APIUSBP¥AIO¥Disk1¥setup.exe を実⾏してください。
画面の指示に沿って進めてください。
3.デバイスドライバをインストールしてください。
Windows10:INF¥WDM¥Aio_forWin10¥Setup.exe を実⾏してください。
その他OS:INF¥WDM¥Aio¥Setup.exe を実⾏してください。
画面の指示に沿って進めてください。
下記ではホームページからダウンロードしたファイル(USBデバイス製品用ドライバソフトウェア)を
インストールする内容で記載いたします。
9
4.OSを起動したままデバイスをプラグインします。
デバイスのプラグインにより、デバイスのインストールは⾃動的に⾏われます。
下記はAIO-163202FX-USBを例に説明します。
お使いの製品の解説書をご参照ください。
◆セルフパワー用の5VDC電源との接続
AIO-163202FX-USBはUSBポートからの電源供給 (パスパワー)では使用できません。
5VDC電源を接続して(セルフパワーで)使用する必要があります。
+5VDC入⼒端子を使用して5VDC電源と接続してください。
製品添付のACアダプタ[POA200-20-2]を使用する場合は、入⼒端子にそのまま
接続してください。
◆製品の接続
AIO-163202FX-USBをパソコンのUSBポ-トに接続してください。
当社USBデバイスに搭載しているUSBハブを介しての接続も可能です。
USBケーブルアタッチメントを取り付けると本体からUSBケーブルが抜けにくくなります。
AIO-163202FX-USB
POA200-20-2
USBケーブルアタッチメント
10
5.デバイス名の確認と変更を⾏います。
各関数にアクセスするためには、“AIO000”などのデバイス名を使用します。
このデバイス名の確認や変更はデバイスマネージャから⾏います。
デバイス名の確認はいずれの権限でも可能ですが、デバイス名を変更するには
管理者権限が必要になります。
◆デバイス名の確認方法
デバイスマネージャを起動します。
ドライバを使用するハードウェアは全て、CONTEC Devicesツリーの下に登録されています。
デバイスツリーを開くと、デバイスに割り当てられているデバイス名が表示されます。
◆デバイス名の変更方法
デバイスマネージャを起動します。
デバイスツリーを開き、設定するハードウェアを選択して右クリックしてください。
ポップアップメニューから[プロパティ]をクリックします。
11
デバイスのプロパティページが表示されます。デバイス名の設定は共通設定タブで⾏います。
デバイス名を入⼒して[OK]をクリックしてください。
複数のデバイスを使用する場合、デバイス名は重複しないように設定する必要があります。
デバイス名に使用できる⽂字列は、半角で最大256⽂字までです。
◆デバイスの簡易動作確認
診断プログラムを使用して、ハードウェアの簡易的な動作確認を⾏うことができます。
診断プログラムを起動するには、プロパティページで[診断]ボタンをクリックします。
12
6. プログラムの移⾏
98/PCドライバとWDMドライバの関数対比表を下記に記します。
API-AIO(98/PC)ドライバ API-AIO(WDM)ドライバ
関数名 機能 関数名
《共通関数》
AioOpen ドライバおよびボードの初期化を⾏います。 AioInit
AioOpenEx ドライバおよびボードの初期化を⾏います。
デバイス名での指定ができます。
AioInit
AioClose ドライバの終了処理を⾏います。 AioExit
AioSts ADまたはDA変換の実⾏状態を取得します。 <別表1を参照ください>
AioStop ADまたはDA変換を強制停止します AioStopAi *1
AioSetRange アナログ入出⼒レンジを設定します。 AioSetAiRange
AioSetAiRangeAll
AioSetAoRange
AioSetAoRangeAll
AioGetRange アナログ入出⼒レンジを取得します。 AioGetAiRange
AioGetAoRange
《アナログ入⼒》
AioInp 簡単なアナログ入⼒処理(一回変換)を⾏います。 AioSingleAi
AioSingleAiEx *2
AioMultiAi
AioMultiAiEx *2
AioInpBack メモリ非搭載ボードでの各種アナログ入⼒処理を⾏います。 <別表2を参照ください>
AioInpBdMem メモリ搭載ボードでの各種アナログ入⼒処理を⾏います。 <別表3を参照ください>
AioReadBuf 変換データを取得します。(メモリ搭載ボード用) AioGetAiSamplingData
AioGetAiSamplingDataEx *2
AioSetGain 機能チャネル単位またはグループ単位で、入⼒ゲインの設定を⾏い
ます。
AioSetAiRange
AioSetAiRangeAll
《アナログ出⼒》
AioOut 簡単なアナログ出⼒処理(一回変換)を⾏います。 AioSingleAo
AioSingleAoEx *3
AioMultiAo
AioMultiAoEx *3
AioOutBack 配列データを周期的にアナログ出⼒します。 <別表4を参照ください>
AioRange データの出⼒レンジを設定します。 AioSetAoRange
AioSetAoRangeAll
《デジタル入出⼒》
AioDI デジタル入⼒を⾏います。 AioInputDiByte *4
AioDO デジタル出⼒を⾏います。 AioOutputDoByte *4
*1 WDMドライバには連続アナログ出⼒を停止させるAioStopAo関数もありますが、Eシリーズのボードでは同様に使用することはで
きません。
*2 電圧(電流)値を取得できるため、BinaryToVI 関数を使用する必要はありません。
*3 電圧(電流)値を指定できるため、VIToBinary 関数を使用する必要はありません。
*4 WDMドライバではビット単位の入出⼒関数も用意しています。
13
(前ページからの続き)
API-AIO(98/PC)ドライバ API-AIO(WDM)ドライバ
関数名 機能 関数名
《カウンタ》
AioOpenCntGate カウンタのゲートを開きます。 × 該当関数無し *5
AioCloseCntGate カウンタのゲートを閉じます。 × 該当関数無し *5
AioSetCntData カウンタのデータを設定します。 × 該当関数無し *5
AioGetCntData カウンタのデータを取得します。 × 該当関数無し *5
AioLatchCntData カウンタのデータをラッチします。 × 該当関数無し *5
AioGetCntSts カウンタのステータスを取得します。 × 該当関数無し *5
AioResetCntSts カウンタのステータスをリセットします。 × 該当関数無し *5
AioIsCntDataReady カウンタに初期値がロードされているかどうかを調べます × 該当関数無し *5
AioSetCntCommand カウンタのコントロールワードを設定します。 × 該当関数無し *5
AioSetCntDataB カウンタにデータをバイト単位で設定します。 × 該当関数無し *5
AioGetCntDataB カウンタのデータをバイト単位で取得します。 × 該当関数無し *5
《PCカード専用》
AioIsDataReady ボードメモリにデータが存在するかどうかを調べます。 AioGetAiSamplingCount *6
《その他》
BinaryToVI 入⼒データから電圧値へ変換します。 × 該当関数無し *7
VIToBinary 電圧値から出⼒データへ変換します。 × 該当関数無し *8
LpByte 符号なしバイト変数のアドレス取得を⾏います。(VB用) × 該当関数無し *9
LpWord 符号なしワード変数のアドレス取得を⾏います。(VB用) × 該当関数無し *9
LpDWord 符号なしダブルワード変数のアドレス取得を⾏います。(VB用) × 該当関数無し *9
LpStr ⽂字列変数のアドレス取得を⾏います。(VB用) × 該当関数無し *9
*5 WDMドライバにもカウンタ・タイマ関数はありますが、アナログEシリーズのカウンタ機能(i8254)はサポートしていません。
カウンタ機能を使用する場合には、ボードの置き換えが必要になります。
タイマ機能は、タイマドライバAPI-TIMER(WDM)を併用することでアナログEシリーズでも利用可能です。(一部を除く)
*6 データ有無のフラグではなくデータ数を取得する関数になります。
*7 WDMドライバにはアナログ入⼒を電圧(電流)値で取得する関数があるため、こちらに相当する関数はありません。
*8 WDMドライバにはアナログ出⼒を電圧(電流)値で指定する関数があるため、こちらに相当する関数はありません。
*9 WDMドライバでは関数の仕様上、VBでもこちらに相当する関数を使用する必要はありません。
■API-AIO(WDM)ドライバでサポートしているアナログEシリーズ一覧
AD12-16(PCI)E * AD12-16(PCI)EV AIO-121601E3-PE
AD16-16(PCI)E * AD16-16(PCI)EV AIO-161601E3-PE
AD12-16U(PCI)E AD12-16U(PCI)EH AD12-16U(PCI)EV AIO-121601UE3-PE
AD16-16U(PCI)EH AD16-16U(PCI)EV AIO-161601UE3-PE
ADI12-16(PCI) *
* タイマドライバAPI-TIMER(WDM)非サポートデバイス
14
別表1 AioSts関数の置き換え
98/PCドライバのAioStsは、3つの関数(AioInpBack、AioInpBdMem、AioOutBack)の
実⾏状態を確認する関数です。
どの関数の実⾏状態を確認しているかにより、置き換える関数が異なります。
AioInpBack の実⾏状態を確認している場合、以下の表を参照してください。
AioStsの引数 内容 WDMドライバ関数
引数1 : hDrv デバイスハンドルを指定します -
引数2 : Sts AD変換の実⾏状態を示す値が格納されます AioGetAiStatus 関数を実⾏すると、
引数AiStatusに同様の値が格納されます
※WDMドライバのAiStatusでは複数のステータスが同時にONになります。
例えばデバイス動作中で開始トリガ待ちの場合、AiStatusには 3h が返ります。
引数3 : Cnt AD変換されたサンプリング回数が格納されます AioGetAiSamplingCount 関数を実⾏すると、
引数AiSamplingCountにサンプリング回数が格
納されます
引数4 : Dnum (AioInpBackでは使用しません) -
Stsの値 AiStatusの値
00h : 正常終了 00h : 全ステータスがOFF(停止中/エラー無し)
01h : 外部トリガ待ち 02h : 開始トリガ待ち
02h : サンプリング中 01h : デバイス動作中
03h : サンプリング速度エラー
20000h : サンプリングクロックエラー
80000h : ドライバスペックエラー
04h : 強制終了 -
05h : A/D変換エラー 40000h : AD変換エラー
10h : 指定サンプリング回数格納
10000h : オーバーフロー
API-AIO(98/PC)ドライバ API-AIO(WDM)ドライ
関数名 状態 関数名
AioSts AioInpBack を実⾏中 AioGetAiStatus
AioGetAiSamplingCount
AioInpBdMem を実⾏中 AioGetAiStatus
AioGetAiSamplingCount
AioOutBack を実⾏中 AioGetAoStatus
AioGetAoRepeatCount
AioGetAoSamplingCount
15
AioInpBdMem の実⾏状態を確認している場合、以下の表を参照してください。
AioStsの引数 内容 WDMドライバ関数
引数1 : hDrv デバイスハンドルを指定します -
引数2 : Sts AD変換の実⾏状態を示す値が格納されます AioGetAiStatus 関数を実⾏すると、
引数AiStatusに同様の値が格納されます
※WDMドライバのAiStatusでは複数のステータスが同時にONになります。
例えばデバイス動作中で開始トリガ待ちの場合、AiStatusには 3h が返ります。
引数3 : Cnt AD変換されたデータ数が格納されます AioGetAiSamplingCount 関数を実⾏すると、
引数AiSamplingCountにサンプリング回数が格
納されます
※WDMドライバではデータ数ではなくサンプリング回数が格納されますので注意してください。
例 : チャネル数2、サンプリング回数10回の状態
98/PCの場合:20が返ります
WDMの場合:10が返ります
引数4 : Dnum (AioInpBdMemでは使用しません) -
Stsの値 AiStatusの値
00h : 正常終了 00h : 全ステータスがOFF(停止中/エラー無し)
01h : サンプリング中もしくは外部トリガ待ち
01h : デバイス動作中
02h : 開始トリガ待ち
04h : 強制終了 -
10h : バッファオーバーフローエラー 10000h : オーバーフロー
11h : サンプリングクロックエラー 20000h : サンプリングクロックエラー
10h : 指定サンプリング回数格納
40000h : AD変換エラー
80000h : ドライバスペックエラー
(前ページからの続き)
16
AioStsの引数 内容 WDMドライバ関数
引数1 : hDrv デバイスハンドルを指定します -
引数2 : Sts DA変換の実⾏状態を示す値が格納されます AioGetAoStatus 関数を実⾏すると、
引数AoStatusに同様の値が格納されます
※WDMドライバのAoStatusでは複数のステータスが同時にONになります。
例えばデバイス動作中で開始トリガ待ちの場合、AiStatusには 3h が返ります。
引数3 : Cnt リピート回数が格納されます AioGetAoRepeatCount 関数を実⾏すると、
引数AoRepeatCountに現在のリピート回数が
格納されます
引数4 : Dnum DA変換されたサンプリング回数が格納されます AioGetAoSamplingCount 関数を実⾏すると、
引数AoSamplingCountにサンプリング回数が格
納されます
Stsの値 AiStatusの値
00h : 正常終了 00h : 全ステータスがOFF(停止中/エラー無し)
01h : 外部トリガ待ち 02h : 開始トリガ待ち
02h : サンプリング中 01h : デバイス動作中
03h : サンプリング速度エラー
20000h : サンプリングクロックエラー
80000h : ドライバスペックエラー
04h : 強制終了 -
05h : A/D変換エラー 40000h : DA変換エラー
10h : 指定サンプリング回数出⼒
(前ページからの続き)
AioOutBack の実⾏状態を確認している場合、以下の表を参照してください。
17
AioInpBack関数は、第2引数のInpModeでサンプリングモードを指定しています。
AINPB構造体で設定している内容の置き換えについては、設定しているサンプリングモード
(InpModeの値)を確認の上、次ページを参照ください。
別表2 AioInpBack関数の置き換え
以下の表を参考に、AioInpBackで指定している引数の値をご確認ください。
InpMode モードの説明 サンプリング開始条件 サンプリング停止条件
0
タイマを使用して周期的な変換を
⾏う
ソフトウェアコマンド
(AioInpBackで即開始)
変換データの格納終了
(AioStopコマンドによる強制停止も可能)
1
外部トリガ(外部クロック)による変
換を⾏う
ソフトウェアコマンド
(AioInpBackで即開始)
変換データの格納終了
(AioStopコマンドによる強制停止も可能)
2
外部トリガで開始し、タイマを使用
して周期的な変換を⾏う
外部トリガ
変換データの格納終了
(AioStopコマンドによる強制停止も可能)
AioInpBackの引数 内容 WDMドライバ
引数1 : hDrv デバイスハンドルを指定します -
引数2 : InpMode サンプリングモードを指定します ※下記を参照ください
引数3 : lpAInpB AINPB構造体のアドレスを指定します ※下記を参照ください
引数4 : hOK 変換完了イベントメッセージハンドルを指定します AioSetAiEvent *1
引数5 : wMegOK 変換完了イベントの識別用メッセージ番号を指定します AioSetAiEvent *1*3
引数6 : hExcp 例外発⽣イベントメッセージハンドルを指定します AioSetAiEvent *2
引数7 : wMegExcp 例外発⽣イベントの識別用メッセージ番号を指定します AioSetAiEvent *2*3
*1 デバイス動作終了イベントを有効にします。 コマンドによる強制終了用のイベントは用意されていません。
*2 イベントを発⽣させたいエラーイベントを有効にします
*3 WDMドライバのAioSetAiEventではメッセージ番号ではなくメッセージパラメータでイベント発⽣要因を識別します。
18
AINPB構造体設定の置き換え
API-AIO(98/PC)ドライバ API-AIO(WDM)ドライ
構造体メンバ 内容 関数名
InpBuf データを格納する配列 - *1
InpChNo チャネル番号 AioSetAiChannelSequence *2
Channels チャネル数 AioSetAiChannels *3
Scan サンプリング回数 AioSetAiStopTimes
TimType タイマの種類 × 該当関数無し ボード搭載タイマのみ対応し、システムタイマは使用できません
Tim タイマの設定値 AioSetAiSamplingClock *4
(前ページからの続き)
*1 ⾃動的に配列にデータが格納される機能はありません
サンプリング中またはサンプリング終了後にAioGetAiSamplingDataを実⾏し、任意の配列にデータを取り込みます。
AioGetAiSamplingDataExを使用すれば、電圧値(または電流値)でデータを取り込むことも可能です
*2 Ch0のみ、またはCh0〜連続するチャネルで使用する場合は実⾏不要です。それ以外の場合にチャネル番号を指定します。
AI-1204Z-PCIを使用する場合はAioSetAiChannel関数を使用します
*3 Ch0のみ、またはCh0〜連続するチャネルで使用するCh数を設定します。
それ以外のChを使用したい場合は、AioSetAiChannelSequenceを組み合わせて使用します。
*4 μSec単位での設定のみとなります。
各モードの補足事項
◆InpMode = 0 の場合
上表の各関数を実⾏して設定を⾏います。
◆InpMode = 1 の場合
外部トリガ(外部クロック)でのサンプリングを⾏うため、AioSetAiClockTypeで
外部クロック(1)に設定します。
この場合、AioSetAiSamplingClockを実⾏する必要はありません。
◆InpMode = 2 の場合
外部トリガで変換を開始するため、AioSetAiStartTriggerで
外部トリガ⽴ち上がり(1)または外部トリガ⽴ち下がり(2)を設定します。
◆各モード共通
サンプリング設定を⾏った後、AioStartAi関数を実⾏することでサンプリングが開始します。
また、InpMode = 2の場合、外部トリガ(開始トリガ)待ちになります。
19
AioInpBdMem関数は、第2引数のInpModeでサンプリングモードを指定しています。
サンプリングモードによって設定内容(第3引数のlpAInpで指定する構造体の内容)が
異なりますので、置き換えるWDM関数も違ってきます。
設定しているサンプリングモード(InpModeの値)を確認の上、次ページからの表を参照ください。
サンプリング設定を⾏った後、AioStartAi関数を実⾏することでサンプリングが開始します。
ただし、InpMode = 0, 2の場合、外部トリガ(開始トリガ)待ちになります。
別表3 AioInpBdMem関数の置き換え
以下の表を参考に、AioInpBdMemで指定している引数の値をご確認ください。
InpMode サンプリングモード サンプリング開始条件 サンプリング停止条件
0 外部信号スタートモード
外部トリガ⽴ち上がり たは
外部トリガ⽴ち下がり
変換データの格納終了
(AioStopコマンドによる強制停止も可能)
1 外部信号ストップモード
ソフトウェアコマンド
(AioInpBdMemで即開始)
外部トリガ⽴ち上がり たは
外部トリガ⽴ち下がり
(AioStopコマンドによる強制停止も可能)
2 アナログトリガスタートモード 指定チャネルの入⼒値比較
変換データの格納終了
(AioStopコマンドによる強制停止も可能)
3 アナログトリガストップモード
ソフトウェアコマンド
(AioInpBdMemで即開始)
指定チャネルの入⼒値比較
(AioStopコマンドによる強制停止も可能)
4 ソフトウェアスタートモード
ソフトウェアコマンド
(AioInpBdMemで即開始)
変換データ格納終了 または
外部トリガ⽴ち上がり
(AioStopコマンドによる強制停止も可能)
AioInpBdMemの引数 内容 WDMドライバ
引数1 : hDrv デバイスハンドルを指定します -
引数2 : InpMode サンプリングモードを指定します ※下記を参照ください
引数3 : lpAInp サンプリングモードに応じた構造体を指定します ※下記を参照ください
引数4 : hOK 変換完了イベントメッセージハンドルを指定します AioSetAiEvent *1
引数5 : wMegOK 変換完了イベントの識別用メッセージ番号を指定します AioSetAiEvent *1*3
引数6 : hExcp 例外発⽣イベントメッセージハンドルを指定します AioSetAiEvent *2
引数7 : wMegExcp 例外発⽣イベントの識別用メッセージ番号を指定します AioSetAiEvent *2*3
*1 デバイス動作終了イベントを有効にします。 コマンドによる強制終了用のイベントは用意されていません。
*2 イベントを発⽣させたいエラーイベントを有効にします
*3 WDMドライバのAioSetAiEventではメッセージ番号ではなくメッセージパラメータでイベント発⽣要因を識別します。
20
サンプリングモード0 : 外部信号スタートモード AINPMD0構造体設定の置き換え
API-AIO(98/PC)ドライバ API-AIO(WDM)ドライ
構造体メンバ 内容 関数名
InpChNo チャネル番号 AioSetAiChannelSequence *1
Channels チャネル数 AioSetAiChannels *2
Scan サンプリング回数 AioSetAiStopTimes
TrgType 開始トリガタイプ AioSetAiStartTrigger
DelayNum トリガディレイ回数 × 該当関数無し この回数も含むサンプリング回数を設定し不要データを無視
ScanClk スキャンクロック周期 AioSetAiScanClock
SmpClk サンプリングクロック周期 AioSetAiSamplingClock *3
DataFmt 変換データ形式 × 該当関数無し WDMドライバは 0:オフセット(ストレート)バイナリ のみ対応
MemBufType バッファメモリ形式 AioSetAiMemoryType
IntFactor 割り込み要因 AioSetAiEvent *4
RptNum リピート回数 AioSetAiRepeatTimes *5
(前ページからの続き)
*1 Ch0のみ、またはCh0〜連続するチャネルで使用する場合は実⾏不要です。それ以外の場合にチャネル番号を指定します。
AI-1204Z-PCIを使用する場合はAioSetAiChannel関数を使用します
*2 Ch0のみ、またはCh0〜連続するチャネルで使用するCh数を設定します。
それ以外のChを使用したい場合は、AioSetAiChannelSequenceを組み合わせて使用します。
*3 SmpClkに -1 を設定していた場合、AioSetAiClockTypeで外部クロック(1)に設定します。
*4 対応する割り込み要因(イベント要因)については以下の表を参照ください
WDMドライバでは複数の要因を同時に有効にすることができます。
*5 WDMドライバではリピート回数の考え方が異なりますのでご注意ください。
98/PCドライバでは「追加する回数」を設定しますが、WDMドライバでは「追加分を含めた回数」を設定します。
98/PCドライバ IntFactor WDMドライバ AioSetAiEvent - AiEvent
0 : 割り込み未使用 0h : イベント未使用
1 : ハーフフル割り込み 80h : 指定サンプリング回数格納イベント *
2 : サンプリング終了 20h : デバイス動作終了イベント
6 : デフォルト要因 -
10h : リピート終了イベント
10000h : オーバーフローイベント
20000h : サンプリングクロックエラーイベント
40000h : AD変換エラーイベント
*WDMではサンプリング回数を指定する必要があります
リピート設定 98/PCドライバ WDMドライバ
リピート無し (設定サンプリング回数で終了) 0 を設定 1 を設定(初期値)
サンプリングを全部で3回繰り返す場合 2 を設定 3 を設定
無限にリピートする場合 - (非対応) 0 を設定
サンプリングモード0相当で動作するための他のWDMドライバ関数設定
停止条件 AioSetAiStopTrigger 設定回数変換終了(0)を設定します
/