AIO プロバイダユーザーズガイド 1 AIO プロバイダ CONTEC AIO ボード Version 1.0.1 ユーザーズガイド July 17,2012 備考
AIO プロバイダユーザーズガイド 2 改版履歴 バージョン 日付 内容 1.0.0.0 2011712 初版. 1.0.1.0 2012529 メタモード追加. 1.0.1 2012717 ドキュメントのバージョンルールを変更. 対応機器 機種バージョン注意事項 AIO160802LLPE ADI164(FIT) DAI164(FIT) ADI1216(PCI) AIO121601E3PE USB 搭載 I/O コントロールモジュール (CPUCA10(USB)) と接続する必要がある. USB 搭載 I/O コントロールモジュール (CPUCA10(USB)) と接続する必要がある.
AIO プロバイダユーザーズガイド 3 目次 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. CAOAIO API 対応表...9 3. サンプルプログラム... 10
AIO プロバイダユーザーズガイド 4 1. はじめに 本書は,CONTEC 製 AIO ボードにアクセスするためのプロバイダである,AIO プロバイダのユーザーズガイドです. 詳細については,CONTEC 社 APIAIO(WDM)Help(PCI 時 ) 又は APIUSBP(W32)Help(USB 時 ) を参照して下さい. 注意 : AIOプロバイダを使用するには AIOボードのAIOデバイスドライバをインストールしなければなりません. 対象機器がPCIボードであればAPIPAC(W32),USBであれば APIUSBP(WDM) よりインストールして下さい. ドライバインストール後にプロバイダをレジストリ登録する必要があります. レジストリ登録の方法は表 21を参照してください.
AIO プロバイダユーザーズガイド 5 2. プロバイダの概要 2.1. 概要 AIO プロバイダは,CAO API を実行するときに対応する CONTEC 社 API を実行します. CAO APIとCONTEC 社 APIの対応については表 25を参照してください. 表 21 AIO プロバイダ ファイル名 ProgID 1 レジストリ登録 レジストリ登録の抹消 CaoProvAIO.dll CaoProv.CONTEC.AIO regsvr32 CaoProvAIO.dll regsvr32 /u CaoProvAIO.dll 1 AIO ボードのドライバをインストールしていないと,AIO プロバイダの登録はできません.
AIO プロバイダユーザーズガイド 6 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] オプション文字列 マシン名は空文字列で構いません. 以下にオプション文字列に指定するリストを示します. 表 22 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: 詳細については,APIAIO(WDM)Help(PCI 時 ) 又は APIUSBP(W32)Help(USB 時 ) を参照して下さい. 2: デジタル入力を搭載した機種でのみ有効です. 詳細は CONTEC 製品マニュアルを参照して下さい.
AIO プロバイダユーザーズガイド 7 2.2.2. CaoController::OnMessage イベント CaoController クラスの OnMessage イベントとしてクライアントにデータを受け渡します. このとき,Message::Value プロパティに 受信データをそのまま格納します. イベント番号値意味 1 デジタル入力バイト値 Interval オプションをオフ (0) 以外に設定した場合で デジタル入力 1 2 バイト値が変化した時に,Mask オプションでマスクしてないビットが変化した場合に発生. 1: 詳細については,APIAIO(WDM)Help(PCI 時 ) 又は APIUSBP(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を参照して下さい.
AIO プロバイダユーザーズガイド 8 2.3. 変数一覧 2.3.1. コントローラクラス 表 23 コントローラクラスユーザ変数一覧 変数名データ型説明 属性 get put AI? 2 VT_R4 アナログ入力 CH? の電圧値 1 を取得します. 例 ) AI1 AO? 3 VT_R4 アナログ出力 CH? へ指定電圧値 1 を出力します. 例 ) AI1 DI? 4 VT_I2 デジタル入力ビット? のビット値 (0 or 1) 1 を取得します. 例 ) DI1 DO? 5 VT_I2 デジタル出力ビット? へビット値 (0 or 1) 1 を出力します. 例 ) DO1 DIB? 4 VT_I2 デジタル入力バイト? のバイト値 (0~255) 1 を取得します. 例 ) DIB1 DOB? 5 VT_I2 デジタル出力バイト? へバイト値 (0~255) 1 を出力します. 例 ) DOB1 1: 詳細については,APIAIO(WDM)Help(PCI 時 ) 又は APIUSBP(W32)Help(USB 時 ) を参照して下さい. 2: アナログ入力を搭載した機種でのみ使用可能です. 詳細は CONTEC 製品マニュアルを参照して下さい. 3: アナログ出力を搭載した機種でのみ使用可能です. 詳細は CONTEC 製品マニュアルを参照して下さい. 4: デジタル入力を搭載した機種でのみ使用可能です. 詳細は CONTEC 製品マニュアルを参照して下さい. 5: デジタル出力を搭載した機種でのみ使用可能です. 詳細は CONTEC 製品マニュアルを参照して下さい. 6: 論理番号は 0~99 までの範囲で変数オブジェクトの生成は可能ですが, 実際にデータの取得 / 設定が可能な範囲は搭載機種の CH 実装数等となります. 詳細は CONTEC 製品マニュアルを参照して下さい. 表 24 コントローラクラスシステム変数一覧 変数名データ型説明 get 属性 put @MAX_AI 2 VT_I2 アナログ入力チャンネルの最大数 1 を取得します. @MAX_AO 3 VT_I2 アナログ出力チャンネルの最大数 1 を取得します. @ProcessId VT_I4 プロセス ID を取得します. @DeviceName VT_BSTR 接続されているボードのデバイス名 1 を取得します. 1: 詳細については,APIAIO(WDM)Help(PCI 時 ) 又は APIUSBP(W32)Help(USB 時 ) を参照して下さい. 2: アナログ入力を搭載した機種でのみ使用可能です. 詳細は CONTEC 製品マニュアルを参照して下さい. 3: アナログ出力を搭載した機種でのみ使用可能です. 詳細は CONTEC 製品マニュアルを参照して下さい.
AIO プロバイダユーザーズガイド 9 2.4. エラーコード AIO プロバイダでは, 固有のエラーコードはありません. ORiN2 共通エラーについては, ORiN2 プログラミングガイド のエラーコードの章を参照してください. 2.5. CAOAIO API 対応表 AIO プロバイダは,CaoVariable により値の設定 / 取得を行う API 関数を実行します. 表 25 コントローラクラス, 変数クラスと AIO API 対応表 CAO API クラス :: メッソド名 パラメータ名 / 変数名 AIO API CaoWorkspace::AddController() DeviceName AioQueryDeviceName() AioInit() AioResetProcess() AioResetDevice() CaoWorkspaces::Remove() AioExit() CaoVariable::get_Value() AI? AioSingleAiEx() DI? AioInputDiBit() DIB? AioInputDiByte() @MAX_AI AioGetAiMaxChannels() @MAX_AO AioGetAoMaxChannels() @ProcessId @DeviceName CaoVariable::put_Value() AO? AioSingleAoEx() DO? AioOutputDoBit() DOB? AioOutputDoByte() AIO API の詳細については,CONTEC 社 APIAIO(WDM)Help(PCI 時 ) 又は APIUSBP(W32)Help(USB 時 ) を参照して下さい.
AIO プロバイダユーザーズガイド 10 3. サンプルプログラム 以下に変数 AI1 で AI CH1 の電圧値を取得するサンプルを示します. List 31 SampleAi.frm Private caoeng As CaoEngine Private caoaiol As CaoController Private caovar As CaoVariable Private Sub Form_Load() End Sub Set caoeng = New CaoEngine Set caoaiol = caoeng.workspaces(0).addcontroller("sampleai","caoprov.contec.aio","", _ "DeviceName=AIO001") Set caovar = caoaiol.addvariable("ai1", "") Private Sub cmdget_click() Dim sngret As Single sngret = caovar.value Text1.Text = CStr(sngRet) End Sub 以下にサンプリング周期 1 秒で デジタル入力バイト値が変化した時にイベントを受信するサンプルを示し ます. List 32 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) End Sub ' 受信デジタル入力バイト値 text2.text = ppcaomess.value