ORiN 協議会 DENSO WAVE Inc.
AIO プロバイダ
CONTEC AIO ボード
Version 1.0.1
ユーザーズ ガイド
July 17,2012
【備考】ORiN 協議会 DENSO WAVE Inc.
【改版履歴】
バージョン 日付 内容 1.0.0.0 2011-7-12 初版. 1.0.1.0 2012-5-29 メタモード追加. 1.0.1 2012-7-17 ドキュメントのバージョンルールを変更.【対応機器】
機種 バージョン 注意事項 AIO-160802L-LPEADI16-4(FIT) USB 搭載 I/O コントロールモジュール(CPU-CA10(USB))と接続する 必要がある.
DAI16-4(FIT) USB 搭載 I/O コントロールモジュール(CPU-CA10(USB))と接続する 必要がある.
ADI12-16(PCI) AIO121601E3-PE
ORiN 協議会 DENSO WAVE Inc.
目次
1. はじめに... 4
2. プロバイダの概要 ... 5
2.1. 概要...5 2.2. メソッド・プロパティ ...6 2.2.1. CaoWorkspace::AddControllerメソッド...6 2.2.2. CaoController::OnMessageイベント ...7 2.2.3. CaoController::AddVariableメソッド ...7 2.2.4. CaoController::get_VariableNamesプロパティ...7 2.2.5. CaoVariable::get_Valueプロパティ ...7 2.2.6. CaoVariable::put_Valueプロパティ ...7 2.3. 変数一覧 ...8 2.3.1. コントローラクラス...8 2.4. エラーコード ...9 2.5. CAO-AIO API対応表 ...93. サンプルプログラム ... 10
ORiN 協議会 DENSO WAVE Inc.
1. はじめに
本書は,CONTEC 製 AIO ボードにアクセスするためのプロバイダである,AIO プロバイダのユーザーズガ イドです.
詳細については,CONTEC 社 API-AIO(WDM)Help(PCI 時) 又は API-USBP(W32)Help(USB 時)を 参照して下さい.
注意: AIOプロバイダを使用するには、AIOボードのAIOデバイスドライバをインストールしなけ れ ば な り ま せ ん . 対 象 機 器 が PCIボ ー ド で あれば API-PAC ( W32) , USB であれば API-USBP(WDM)よりインストールして下さい.ドライバインストール後にプロバイダをレ ジストリ登録する必要があります.レジストリ登録の方法は表 2-1を参照してください.
ORiN 協議会 DENSO WAVE Inc.
2. プロバイダの概要
2.1. 概要
AIO プロバイダは,CAO API を実行するときに対応する CONTEC 社 API を実行します. CAO APIとCONTEC社APIの対応については表 2-5を参照してください. 表 2-1 AIO プロバイダ ファイル名 CaoProvAIO.dll ProgID CaoProv.CONTEC.AIO レジストリ登録1 regsvr32 CaoProvAIO.dll レジストリ登録の抹消 regsvr32 /u CaoProvAIO.dll 1 AIOボードのドライバをインストールしていないと,AIOプロバイダの登録はできません.
ORiN 協議会 DENSO WAVE Inc.
2.2. メソッド・プロパティ
2.2.1. CaoWorkspace::AddControllerメソッド
AIO プロバイダでは Controller オブジェクトの生成時に AIO ボードとの接続(オープン)処理を行います.
書式 AddController( <bstrCtrlName:BSTR>,<bstrProvName:BSTR>,
<bstrPcName:BSTR > [,<bstrOption:BSTR>] ) bstrCtrlName : [in] コントローラ名.
bstrProvName : [in] プロバイダ名.固定値 =” CaoProv.CONTEC.AIO”. bstrPcName : [in] プロバイダの実行マシン名 bstrOption : [in] オプション文字列 マシン名は空文字列で構いません. 以下にオプション文字列に指定するリストを示します. 表 2-2 CaoWorkspace::AddController のオプション文字列 オプション 意味 DeviceName=[<デバイス名>] 接続先ボードのデバイス名※1 デフォルト:“”(指定なし) “”指定なし場合,初めに検出した使用可能なデバイスと接続. 注: AIO ボード ID に対応したデバイス名を指定.※1 ScanCount=[<リトライ回数>] リトライ回数(範囲:0~32767) デフォルト: 4 回 DeviceName オプション:“”(指定なし)の場合,検出可能デバイ スとの接続が失敗した場合のリトライ回数. Interval=[<サンプリング周期>]※2 サンプリング周期(範囲:0~65535) デフォルト: 0(オフ) デジタル入力※1バイト値が変化した場合に OnMessage イベント を取得したい場合にそのサンプリング周期(ms)を指定します. Mask=[<マスク値>]※2 マスク値(範囲:0~255) デフォルト: 255(マスクなし) Interval オプションが有効な時に,入力バイト値をマスクして不 要なイベント発生を抑制します. ※1:詳細については,API-AIO(WDM)Help(PCI 時) 又は API-USBP(W32)Help(USB 時)を参照して下さい. ※2:デジタル入力を搭載した機種でのみ有効です.詳細は、CONTEC 製品マニュアルを参照して下さい.
ORiN 協議会 DENSO WAVE Inc.
2.2.2. CaoController::OnMessageイベント
CaoController クラスの OnMessage イベントとしてクライアントにデータを受け渡します.このとき,Message::Value プロパティに 受信データをそのまま格納します. イベント番号 値 意味 1 デジタル入力バイト値 Interval オプションをオフ(0)以外に設定した場合で デジタル入力※1※2 バイト値が変化した時に,Mask オプションでマスクしてないビットが変化した場合に 発生. ※1:詳細については,API-AIO(WDM)Help(PCI 時) 又は API-USBP(W32)Help(USB 時)を参照して下さい. ※2:デジタル入力を搭載した機種でのみ有効です.詳細は、CONTEC 製品マニュアルを参照して下さい. 2.2.3. CaoController::AddVariableメソッド このメソッドでは,AIO ボードにアクセスする変数オブジェクトを生成します. 変数名には,2.3.1の変数のみ使用することができます.これら以外の変数名を指定したときは,このメソッ ドはエラーを返します.
書式 AddVariable( <bstrName:BSTR > [,<bstrOption:BSTR>] ) bstrName : [in] 任意の名前 bstrOption : [in] オプション文字列(未使用) 2.2.4. CaoController::get_VariableNames プロパティ 2.3.1の変数名リストを取得します. 2.2.5. CaoVariable::get_Value プロパティ 変数に対応する情報を取得します.各変数の実装状況および取得データについては,2.3.1を参照して下 さい. 2.2.6. CaoVariable::put_Valueプロパティ 変数に対応する情報を設定します.各変数の実装状況および設定データについては,2.3.1を参照して下 さい.
ORiN 協議会 DENSO WAVE Inc.
2.3. 変数一覧
2.3.1. コントローラクラス 表 2-3 コントローラクラス ユーザ変数一覧 属性 変数名 データ型 説明 get put AI? ※2 VT_R4 アナログ入力 CH?の電圧値※1を取得します. 変数名の後ろに論理番号※6 を指定します. 例) “AI1” ○ - AO? ※3 VT_R4 アナログ出力 CH?へ指定電圧値※1を出力します. 変数名の後ろに論理番号※6を指定します. 例) “AI1” - ○ DI? ※4 VT_I2 デジタル入力ビット?のビット値(0 or 1)※1を取得します. 変数名の後ろに論理番号※6を指定します. 例) “DI1” ○ - DO?※5 VT_I2 デジタル出力ビット?へビット値(0 or 1)※1を出力します. 変数名の後ろに論理番号※6を指定します. 例) “DO1” - ○ DIB? ※4 VT_I2 デジタル入力バイト?のバイト値(0~255)※1を取得します. 変数名の後ろに論理番号※6を指定します. 例) “DIB1” ○ - DOB? ※5 VT_I2 デジタル出力バイト?へバイト値(0~255)※1を出力します. 変数名の後ろに論理番号※6を指定します. 例) “DOB1” - ○ ※1:詳細については,API-AIO(WDM)Help(PCI 時) 又は API-USBP(W32)Help(USB 時)を参照して下さい. ※2:アナログ入力を搭載した機種でのみ使用可能です.詳細は、CONTEC 製品マニュアルを参照して下さい. ※3:アナログ出力を搭載した機種でのみ使用可能です.詳細は、CONTEC 製品マニュアルを参照して下さい. ※4:デジタル入力を搭載した機種でのみ使用可能です.詳細は、CONTEC 製品マニュアルを参照して下さい. ※5:デジタル出力を搭載した機種でのみ使用可能です.詳細は、CONTEC 製品マニュアルを参照して下さい. ※6:論理番号は 0~99 までの範囲で変数オブジェクトの生成は可能ですが,実際にデータの取得/設定が可能な範囲は 搭載機種の CH 実装数等となります.詳細は、CONTEC 製品マニュアルを参照して下さい. 表 2-4 コントローラクラス システム変数一覧 属性 変数名 データ型 説明 get put @MAX_AI※2 VT_I2 アナログ入力チャンネルの最大数※1を取得します. ○ - @MAX_AO※3 VT_I2 アナログ出力チャンネルの最大数※1を取得します. ○ - @ProcessId VT_I4 プロセス ID を取得します. ○ - @DeviceName VT_BSTR 接続されているボードのデバイス名※1を取得します. ○ - ※1:詳細については,API-AIO(WDM)Help(PCI 時) 又は API-USBP(W32)Help(USB 時)を参照して下さい. ※2:アナログ入力を搭載した機種でのみ使用可能です.詳細は、CONTEC 製品マニュアルを参照して下さい. ※3:アナログ出力を搭載した機種でのみ使用可能です.詳細は、CONTEC 製品マニュアルを参照して下さい.ORiN 協議会 DENSO WAVE Inc.
2.4. エラーコード
AIO プロバイダでは,固有のエラーコードはありません.
ORiN2 共通エラーについては,「ORiN2 プログラミングガイド」のエラーコードの章を参照してください.
2.5. CAO-AIO API対応表
AIO プロバイダは,CaoVariable により値の設定/取得を行う API 関数を実行します.
表 2-5 コントローラクラス,変数クラスと AIO API 対応表
CAO API
クラス::メッソド名 パラメータ名/
変数名
AIO API※
CaoWorkspace::AddController() DeviceName AioQueryDeviceName() AioInit() AioResetProcess() AioResetDevice() CaoWorkspaces::Remove() - AioExit() AI? AioSingleAiEx() DI? AioInputDiBit() DIB? AioInputDiByte() @MAX_AI AioGetAiMaxChannels() @MAX_AO AioGetAoMaxChannels() @ProcessId - CaoVariable::get_Value() @DeviceName - AO? AioSingleAoEx() DO? AioOutputDoBit() CaoVariable::put_Value() DOB? AioOutputDoByte() ※ AIO API の詳細については,CONTEC 社 API-AIO(WDM)Help(PCI 時) 又は
ORiN 協議会 DENSO WAVE Inc.
3. サンプルプログラム
以下に変数“AI1”で、AI CH1 の電圧値を取得するサンプルを示します.
List 3-1
SampleAi.frm
Private caoEng As CaoEngine Private caoAIOl As CaoController Private caoVar As CaoVariable Private Sub Form_Load()
Set caoEng = New CaoEngine
Set caoAIOl = caoEng.Workspaces(0).AddController("SampleAi","CaoProv.CONTEC.AIO","", _ "DeviceName=AIO001")
Set caoVar = caoAIOl.AddVariable("AI1", "") End Sub
Private Sub cmdGet_Click() Dim sngRet As Single sngRet = caoVar.Value Text1.Text = CStr(sngRet) End Sub 以下にサンプリング周期 1 秒で、デジタル入力バイト値が変化した時にイベントを受信するサンプルを示し ます.
List 3-2
SampleEvent.frm
Private caoEng As CaoEngine
Private WithEvents caoAIOl As CaoController Private Sub Form_Load()
Set caoEng = New CaoEngine
Set caoAIOl = caoEng.Workspaces(0).AddController("SampleEvent","CaoProv.CONTEC.AIO", _ "","DeviceName=AIO001,Interval=1000") End Sub
' 受信イベント
Private Sub ctrl_OnMessage(ppCaoMess As CAOLib.ICaoMessage)
' 受信デジタル入力バイト値 text2.Text = ppCaoMess.Value End Sub