IFUSBIO(I/O-CD) DPC-0403 CoolIOs USB 製品用 Windows ドライバ Help for Windows www.interface.co.jp
目次 第 1 章はじめに 3 1.1 概要...3 1.2 特長...3 第 2 章製品仕様 4 2.1 基本仕様...4 2.2 製品構成...5 第 3 章導入方法 7 3.1 インストール手順...7 3.2 実行手順...7 第 4 章リファレンス 10 4.1 関数一覧...10 4.2 関数個別説明...11 4.3 戻り値一覧...19 第 5 章ハードウェア固有情報 20 5.1 URS-226120...20 5.2 URS-252102...24 5.3 URS-286111...29 5.4 URS-294133...33 5.5 URS-323416...42 5.6 URS-343416...47 5.7 URS-631504...53 第 6 章サンプルプログラム 73 6.1 実行手順...73 6.2 サンプルプログラム一覧...74 第 7 章ユーティリティ 75 7.1 IfUsbIoUtil...75 第 8 章重要な情報 79 2
第 1 章はじめに 1.1 概要 DPC-0403 は Windows 上のアプリケーションから 弊社 CoolIOs USB 製品を制御する為のソフトウェアです 弊社 CoolIOs USB 製品を Windows 上のアプリケーションから DLL をダイナミックリンクし API をコールすることにより制御します 本ドキュメントは Windows 上で DPC-0403 を使用するための情報を掲載しています 1.2 特長 主要な 4 個の関数で簡単に制御プログラムの作成を行なうことが出来ます デジタル入出力やアナログ入出力など各カテゴリ製品を共通の制御方法で制御できます コンピュータに接続された弊社 CoolIOs USB 製品の一覧を確認することが出来るユーティリティを付属しています 各言語の各種サンプルプログラムを添付しています 3
第 2 章製品仕様 2.1 基本仕様 最大デバイス数 32 デバイス 1 対応 USB 規格 USB2.0 シェアオープン なし 1 同一型式 異なる型式問わず最大 32 デバイスまで 4
2.2 製品構成 製品構成 ファイル名 説明 弊社管理用ファイル DPC0403.VER 弊社ソフト管理用ファイル 最新情報ドキュメント README.HTM 最新ドキュメント掲載ファイル インストールプログラム SETUP.EXE インストール用ファイル 動作確認プログラム IfUsbIoUtil.ex 動作確認用プログラム e サンプルプログラム Visual C++ DI_226120 URS-226120 用サンプルプログラム DO_252102 URS-252102 用サンプルプログラム DI_286111 URS-286111 用サンプルプログラム DO_286111 URS-286111 用サンプルプログラム DI_294133 URS-294133 用サンプルプログラム DO_294133 URS-294133 用サンプルプログラム AD_323416 URS-323416 用サンプルプログラム DA_343416 URS-343416 用サンプルプログラム CLEAR_631504 URS-631504 用サンプルプログラム COUNTER_631504 URS-631504 用サンプルプログラム PRESET_631504 URS-631504 用サンプルプログラム STATUS_631504 URS-631504 用サンプルプログラム Visual C#.NET 1 IFCUSBIO クラスライブラリ (Visual C#.NET 用 ) DI_226120 URS-226120 用サンプルプログラム DO_252102 URS-252102 用サンプルプログラム DI_286111 URS-286111 用サンプルプログラム DO_286111 URS-286111 用サンプルプログラム DI_294133 URS-294133 用サンプルプログラム DO_294133 URS-294133 用サンプルプログラム AD_323416 URS-323416 用サンプルプログラム DA_343416 URS-343416 用サンプルプログラム CLEAR_631504 URS-631504 用サンプルプログラム COUNTER_631504 URS-631504 用サンプルプログラム PRESET_631504 URS-631504 用サンプルプログラム STATUS_631504 URS-631504 用サンプルプログラム Visual Basic.NET 1 IFCUSBIO クラスライブラリ (Visual Basic.NET 用 ) DI_226120 URS-226120 用サンプルプログラム DO_252102 URS-252102 用サンプルプログラム DI_286111 URS-286111 用サンプルプログラム DO_286111 URS-286111 用サンプルプログラム DI_294133 URS-294133 用サンプルプログラム DO_294133 URS-294133 用サンプルプログラム AD_323416 URS-323416 用サンプルプログラム 5
DA_343416 URS-343416 用サンプルプログラム CLEAR_631504 URS-631504 用サンプルプログラム COUNTER_631504 URS-631504 用サンプルプログラム PRESET_631504 URS-631504 用サンプルプログラム STATUS_631504 URS-631504 用サンプルプログラム DLL IFUSBIO.DLL ダイナミックリンクライブラリファイル IFUSBIO.LIB インポートライブラリファイル デバイスドライバ IFUSBIO.SYS Windows 7 以降の OS 用ドライバ DPCUSBIO.INF DPCUSBIO.CAT Windows 7 以降の OS 用ドライバインストールファイル ヘッダファイル IFUSBIO.H Visual C++ 用ヘッダファイル Help HELP.PDF Help(PDF 形式 ) 1 Visual C#.NET,Visual Basic.NET 用サンプルプログラムは それぞれ Viausl C#.NET 2008, Visual Basic.NET 2008 を使用して作成しています 6
第 3 章導入方法 3.1 インストール手順 README.HTM のインストール方法を参照してください 3.2 実行手順制御対象を複数台使用する場合は DSW の設定値が重複しないように設定してからコンピュータの USB コネクタに接続してください DSW の設定値は制御対象を一意に識別するための番号となります 重複していた場合 本ソフトウェアは正常に動作いたしません 基本的な制御の手順は以下の通りです ( 記述例は C 言語です ) 1. 初期化制御対象を UsbioOpen 関数で初期化します 初期化が正常終了すると 以後 制御対象へのアクセスが可能となります 1 台の制御対象を複数アプリケーションで共有して制御を行なうことは出来ません HANDLE DeviceHandle; DeviceHandle = UsbioOpen( USBIO0, IFUSBIO_FLAG_NORMAL); デバイス名 (USBIOxx) を指定して初期化を行ないます このデバイス名は制御対象上の DSW の値と連動して決定します DSW の値とデバイス名の関係は下記の通りです また Windows の デバイスマネージャー からデバイス名 (USBIOxx) を確認することも出来ます DSW の設定値デバイス名 0 USBIO0 1 USBIO1 2 USBIO2 : : 254 USBIO254 255 USBIO255 DSW の設定値が重複している場合は 後から USB コネクタに接続された制御対象は正しく認識しません ホスト PC に CoolIOs USB 製品を接続した状態では IO 部の電源供給は OFF になっています UsbioOpen 関数を実行することで CoolIOs USB 製品の IO 部に電源供給を ON します 初期化した制御対象は アプリケーション終了の際には必ず終了処理 (UsbioClose 関数 ) を行なってください 7
2.Write 処理 UsbioWrite 関数を使用して 各 CoolIOs USB 製品にデータのライトを行なうことが出来ます CoolIOs USB 製品ごとに指定する レジスタ情報 や 指定する 設定値 が異なります 詳細は 第 5 章ハードウェア固有情報 を参照してください int ret; HANDLE DeviceHandle; ret = UsbioWrite(DeviceHandle, C_294133_DO_1_8, 0x01); レジスタ情報 設定値 この場合は URS-294133 の製品について DO1 を ON DO2 から DO7 を OFF にする例を記載しています 3.Read 処理 UsbioRead 関数を使用して 各 CoolIOs USB 製品からデータのリードを行なうことが出来ます CoolIOs USB 製品ごとに指定する レジスタ情報 や 得られる 取得値 が異なります 詳細は 第 5 章ハードウェア固有情報 を参照してください int ret; HANDLE DeviceHandle; unsigned int data; ret = UsbioRead(DeviceHandle, C_294133_DI_1_8, &data); レジスタ情報 取得値 この場合は URS-294133 の製品について DI1 から DI8 の状態を取得する例を記載しています 8
4. 終了処理 UsbioClose 関数でデバイスの終了処理を行います アプリケーションでは 必ずクローズ処理を行ってから終了してください int ret; HANDLE DeviceHandle; ret = UsbioClose(DeviceHandle); UsbioClose 関数実行後 CoolIOs USB 製品の IO 部の電源供給は OFF されません 電源供給を OFF にする場合は UsbioClose 関数実行後 ホスト PC から CoolIOs USB 製品を外してください 9
第 4 章リファレンス 4.1 関数一覧 No 関数名機能 初期化関数 1 UsbioOpen デバイスをオープンします 2 UsbioClose デバイスをクローズします リード / ライト 3 UsbioWrite USB デバイスにデータを 1 件ライトします 4 UsbioRead USB デバイスからデータを 1 件リードします 10
4.2 関数個別説明 1. UsbioOpen 機能 デバイスをオープンします Windows の デバイスマネージャー に認識された弊社 USB 製品が一覧表示されます 一覧の製品型式の横にデバイス名 (USBIOxx) が表示されます 書式 C 言語 HANDLE UsbioOpen( LPCSTR unsigned int ); Name, Flag Visual C#.NET [DllImport("ifusbio.dll")] public static extern IntPtr UsbioOpen( string Name, uint Flag ); Visual Basic.NET Declare Function UsbioOpen Lib "ifusbio.dll"(_ ByVal Name As String, _ ByVal Flag As UInteger _ )As IntPtr パラメータ Name オープンするデバイス名を指定します Flag オープン時のフラグを指定します 値 値 説明 IFUSBIO_FLAG_NORMAL 0 本関数の引数には常にこの値を使用します 戻り値 UsbioOpen 関数が正常に終了した場合には 有効なハンドルが返されます 他の関数は 本関数により取得したハンドルを使用してデバイスの制御を行います オープンに失敗した場合には INVALID_HANDLE_VALUE(-1) が返されます 11
備考 デバイス名についてオープンするにはデバイス名を指定します デバイス名は USBIOxx (x は 0~255) となります デバイス名は DSW の設定値によって割り当てられます DSW の設定値が 0 の場合 USBIO0 DSW の設定値が 1 の場合 USBIO1 となります 複数枚ご使用になる場合は 制御するインタフェースモジュールのデバイス名を事前にご確認ください デバイス名の確認はデバイスマネージャにて確認できます IO 部の電源供給についてホスト PC に CoolIOs USB 製品を接続した状態では IO 部の電源供給は OFF になっています UsbioOpen 関数を実行することで CoolIOs USB 製品の IO 部に電源供給を ON します UsbioOpen 関数内で 電源供給後 IO 部が使用できる状態になるまで 500ms 程度 wait しています 注意事項 デバイスのシェアオープンについて本ソフトウェアはデバイスのシェアオープンをサポートしていないため 同じデバイスを 2 つ以上のアプリケーションで共有することが出来ません 使用例 C 言語 HANDLE DeviceHandle; DeviceHandle = UsbioOpen( USBIO1, IFUSBIO_FLAG_NORMAL); Visual C#.NET IntPtr DeviceHandle; DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL); Visual Basic.NET Dim DeviceHandle As IntPtr DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL) デバイス名 USBIO1 のデバイスをオープンします 12
2. UsbioClose 機能 デバイスをクローズします デバイスアクセスのために使用されていた各種リソースの解放を行い 以後のデバイスへのアクセスを禁止します 書式 C 言語 int UsbioClose( HANDLE DeviceHandle ); Visual C#.NET [DllImport("ifusbio.dll")] public static extern int UsbioClose( IntPtr DeviceHandle ); Visual Basic.NET Declare Function UsbioClose Lib "ifusbio.dll"(_ ByVal DeviceHandle As IntPtr _ )As Integer パラメータ DeviceHandle UsbioOpen 関数で取得したデバイスハンドルを指定します 戻り値 正常終了した場合は IFUSBIO_ERROR_SUCCESS が返されます IFUSBIO_ERROR_SUCCESS 以外の値が返された場合については 4.3 戻り値一覧 をご参照ください 備考 再度 デバイスへのアクセスを行う場合にはオープン処理 (UsbioOpen 関数 ) を呼び出してください UsbioClose 関数実行後 CoolIOs USB 製品の IO 部の電源供給は OFF されません 電源供給を OFF にする場合は UsbioClose 関数実行後 ホスト PC から CoolIOs USB 製品を外してください 13
使用例 C 言語 int ret; HANDLE DeviceHandle; DeviceHandle = UsbioOpen( USBIO1, IFUSBIO_FLAG_NORMAL); : ret = UsbioClose(DeviceHandle); Visual C#.NET int ret; IntPtr DeviceHandle; DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL); : ret = IFCUSBIO.UsbioClose(DeviceHandle); Visual Basic.NET Dim ret As Integer Dim DeviceHandle As IntPtr DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL) : ret = IFCUSBIO.UsbioClose(DeviceHandle) デバイスクローズを行ないます 14
3. UsbioWrite 機能 USB デバイスにデータを 1 件ライトします 書式 C 言語 int UsbioWrite( HANDLE unsigned int unsigned int ); DeviceHandle, RegisterInfo, Value Visual C#.NET [DllImport("ifusbio.dll")] public static extern int UsbioWrite ( IntPtr DeviceHandle uint RegisterInfo, uint Value ); Visual Basic.NET Declare Function UsbioWrite Lib "ifusbio.dll"(_ ByVal DeviceHandle As IntPtr, _ ByVal RegisterInfo As Uinteger, _ ByVal Value As Uinteger _ )As Integer パラメータ DeviceHandle UsbioOpen 関数で取得したデバイスハンドルを指定します RegisterInf データをライトするレジスタ情報を指定します 指定する値は 製品ごとに異なります 詳細は 第 5 章ハードウェア固有情報 を参照してください Value USB デバイスにライトする設定値を指定します 指定する値は 製品ごとに異なります 詳細は 第 5 章ハードウェア固有情報 を参照してください 戻り値 正常終了した場合は IFUSBIO_ERROR_SUCCESSが返されます IFUSBIO_ERROR_SUCCESS 以外の値が返された場合については 4.3 戻り値一覧 をご参照ください 15
使用例 C 言語 int ret; HANDLE DeviceHandle; DeviceHandle = UsbioOpen( USBIO1, IFUSBIO_FLAG_NORMAL); : ret = UsbioWrite(DeviceHandle, C_294133_DO_1_8, 0x01); Visual C#.NET int ret; IntPtr DeviceHandle; DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL); : ret = IFCUSBIO.UsbioWrite(DeviceHandle, IFCUSBIO.C_294133_DO_1_8, 0x01); Visual Basic.NET Dim ret As Integer Dim DeviceHandle As IntPtr DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL) : ret = IFCUSBIO.UsbioWrite(DeviceHandle, IFCUSBIO.C_294133_DO_1_8, 0x01) URS-294133 の DO1 を ON にします 16
4. UsbioRead 機能 USB デバイスからデータを 1 件リードします 書式 C 言語 int UsbioRead( HANDLE unsigned int unsigned int * ); DeviceHandle, RegisterInfo, pvalue Visual C#.NET [DllImport("ifusbio.dll")] public static extern int UsbioRead ( IntPtr DeviceHandle uint RegisterInfo, out uint pvalue ); Visual Basic.NET Declare Function UsbioRead Lib "ifusbio.dll"(_ ByVal DeviceHandle As IntPtr, _ ByVal RegisterInfo As Uinteger, _ ByRef pvalue As Uinteger _ )As Integer パラメータ DeviceHandle UsbioOpen 関数で取得したデバイスハンドルを指定します RegisterInf データをリードするレジスタ情報を指定します 指定する値は 製品ごとに異なります 詳細は 第 5 章ハードウェア固有情報 を参照してください pvalue USB デバイスからリードした値を格納するポインタを指定します 取得される値は 製品ごとに異なります 詳細は 第 5 章ハードウェア固有情報 を参照してください 17
戻り値 正常終了した場合は IFUSBIO_ERROR_SUCCESS が返されます IFUSBIO_ERROR_SUCCESS 以外の値が返された場合については 4.3 戻り値一覧 をご参照ください 使用例 C 言語 int ret; HANDLE DeviceHandle; unsigned int data; DeviceHandle = UsbioOpen( USBIO1, IFUSBIO_FLAG_NORMAL); : ret = UsbioRead(DeviceHandle, C_294133_DI_1_8, &data); Visual C#.NET int ret; IntPtr DeviceHandle; uint data; DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL); : ret = IFCUSBIO.UsbioRead(DeviceHandle, IFCUSBIO.C_294133_DI_1_8, out data); Visual Basic.NET Dim ret As Integer Dim DeviceHandle As IntPtr Dim data As UInteger DeviceHandle = IFCUSBIO.UsbioOpen( USBIO1, IFCUSBIO.IFUSBIO_FLAG_NORMAL) : ret = IFCUSBIO.UsbioRead(DeviceHandle, IFCUSBIO.C_294133_DI_1_8, data) URS-294133 の DI1 から DI8 の状態を取得します 18
4.3 戻り値一覧 エラー識別子値意味対処方法 IFUSBIO_ERROR_SUCCESS 00000000h 正常終了 - IFUSBIO_ERROR_INVALID_PARAMETER C0000002h パラメータが不正です 設定可能範囲をご確認の上 パラメータを設定してください IFUSBIO_ERROR_INVALID_HANDLE C0000003h デバイスハンドルが正 しくありません IFUSBIO_ERROR_ALREADY_OPEN C0000004h すでに OPEN しているデ バイスを OPEN しようと しました 不正なデバイスハンドルで呼び出しを行なおうとしました UsbioOpen 関数で返されたデバイスハンドルを使用してください 既に OPEN されているデバイスです デバイスクローズした後 再度デバイスオープンしてください IFUSBIO_ERROR_NULL_POINTER C0000005h NULL ポインタです 渡されたパラメータが NULL ポインタです IFUSBIO_ERROR_IO_TIMEOUT C0000006h USB デバイスとの通信がタイムアウトしました USB デバイスの抜き差しを行なってください IFUSBIO_ERROR_MEMORY_NOTALLOCATED C0000007h 作業用メモリの確保に失敗しました 利用可能なメモリが足りなくなっています メモリの使用を抑えてください IFUSBIO_ERROR_INTERNAL_ERROR C0000008h 内部エラーが発生しました ドライバの内部エラーです どのような状況でエラーが発生したかをご連絡ください IFUSBIO_ERROR_IO_PENDING C0000009h 非同期処理 I/O 操作が進行中です WaitForSingleObject 関数等でイベントの完了を待ってください IFUSBIO_ERROR_NOT_SUPPORTED C000000Bh サポートされていない 機能です サポートしていない機能を制御する関数を実行した場合になるエラーです 19
第 5 章ハードウェア固有情報 製品固有の情報を記載しています 5.1 URS-226120 5.1.1 UsbioWrite 関数に関する内容 URS-226120 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報と設定値はありません 20
5.1.2 UsbioRead 関数に関する内容 URS-226120 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_226120_DI_1_8 C_226120_DI_1_16 C_226120_DI_9_16 概要 DI1 から DI8 の状態を取得します DI1 から DI16 の状態を取得します DI9 から DI16 の状態を取得します 下記にレジスタ情報と取得値についての詳細を記載しています C_226120_DI_1_8 概要レジスタ情報取得値取得値 ( 例 ) DI1 から DI8 の状態を取得します 識別子 C_226120_DI_1_8 値 08000012h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 IN1 IN3 IN5 IN7 が ON IN2 IN4 IN6 IN8 が OFF C_226120_DI_1_16 概要レジスタ情報取得値取得値 ( 例 ) DI1 から DI16 の状態を取得します 識別子 C_226120_DI_1_16 値 10000012h 取得した値は 下記のようにビット毎に接点と対応しています bit15 bit14 bit3 bit2 bit1 bit0 IN16 IN15 IN4 IN3 IN2 IN1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 0F0Fh 意味 IN1~IN4 IN9~IN12 が ON IN5~IN8 IN13~IN16 が OFF 21
C_226120_DI_9_16 概要レジスタ情報取得値取得値 ( 例 ) DI9 から DI16 の状態を取得します 識別子 C_226120_DI_9_16 値 08000013h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 IN9 IN11 IN13 IN15 が ON IN10 IN12 IN14 IN16 が OFF 22
5.1.3 DI 制御を行なうプログラム例 (Visual C++) DI 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; unsigned int data; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioRead 関数の第二引数に C_226120_DI_xx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioRead 関数の第三引数に DI した取得値が格納されます // ( 例 )DI1 から DI16 の状態を取得します ret = UsbioRead(DeviceHandle, C_226120_DI_1_16, &data); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioread error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 23
5.2 URS-252102 5.2.1 UsbioWrite 関数に関する内容 URS-252102 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_252102_DO_1_8 C_252102_DO_1_16 C_252102_DO_9_16 概要 DO1 から DO8 を制御します DO1 から DO16 を制御します DO9 から DO16 を制御します 下記にレジスタ情報と設定値についての詳細を記載しています C_252102_DO_1_8 概要レジスタ情報設定値設定値 ( 例 ) DO1 から DO8 を制御します 識別子 C_252102_DO_1_8 値 08000010h 設定する値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値 55h 意味 OUT1 OUT3 OUT5 OUT7 を ON にする OUT2 OUT4 OUT6 OUT8 を OFF にする C_252102_DO_1_16 概要レジスタ情報設定値設定値 ( 例 ) DO1 から DO16 を制御します 識別子 C_252102_DO_1_16 値 10000010h 設定する値は 下記のようにビット毎に接点と対応しています bit15 bit14 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値 0F0Fh 意味 OUT1~OUT4 OUT9~OUT12 を ON にする OUT5~OUT8 OUT13~OUT16 を OFF にする 24
C_252102_DO_9_16 概要レジスタ情報設定値設定値 ( 例 ) DO9 から DO16 を制御します 識別子 C_252102_DO_9_16 値 08000011h 設定する値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値意味 55h OUT9 OUT11 OUT13 OUT15 を ON にする OUT10 OUT12 OUT14 OUT16 を OFF にする 25
5.2.2 UsbioRead 関数に関する内容 URS-252102 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_252102_DO_1_8 C_252102_DO_1_16 C_252102_DO_9_16 概要 DO1 から DO8 の設定値を取得します DO1 から DO16 の設定値を取得します DO9 から DO16 の設定値を取得します 下記にレジスタ情報と取得値についての詳細を記載しています C_252102_DO_1_8 概要レジスタ情報取得値取得値 ( 例 ) DO1 から DO8 の設定値を取得します 識別子 C_252102_DO_1_8 値 08000010h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 OUT1 OUT3 OUT5 OUT7 が ON OUT2 OUT4 OUT6 OUT8 が OFF C_252102_DO_1_16 概要レジスタ情報取得値取得値 ( 例 ) DO1 から DO16 の設定値を取得します 識別子 C_252102_DO_1_16 値 10000010h 取得した値は 下記のようにビット毎に接点と対応しています bit15 bit14 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 0F0Fh 意味 OUT1~OUT4 OUT9~OUT12 が ON OUT5~OUT8 OUT13~OUT16 が OFF 26
C_252102_DO_9_16 概要レジスタ情報取得値取得値 ( 例 ) DO9 から DO16 の設定値を取得します 識別子 C_252102_DO_9_16 値 08000011h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 OUT9 OUT11 OUT13 OUT15 が ON OUT10 OUT12 OUT14 OUT16 が OFF 27
5.2.3 DO 制御を行なうプログラム例 (Visual C++) DO 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioWrite 関数の第二引数に C_252102_DO_xx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioWrite 関数の第三引数に DO 制御を行なう設定値を指定します // ( 例 )DO1 から DO16 を ON する処理を表しています ret = UsbioWrite(DeviceHandle, C_252102_DO_1_16, 0x000000FF); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbiowrite error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 28
5.3 URS-286111 5.3.1 UsbioWrite 関数に関する内容 URS-286111 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_286111_DO_1_8 概要 DO1 から DO8 を制御します 下記にレジスタ情報と設定値についての詳細を記載しています C_286111_DO_1_8 概要レジスタ情報設定値設定値 ( 例 ) DO1 から DO8 を制御します 識別子 C_286111_DO_1_8 値 08000010h 設定する値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値 55h 意味 OUT1 OUT3 OUT5 OUT7 を ON にする OUT2 OUT4 OUT6 OUT8 を OFF にする 29
5.3.2 UsbioRead 関数に関する内容 URS-286111 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_286111_DO_1_8 C_286111_DI_1_8 概要 DO1 から DO8 の設定値を取得します DI1 から DI8 の状態を取得します 下記にレジスタ情報と取得値についての詳細を記載しています C_286111_DO_1_8 概要レジスタ情報取得値取得値 ( 例 ) DO1 から DO8 の設定値を取得します 識別子 C_286111_DO_1_8 値 08000010h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 OUT1 OUT3 OUT5 OUT7 が ON OUT2 OUT4 OUT6 OUT8 が OFF C_286111_DI_1_8 概要レジスタ情報取得値取得値 ( 例 ) DI1 から DI8 の状態を取得します 識別子 C_286111_DI_1_8 値 08000012h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 IN1 IN3 IN5 IN7 が ON IN2 IN4 IN6 IN8 が OFF 30
5.3.3 DO 制御を行なうプログラム例 (Visual C++) DO 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioWrite 関数の第二引数に C_286111_DO_xx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioWrite 関数の第三引数に DO 制御を行なう設定値を指定します // ( 例 )DO1 から DO8 を ON する処理を表しています ret = UsbioWrite(DeviceHandle, C_286111_DO_1_8, 0x000000FF); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbiowrite error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 31
5.3.4 DI 制御を行なうプログラム例 (Visual C++) DI 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; unsigned int data; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioRead 関数の第二引数に C_286111_DI_xx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioRead 関数の第三引数に DI した取得値が格納されます // ( 例 )DI1 から DI8 の状態を取得します ret = UsbioRead(DeviceHandle, C_286111_DI_1_8, &data); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioread error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 32
5.4 URS-294133 5.4.1 UsbioWrite 関数に関する内容 URS-294133 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_294133_DO_1_8 C_294133_DO_1_16 C_294133_DO_1_24 C_294133_DO_9_16 C_294133_DO_17_24 概要 DO1 から DO8 を制御します DO1 から DO16 を制御します DO1 から DO24 を制御します DO9 から DO16 を制御します DO17 から DO24 を制御します 下記にレジスタ情報と設定値についての詳細を記載しています C_294133_DO_1_8 概要レジスタ情報設定値設定値 ( 例 ) DO1 から DO8 を制御します 識別子 C_294133_DO_1_8 値 08000010h 設定する値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値 55h 意味 OUT1 OUT3 OUT5 OUT7 を ON にする OUT2 OUT4 OUT6 OUT8 を OFF にする 33
C_294133_DO_1_16 概要レジスタ情報設定値設定値 ( 例 ) DO1 から DO16 を制御します 識別子 C_294133_DO_1_16 値 10000010h 設定する値は 下記のようにビット毎に接点と対応しています bit15 bit14 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値意味 0F0Fh OUT1~OUT4 OUT9~OUT12 を ON にする OUT5~OUT8 OUT13~OUT16 を OFF にする C_294133_DO_1_24 概要レジスタ情報設定値設定値 ( 例 ) DO1 から DO24 を制御します 識別子 C_294133_DO_1_24 値 18000010h 設定する値は 下記のようにビット毎に接点と対応しています bit23 bit22 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値意味 0F0F0Fh OUT1~OUT4 OUT9~OUT12 OUT17~OUT20 を ON にする OUT5~OUT8 OUT13~OUT16 OUT21~OUT24 を OFF にする C_294133_DO_9_16 概要レジスタ情報設定値設定値 ( 例 ) DO9 から DO16 を制御します 識別子 C_294133_DO_9_16 値 08000011h 設定する値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値 55h 意味 OUT9 OUT11 OUT13 OUT15 を ON にする OUT10 OUT12 OUT14 OUT16 を OFF にする 34
C_294133_DO_17_24 概要レジスタ情報設定値設定値 ( 例 ) DO17 から DO24 を制御します 識別子 C_294133_DO_17_24 値 08000012h 設定する値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT24 OUT23 OUT22 OUT21 OUT20 OUT19 OUT18 OUT17 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 設定値意味 55h OUT17 OUT19 OUT21 OUT23 を ON にする OUT18 OUT20 OUT22 OUT24 を OFF にする 35
5.4.2 UsbioRead 関数に関する内容 URS-294133 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_294133_DO_1_8 C_294133_DO_1_16 C_294133_DO_1_24 C_294133_DO_9_16 C_294133_DO_17_24 C_294133_DI_1_8 C_294133_DI_1_16 C_294133_DI_1_24 C_294133_DI_9_16 C_294133_DI_17_24 概要 DO1 から DO8 の設定値を取得します DO1 から DO16 の設定値を取得します DO1 から DO24 の設定値を取得します DO9 から DO16 の設定値を取得します DO17 から DO24 の設定値を取得します DI1 から DI8 の状態を取得します DI1 から DI16 の状態を取得します DI1 から DI24 の状態を取得します DI9 から DI16 の状態を取得します DI17 から DI24 の状態を取得します 下記にレジスタ情報と取得値についての詳細を記載しています C_294133_DO_1_8 概要レジスタ情報取得値取得値 ( 例 ) DO1 から DO8 の設定値を取得します 識別子 C_294133_DO_1_8 値 08000010h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT8 OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 OUT1 OUT3 OUT5 OUT7 が ON OUT2 OUT4 OUT6 OUT8 が OFF 36
C_294133_DO_1_16 概要レジスタ情報取得値取得値 ( 例 ) DO1 から DO16 の設定値を取得します 識別子 C_294133_DO_1_16 値 10000010h 取得した値は 下記のようにビット毎に接点と対応しています bit15 bit14 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 0F0Fh 意味 OUT1~OUT4 OUT9~OUT12 が ON OUT5~OUT8 OUT13~OUT16 が OFF C_294133_DO_1_24 概要レジスタ情報取得値取得値 ( 例 ) DO1 から DO24 の設定値を取得します 識別子 C_294133_DO_1_24 値 18000010h 取得した値は 下記のようにビット毎に接点と対応しています bit23 bit22 bit3 bit2 bit1 bit0 OUT24 OUT23 OUT4 OUT3 OUT2 OUT1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 0F0F0Fh 意味 OUT1~OUT4 OUT9~OUT12 OUT17~OUT20 が ON OUT5~OUT8 OUT13~OUT16 OUT21~OUT24 が OFF C_294133_DO_9_16 概要レジスタ情報取得値取得値 ( 例 ) DO9 から DO16 の設定値を取得します 識別子 C_294133_DO_9_16 値 08000011h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT16 OUT15 OUT14 OUT13 OUT12 OUT11 OUT10 OUT9 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 OUT9 OUT11 OUT13 OUT15 が ON OUT10 OUT12 OUT14 OUT16 が OFF 37
C_294133_DO_17_24 概要レジスタ情報取得値取得値 ( 例 ) DO17 から DO24 の設定値を取得します 識別子 C_294133_DO_17_24 値 08000012h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 OUT24 OUT23 OUT22 OUT21 OUT20 OUT19 OUT18 OUT17 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 OUT17 OUT19 OUT21 OUT23 が ON OUT18 OUT20 OUT22 OUT24 が OFF C_294133_DI_1_8 概要レジスタ情報取得値取得値 ( 例 ) DI1 から DI8 の状態を取得します 識別子 C_294133_DI_1_8 値 08000014h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 IN1 IN3 IN5 IN7 が ON IN2 IN4 IN6 IN8 が OFF C_294133_DI_1_16 概要レジスタ情報取得値取得値 ( 例 ) DI1 から DI16 の状態を取得します 識別子 C_294133_DI_1_16 値 10000014h 取得した値は 下記のようにビット毎に接点と対応しています bit15 bit14 bit3 bit2 bit1 bit0 IN16 IN15 IN4 IN3 IN2 IN1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 0F0Fh 意味 IN1~IN4 IN9~IN12 が ON IN5~IN8 IN13~IN16 が OFF 38
C_294133_DI_1_24 概要レジスタ情報取得値取得値 ( 例 ) DI1 から DI24 の状態を取得します 識別子 C_294133_DI_1_24 値 18000014h 取得した値は 下記のようにビット毎に接点と対応しています bit23 bit22 bit3 bit2 bit1 bit0 IN24 IN23 IN4 IN3 IN2 IN1 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 0F0F0Fh 意味 IN1~IN4 IN9~IN12 IN17~IN20 が ON IN5~IN8 IN13~IN16 IN21~IN24 が OFF C_294133_DI_9_16 概要レジスタ情報取得値取得値 ( 例 ) DI9 から DI16 の状態を取得します 識別子 C_294133_DI_9_16 値 08000015h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 IN9 IN11 IN13 IN15 が ON IN10 IN12 IN14 IN16 が OFF C_294133_DI_17_24 概要レジスタ情報取得値取得値 ( 例 ) DI17 から DI24 の状態を取得します 識別子 C_294133_DI_17_24 値 08000016h 取得した値は 下記のようにビット毎に接点と対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 IN24 IN23 IN22 IN21 IN20 IN19 IN18 IN17 各ビットの値 : 0 (OFF 状態 ) 1 (ON 状態 ) 取得値 55h 意味 IN17 IN19 IN21 IN23 が ON IN18 IN20 IN22 IN24 が OFF 39
5.4.3 DO 制御を行なうプログラム例 (Visual C++) DO 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioWrite 関数の第二引数に C_294133_DO_xx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioWrite 関数の第三引数に DO 制御を行なう設定値を指定します // ( 例 )DO1 から DO24 を ON する処理を表しています ret = UsbioWrite(DeviceHandle, C_294133_DO_1_24, 0x000000FF); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbiowrite error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 40
5.4.4 DI 制御を行なうプログラム例 (Visual C++) DI 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; unsigned int data; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioRead 関数の第二引数に C_294133_DI_xx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioRead 関数の第三引数に DI した取得値が格納されます // ( 例 )DI1 から DI24 の状態を取得します ret = UsbioRead(DeviceHandle, C_294133_DI_1_24, &data); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioread error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 41
5.5 URS-323416 5.5.1 UsbioWrite 関数に関する内容 URS-323416 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報と設定値はありません 42
5.5.2 UsbioRead 関数に関する内容 URS-323416 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_323416_AD1 C_323416_AD2 C_323416_AD3 C_323416_AD4 C_323416_AD5 C_323416_AD6 C_323416_AD7 C_323416_AD8 概要 AD1 の状態を取得します AD2 の状態を取得します AD3 の状態を取得します AD4 の状態を取得します AD5 の状態を取得します AD6 の状態を取得します AD7 の状態を取得します AD8 の状態を取得します 下記にレジスタ情報と取得値についての詳細を記載しています C_323416_AD1 概要レジスタ情報取得値取得値 ( 例 ) AD1 の状態を取得します 識別子 C_323416_AD1 値 10000010h AD1 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 C_323416_AD2 概要レジスタ情報取得値取得値 ( 例 ) AD2 の状態を取得します 識別子 C_323416_AD2 値 10000012h AD2 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 43
C_323416_AD3 概要レジスタ情報取得値取得値 ( 例 ) AD3 の状態を取得します 識別子 C_323416_AD3 値 10000014h AD3 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 C_323416_AD4 概要レジスタ情報取得値取得値 ( 例 ) AD4 の状態を取得します 識別子 C_323416_AD4 値 10000016h AD4 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 C_323416_AD5 概要レジスタ情報取得値取得値 ( 例 ) AD5 の状態を取得します 識別子 C_323416_AD5 値 10000018h AD5 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 C_323416_AD6 概要レジスタ情報取得値取得値 ( 例 ) AD6 の状態を取得します 識別子 C_323416_AD6 値 1000001Ah AD6 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 44
C_323416_AD7 概要レジスタ情報取得値取得値 ( 例 ) AD7 の状態を取得します 識別子 C_323416_AD7 値 1000001Ch AD7 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 C_323416_AD8 概要レジスタ情報取得値取得値 ( 例 ) AD8 の状態を取得します 識別子 C_323416_AD8 値 1000001Eh AD8 の変換値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V を取得 45
5.5.3 AD 制御を行なうプログラム例 (Visual C++) AD 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; unsigned int data; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // UsbioRead 関数の第二引数に C_323416_ADxx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioRead 関数の第三引数に AD した取得値が格納されます // ( 例 )AD1 の値を取得します ret = UsbioRead(DeviceHandle, C_323416_AD1, &data); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioread error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 46
5.6 URS-343416 5.6.1 UsbioWrite 関数に関する内容 URS-343416 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_343416_DA1 C_343416_DA2 C_343416_DA3 C_343416_DA4 C_343416_OUTRY 概要 DA1 を制御します DA2 を制御します DA3 を制御します DA4 を制御します DA のリレーを制御します 下記にレジスタ情報と設定値についての詳細を記載しています C_343416_DA1 概要レジスタ情報設定値設定値 ( 例 ) DA1 を制御します 識別子 C_343416_DA1 値 10000010 DA1 の出力値として 16bit のデータ (0000-FFFFh) を設定できます 設定値 8000h 意味 0V を出力 C_343416_DA2 概要レジスタ情報設定値設定値 ( 例 ) DA2 を制御します 識別子 C_343416_DA2 値 10000012 DA2 の出力値として 16bit のデータ (0000-FFFFh) を設定できます 設定値 8000h 意味 0V を出力 C_343416_DA3 概要レジスタ情報設定値設定値 ( 例 ) DA3 を制御します 識別子 C_343416_DA3 値 10000014 DA3 の出力値として 16bit のデータ (0000-FFFFh) を設定できます 設定値 8000h 意味 0V を出力 47
C_343416_DA4 概要レジスタ情報設定値設定値 ( 例 ) DA4 を制御します 識別子 C_343416_DA4 値 10000016 DA4 の出力値として 16bit のデータ (0000-FFFFh) を設定できます 設定値 8000h 意味 0V を出力 C_343416_OUTRY 概要レジスタ情報設定値設定値 ( 例 ) DA のリレーを制御します識別子 C_343416_OUTRY 値 08010080h 設定する値は 下記のようにビット毎に該当するリレーと対応しています bit3 bit2 bit1 bit0 DA4 DA3 DA2 DA1 各ビットの値 : 0 (DA 無効 ) 1 (DA 有効 ) 設定値意味 5h DA1 DA3 を DA 有効 DA2 DA4 を DA 無効 48
5.6.2 UsbioRead 関数に関する内容 URS-343416 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_343416_DA1 C_343416_DA2 C_343416_DA3 C_343416_DA4 C_343416_OUTRY 概要 DA1 の設定値を取得します DA2 の設定値を取得します DA3 の設定値を取得します DA4 の設定値を取得します DA のリレーの設定値を取得します 下記にレジスタ情報と取得値についての詳細を記載しています C_343416_DA1 概要レジスタ情報取得値取得値 ( 例 ) DA1 の設定値を取得します 識別子 C_343416_DA1 値 10000010h DA1 の設定値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V の設定値を取得 C_343416_DA2 概要レジスタ情報取得値取得値 ( 例 ) DA2 の設定値を取得します 識別子 C_343416_DA2 値 10000012h DA2 の設定値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V の設定値を取得 C_343416_DA3 概要レジスタ情報取得値取得値 ( 例 ) DA3 の設定値を取得します 識別子 C_343416_DA3 値 10000014h DA3 の設定値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V の設定値を取得 49
C_343416_DA4 概要レジスタ情報取得値取得値 ( 例 ) DA4 の設定値を取得します 識別子 C_343416_DA4 値 10000016h DA4 の設定値が 16bit のデータ (0000-FFFFh) として取得されます 取得値 8000h 意味 0V の設定値を取得 C_343416_OUTRY 概要レジスタ情報取得値取得値 ( 例 ) DA のリレーの設定値を取得します 識別子 C_343416_OUTRY 値 08010080h 取得した値は 下記のようにビット毎に該当するリレーと対応しています bit3 bit2 bit1 bit0 DA4 DA3 DA2 DA1 各ビットの値 : 0 (DA 無効 ) 1 (DA 有効 ) 取得値意味 5h DA1 DA3 が DA 有効 DA2 DA4 が DA 無効 50
5.6.3 DA 制御を行なうプログラム例 (Visual C++) DA 制御を行なうプログラム例について記載します int main(void) { HANDLE DeviceHandle; int ret; // オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // リレー制御を行い 該当する DA のチャンネルを有効にします // UsbioWrite 関数の第二引数に C_343416_OUTRY を指定します // UsbioWrite 関数の第三引数にリレーの設定値を指定します // ( 例 ) DA1 のリレーを有効にします ret = UsbioWrite(DeviceHandle, C_343416_OUTRY, 0x01); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbiowrite error : %x \n", ret); return -1; // UsbioWrite 関数の第二引数に C_343416_DAxx で始まる識別子を指定します // 識別子の情報は定義ファイル (ifusbio.h) に記載されています // UsbioWrite 関数の第三引数に DA 制御を行なう設定値を指定します // ( 例 )DA1 から 0V(8000h) を出力する処理を表しています ret = UsbioWrite(DeviceHandle, C_343416_DA1, 0x8000); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbiowrite error : %x \n", ret); return -1; 51
// リレー制御を行い 該当する DA のチャンネルを無効にします // UsbioWrite 関数の第二引数に C_343416_OUTRY を指定します // UsbioWrite 関数の第三引数にリレーの設定値を指定します // ( 例 ) 全ての DA のリレーを無効にします ret = UsbioWrite(DeviceHandle, C_343416_OUTRY, 0x00); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbiowrite error : %x \n", ret); return -1; // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 52
カウントモードA,B を共に Low にしないでください ゲート付き単相パルスカウントモード 5.7 URS-631504 5.7.1 カウントモード URS-631504 で使用できる各カウントモードの動作について 下記に示します カウント方向を 通常方向 に設定した場合 カウント : カウントする : カウントしないモード位相差パルスカウントモードアップカウントダウンカウントUP/DOWNパルスA B A B 1 逓倍 2 逓倍 4 逓倍 A(UP) B(DN) A B +1 +1-1 -1 1 逓倍 2 逓倍 アップカウント 53
カウントモードA,B を共に Low にしないでください ゲート付き単相パルスカウントモード カウント方向を リバース方向 に設定した場合 カウント : カウントする : カウントしないモード位相差パルスカウントモードダウンカウントアップカウントUP/DOWNパルスA B A B 1 逓倍 2 逓倍 4 逓倍 A(UP) B(DN) A B -1-1 +1 +1 1 逓倍 2 逓倍 ダウンカウント 54
5.7.2 UsbioWrite 関数に関する内容 URS-631504 の製品を使用した際の UsbioWrite 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_631504_SETCH C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER C_631504_SETREG C_631504_PRESET1 C_631504_PRESET2 C_631504_PRESET3 C_631504_PRESET4 C_631504_CNTCTRL1 C_631504_CNTCTRL2 C_631504_CNTCTRL3 C_631504_CNTCTRL4 概要 C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER の設定値を反映させるチャンネルを設定します カウントモードの動作を設定します カウンタの外部ラッチ クリアの動作を設定します デジタルフィルタの値を設定します C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER で設定した設定値を反映します チャンネル 1 のカウンタへ設定するプリセット値を設定します チャンネル 2 のカウンタへ設定するプリセット値を設定します チャンネル 3 のカウンタへ設定するプリセット値を設定します チャンネル 4 のカウンタへ設定するプリセット値を設定します チャンネル 1 のカウンタ制御情報を設定します チャンネル 2 のカウンタ制御情報を設定します チャンネル 3 のカウンタ制御情報を設定します チャンネル 4 のカウンタ制御情報を設定します 下記にレジスタ情報と設定値についての詳細を記載しています 55
C_631504_SETCH 概要レジスタ情報設定値設定値 ( 例 ) 注意事項 C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER の設定値を反映させるチャンネルを設定します 識別子 C_631504_SETCH 値 08000080h 設定する値は下記の 0~3 の値を設定します 値 内容 0 チャンネル 1 1 チャンネル 2 2 チャンネル 3 3 チャンネル 4 設定値 0 意味チャンネル 1 を選択します 下記のレジスタレジスタ情報を使用して カウントモード等の設定や反映をさせた後 C_631504_SETCH を使用してチャンネルを設定して下さい C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER C_631504_SETREG 56
C_631504_MODE 概要レジスタ情報 設定値 カウントモードの動作を設定します 識別子 C_631504_MODE 値 08000081h 設定する値は 下記のビットに対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - - - DIR MD1 MD0 SEL1 SEL0 各ビットの意味は下記となります ビット SEL0 SEL1 MD0 MD1 DIR 内容カウントモードを指定するビットです SEL0 SEL1 MD0 MD1 の組み合わせで指定します カウント方向を指定する 0 通常方向 ( カウントアップ ) 1 リバース方向 ( カウントダウン ) SEL0 SEL1 MD0 MD1 の組み合わせで指定するカウントモードは下記の通りです MD1 MD0 SEL1 SEL0 カウントモード 0 0 0 0 ゲート信号付き単相パルス 1 逓倍モード 非同期クリア 0 0 0 1 ゲート信号付き単相パルス 2 逓倍モード 非同期クリア 0 1 0 0 位相差パルス 1 逓倍モード 非同期クリア 0 1 0 1 位相差パルス 2 逓倍モード 非同期クリア 0 1 1 0 位相差パルス 4 逓倍モード 非同期クリア 1 1 0 0 位相差パルス 1 逓倍モード 同期クリア 1 1 0 1 位相差パルス 2 逓倍モード 同期クリア 1 1 1 0 位相差パルス 4 逓倍モード 同期クリア 1 0 0 0 UP/DOWN パルスカウントモード 非同期クリア 57
非同期クリア A 相 B 相のステータスに関わりなく Z 相または Z 相 +L が有効になった瞬間 ( エッジにて ) カウンタはクリアされます 同期クリア B 相が Low で Z 相または Z 相 +L が有効になった時 A 相の ( ) と ( ) にてカウンタはクリアされます 設定値 ( 例 ) 注意事項 設定値意味 4h 下記のカウントモード設定にする 位相差パルス 1 逓倍モード 非同期クリア 通常方向でカウントする C_631504_MODE を使用して カウントモードの設定をした後は 下記のレジスタ情報を使用して 設定の反映やチャンネルの設定を行ってください C_631504_SETREG C_631504_SETCH 58
C_631504_LATCH_CLR 概要レジスタ情報設定値設定値 ( 例 ) 注意事項 カウンタの外部ラッチ クリアの動作を設定します 識別子 C_631504_LATCH_CLR 値 08000082h 設定する値は 下記のビットに対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - - LP ZP LTS1 LTS0 CLS1 CLS0 各ビットの意味は下記となります ビット 内容 CLS カウンタの外部クリア設定を行います CLS1 CLS0 内容 0 0 カウンタの外部クリアを行わない 0 1 Z 相のみでカウンタをクリア 1 0 L と Z 相が有効の時 カウンタをクリア 1 1 設定禁止 LTS カウンタの外部ラッチ設定を行います LTS1 LTS0 内容 0 0 カウンタの外部ラッチを行わない 0 1 L 相のみでカウンタをラッチ 1 0 L と Z 相が有効のとき カウンタをラッチ 1 1 フリーラン ZP Z 相極性を設定します 0 Z 相通常 (Highで有効) 1 Z 相反転 (Lowで有効) LP L の極性を設定します 0 Lの立ち下がりを有効 ( ) (Lowで有効) 1 Lの立ち上がりを有効 ( ) (Highで有効) 設定値 0h 意味下記のカウンタの外部ラッチ クリアの動作に設定します カウンタの外部クリアを行わない カウンタの外部ラッチを行わない Z 相は通常に設定 L の極性は立ち下がりを有効に設定 C_631504_LATCH_CLR を使用して ラッチ / クリアの設定をした後は 下記のレジスタ情報を使用して 設定の反映やチャンネルの設定を行ってください C_631504_SETREG C_631504_SETCH 59
C_631504_DFILTER 概要レジスタ情報 設定値 デジタルフィルタの値を設定します 識別子 C_631504_DFILTER 値 08000083h 設定する値は 下記のビットに対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 CCLK1 CCLK0 - CCNT4 CCNT3 CCNT2 CCNT1 CCNT0 CCNT0 ~ CCNT4 CCLK0 CCLK1 の組み合わせで設定するデジタルフィルタの値はは下記の通りです 0us ~ 3100us までの値を設定することが出来ます CCNT0 ~ CCNT4 CCLK1 0 1 CCLK0 0 1 0 1 0 停止 停止 停止 - 1 1us 10us 100us - 2 2us 20us 200us - 3 3us 30us 300us - : : : : : 30 30us 300us 3000us - 31 31us 310us 3100us - 設定値 ( 例 ) 注意事項 設定値 42h 意味 A 相 B 相 Z 相 L に対して 20us のデジタルフィルタの値を設定します C_631504_DFILTER を使用して デジタルフィルタの設定をした後は 下記のレジスタ情報を使用して 設定の反映やチャンネルの設定を行ってください C_631504_SETREG C_631504_SETCH 60
C_631504_SETREG 概要 レジスタ情報 設定値 C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER で設定した設定値を反映します 識別子 C_631504_SETREG 値 0800008Eh 設定する値は 下記のビットに対応しています Bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - - - - - - - SET 各ビットの意味は下記となります ビット内容 SET 0 1 または 1 0 と値を変化させた場合に C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER で設定した値が反映されます 設定値 ( 例 ) 注意事項 設定値 1h 意味値を 1 し 設定値の反映を行う 0 1 に変化させたとき カウントモード等の設定変更を行った場合は 本レジスタ情報を使用して 設定の反映を行ってください 本レジスタ情報に 0 が設定された状態で 0 を設定しても 設定値は反映されません (1 1 への設定も同様 ) 必ず 0 1 または 1 0 に設定値を変化させて設定値を反映して下さい C_631504_PRESET1 C_631504_PRESET2 C_631504_PRESET3 C_631504_PRESET4 概要レジスタ情報設定値設定値 ( 例 ) 注意事項 チャンネル xx のカウンタへ設定するプリセット値を設定します チャンネル 1 識別子 C_631504_PRESET1 値 20000090h チャンネル 2 識別子 C_631504_PRESET2 値 20000094h チャンネル 3 識別子 C_631504_PRESET3 値 20000098h チャンネル 4 識別子 C_631504_PRESET4 値 2000009Ch プリセット値として 32bit のデータ (00000000-FFFFFFFFh) を設定できます 設定値 1000h 意味プリセット値に 1000h を設定する 本レジスタ情報を使用して プリセット値を設定して場合 C_631504_CNTCTRLxx のレジスタ情報を使用して プリセット値のロードを行ってください 61
C_631504_CNTCTRL1 C_631504_CNTCTRL2 C_631504_CNTCTRL3 C_631504_CNTCTRL4 概要レジスタ情報 設定値 チャンネル xx のカウンタ制御情報を設定します チャンネル 1 識別子 C_631504_CNTCTRL1 値 080000D0h チャンネル 2 チャンネル 3 チャンネル 4 識別子 値 識別子 値 識別子 値 C_631504_CNTCTRL2 080000D1h C_631504_CNTCTRL3 080000D2h C_631504_CNTCTRL4 080000D3h 設定する値は 下記のビットに対応しています Bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - PERR_ CL EXLTS _CL CBF_C L - CP CC CL 各ビットの意味は下記となります ビット内容 CL 0 1 または 1 0 と値が変化した際に カウンタ値を取得出来る状態にする ( ソフトウェアラッチ ) CC 0 1 または 1 0 と値が変化した際に カウンタ値をクリアする ( ソフトウェアクリア ) CP 0 1 または 1 0 と値が変化した際に カウンタへプリセットレジスタの値をロードする CBF_CL 0 1 または 1 0 と値が変化した際に CBF ビットをクリアする CBF ビットは C_631504_STATUSxx のレジスタ情報を使用して取得できる情報です EXLTS_CL 0 1 または 1 0 と値が変化した際に EXLTS ビットをクリアする EXLTS ビットは C_631504_STATUSxx のレジスタ情報を使用して取得できる情報です PERR_CL 0 1 または 1 0 と値が変化した際に PERR ビットをクリアする PERR ビットは C_631504_STATUSxx のレジスタ情報を使用して取得できる情報です 設定値 ( 例 ) 設定値意味 2h 値を 2 にし カウンタ値のクリアを行う 0 2 に変化させたとき 62
5.7.3 UsbioRead 関数に関する内容 URS-631504 の製品を使用した際の UsbioRead 関数で使用できるレジスタ情報の一覧は下記の通りです レジスタ情報 C_631504_CNT1 C_631504_CNT2 C_631504_CNT3 C_631504_CNT4 C_631504_STATUS1 C_631504_STATUS2 C_631504_STATUS3 C_631504_STATUS4 C_631504_TERM_STATUS1 C_631504_TERM_STATUS2 C_631504_TERM_STATUS3 C_631504_TERM_STATUS4 C_631504_SETREG_REF C_631504_CNTCTRL_REF1 C_631504_CNTCTRL_REF2 C_631504_CNTCTRL_REF3 C_631504_CNTCTRL_REF4 概要チャンネル 1 のカウンタ値を取得します チャンネル 2 のカウンタ値を取得します チャンネル 3 のカウンタ値を取得します チャンネル 4 のカウンタ値を取得します チャンネル 1 のステータス情報を取得します チャンネル 2 のステータス情報を取得します チャンネル 3 のステータス情報を取得します チャンネル 4 のステータス情報を取得します チャンネル 1 の端子状態を取得します チャンネル 2 の端子状態を取得します チャンネル 3 の端子状態を取得します チャンネル 4 の端子状態を取得します C_631504_SETREG で設定した値が反映されているか確認します チャンネル 1 の C_631504_CNTCTRL1 で設定した値が反映されているか確認します チャンネル 2 の C_631504_CNTCTRL1 で設定した値が反映されているか確認します チャンネル 3 の C_631504_CNTCTRL1 で設定した値が反映されているか確認します チャンネル 4 の C_631504_CNTCTRL1 で設定した値が反映されているか確認します 下記にレジスタ情報と取得値についての詳細を記載しています 63
C_631504_CNT1 C_631504_CNT2 C_631504_CNT3 C_631504_CNT4 概要レジスタ情報取得値取得値 ( 例 ) 注意事項 チャンネル xx のカウンタ値を取得します チャンネル 1 識別子 C_631504_CNT1 値 20000010h チャンネル 2 チャンネル 3 チャンネル 4 識別子 値 識別子 値 識別子 値 C_631504_CNT2 20000014h C_631504_CNT3 20000018h C_631504_CNT4 2000001Ch チャンネル xx のカウンタ値が 32bit のデータ (00000000-FFFFFFFFh) として取得されます 取得値 8000h 意味 8000h のカウンタ値を取得 C_631504_LATCH_CLR のレジスタ情報で カウンタの外部ラッチを行わない の設定を行った場合 C_631504_CNTCTRLxx のレジスタ情報を使用して ソフトウェアラッチを行った後 カウンタ値の取得を行ってください C_631504_LATCH_CLR のレジスタ情報で L や Z 相を使用した外部ラッチ の設定を行った場合 L や Z 相に信号を入力し 外部ラッチがされた後 カウンタ値の取得を行ってください C_631504_LATCH_CLR のレジスタ情報で フリーラン の設定を行った場合 常にラッチされた状態になるため C_631504_CNTxx のみでカウンタ値の取得を行うことが出来ます 64
C_631504_STATUS1 C_631504_STATUS2 C_631504_STATUS3 C_631504_STATUS4 概要レジスタ情報 取得値 チャンネル xx のステータス情報を取得します チャンネル 1 識別子 C_631504_STATUS1 値 08000050h チャンネル 2 チャンネル 3 チャンネル 4 識別子 値 識別子 値 識別子 値 C_631504_STATUS2 08000051h C_631504_STATUS3 08000052h C_631504_STATUS4 08000053h 設定する値は 下記のビットに対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - - PERR - EXLTS - CBF U/D 各ビットの意味は下記となります ビット U/D CBF EXLTS PERR 内容現在のカウント方向の状態を表しています 0 カウンタ方向がダウン 1 カウンタ方向がアップキャリー / ボロー発生状態を表しています キャリー :FFFFFFFFh 00000000h に変化することボロー :00000000h FFFFFFFFh に変化すること 0 キャリー / ボロー未発生 1 キャリー / ボロー発生カウンタ外部ラッチの発生状態を表しています ( ソフトウェアラッチは無効 ) 0 外部ラッチ未発生 1 外部ラッチ発生位相差パルスモード (1,2,4 逓倍 ) での入力異常検出状態を表しています 0 入力異常検出が未発生 1 入力異常検出が発生 AB:00 AB:01 正規の状態遷移 異常な状態遷移 AB:10 AB:11 65
取得値 ( 例 ) 注意事項 取得値 1h 意味カウンタ方向がアップした CBF ビットが 1 になった場合は C_631504_CNTCTRLxx のレジスタ情報を使用してビットのクリアを行うことが出来ます EXLTS ビットが 1 になった場合は C_631504_CNTCTRLxx のレジスタ情報を使用してビットのクリアを行うことが出来ます PERR ビットが 1 になった場合は C_631504_CNTCTRLxx のレジスタ情報を使用してビットのクリアを行うことが出来ます 66
C_631504_TERM_STATUS1 C_631504_TERM_STATUS2 C_631504_TERM_STATUS3 C_631504_TERM_STATUS4 概要レジスタ情報 取得値 チャンネル xx の端子状態を取得します チャンネル 1 識別子 C_631504_TERM_STATUS1 値 08000060h チャンネル 2 チャンネル 3 チャンネル 4 識別子 値 識別子 値 識別子 値 C_631504_TERM_STATUS2 08000061h C_631504_TERM_STATUS3 08000062h C_631504_TERM_STATUS4 08000063h 設定する値は 下記のビットに対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - - - - L Z B A 各ビットの意味は下記となります ビット A B Z L 内容 A 相の端子状態を表しています 0 A 相の端子が High 1 A 相の端子が Low B 相の端子状態を表しています 0 B 相の端子が High 1 B 相の端子が Low Z 相の端子状態を表しています 0 Z 相の端子が High 1 Z 相の端子が Low L の端子状態を表しています 0 L 相の端子が High 1 L 相の端子が Low 取得値 ( 例 ) 取得値意味 1h A 相が Low B 相が High Z 相が High L が High 67
C_631504_SETREG_REF 概要レジスタ情報 取得値 C_631504_SETREG で設定した値が反映されているか確認します 識別子 C_631504_SETREG_REF 値 0800008Fh 取得する値は 下記のビットに対応しています Bit7 bit6 bit5 bit4 bit3 bit2 bit1 Bit0 - - - - - - - SET_R ESULT 各ビットの意味は下記となります ビット SET_RESU LT 内容 C_631504_SETREG にライトする値を変化させて C_631504_MODE C_631504_LATCH_CLR C_631504_DFILTER の設定が反映される度に 0 1 または 1 0 と値が変化します 取得値 ( 例 ) 取得値意味 1h 設定値が反映された 0 1 に変化したとき 68
C_631504_CNTCTRL_REF1 C_631504_CNTCTRL_REF2 C_631504_CNTCTRL_REF3 C_631504_CNTCTRL_REF4 概要レジスタ情報 取得値 C_631504_CNTCTRLxx で設定した値が反映されているか確認します チャンネル 1 識別子 C_631504_CNTCTRL_REF1 値 080000E0h チャンネル 2 チャンネル 3 チャンネル 4 識別子 値 識別子 値 識別子 値 C_631504_CNTCTRL_REF2 080000E1h C_631504_CNTCTRL_REF3 080000E2h C_631504_CNTCTRL_REF4 080000E3h 設定する値は 下記のビットに対応しています bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 - PERR_ CL_RE SULT EXLTS _CL_R ESULT CBF_C L_RES ULT - CP_RE SULT CC_RE SULT CL_RE SULT 各ビットの意味は下記となります ビット CL_RESUL T CC_RESUL T CP_RESUL T CBF_CL_R ESULT EXLTS_CL _RESULT PERR_CL_ RESULT 内容 C_631504_CNTCTRLxx のレジスタ情報の CL を変化させてソフトウェアラッチされる度に 0 1 または 1 0 と値が変化します C_631504_CNTCTRLxx のレジスタ情報の CC を変化させてソフトウェアクリアされる度に 0 1 または 1 0 と値が変化します C_631504_CNTCTRLxx のレジスタ情報の CP を変化させてプリセットロードされる度に 0 1 または 1 0 と値が変化します C_631504_CNTCTRLxx のレジスタ情報の CBF_CL を変化させて CBF フラグがクリアされる度に 0 1 または 1 0 と値が変化します C_631504_CNTCTRLxx のレジスタ情報の EXLTS_CL を変化させて EXLTS フラグがクリアされる度に 0 1 または 1 0 と値が変化します C_631504_CNTCTRLxx のレジスタ情報の PERR_CL を変化させて PERR フラグがクリアされる度に 0 1 または 1 0 と値が変化します 取得値 ( 例 ) 取得値意味 1h 設定値が反映された 0 1 に変化したとき 69
5.7.4 カウンタ値の取得を行なうプログラム例 (Visual C++) カウンタ値の取得を行なうプログラム例について記載します // カウントモード等の設定を行います int SubSetMode(HANDLE DeviceHandle) { int ret; // カウントモードの動作を設定します // UsbioWrite 関数の第二引数に C_631504_MODE を指定します // UsbioWrite 関数の第三引数に設定値を指定します // ( 例 ) 位相差パルス 1 逓倍モード 非同期クリア カウント方向 ( 通常方向 ) に設定 ret = UsbioWrite(DeviceHandle, C_631504_MODE, 0x04); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; // カウンタの外部ラッチ クリアの動作を設定します // UsbioWrite 関数の第二引数に C_631504_LATCH_CLR を指定します // UsbioWrite 関数の第三引数に設定値を指定します // ( 例 ) 外部クリア 外部ラッチを行わない // Z 相通常 L の立ち下がりを有効に設定 ret = UsbioWrite(DeviceHandle, C_631504_LATCH_CLR, 0x00); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; // デジタルフィルタの値を設定します // UsbioWrite 関数の第二引数に C_631504_DFILTER を指定します // UsbioWrite 関数の第三引数に設定値を指定します // ( 例 ) デジタルフィルタを停止にする // Digital filter setting ret = UsbioWrite(DeviceHandle, C_631504_DFILTER, 0x00); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; // カウントモード等の設定値を反映する // UsbioWrite 関数の第二引数に C_631504_SETREG を指定します // UsbioWrite 関数の第三引数に 1 と 0 を指定します ret = UsbioWrite(DeviceHandle, C_631504_SETREG, 0x01); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; ret = UsbioWrite(DeviceHandle, C_631504_SETREG, 0x00); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; // チャンネルを設定する // UsbioWrite 関数の第二引数に C_631504_SETREG を指定します // UsbioWrite 関数の第三引数にチャンネルを指定します // ( 例 ) チャンネル 1 を設定する // C_631504_SETCH の処理は C_631504_SETREG で設定を反映した後 実行してください 70
ret = UsbioWrite(DeviceHandle, C_631504_SETCH, 0); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; return 0; // カウンタ値のラッチを行う int SubLatchCount(HANDLE DeviceHandle) { int ret; // カウンタ値のラッチを行う // UsbioWrite 関数の第二引数に C_631504_CNTCTRL1 を指定します // UsbioWrite 関数の第三引数に 1 と 0 を指定します // ( 例 ) チャンネル 1 のカウンタ値のラッチを行う ret = UsbioWrite(DeviceHandle, C_631504_CNTCTRL1, 0x01); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; ret = UsbioWrite(DeviceHandle, C_631504_CNTCTRL1, 0x00); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; return 0; // カウンタ値の取得を行います int SubReadCount(HANDLE DeviceHandle, unsigned int *ReadCount) { int ret; unsigned int readdata; // カウンタ値の取得を行います // UsbioWrite 関数の第二引数に C_631504_CNT1 を指定します // UsbioWrite 関数の第三引数に 1 と 0 を指定します // ( 例 ) チャンネル 1 のカウンタ値の取得を行う ret = UsbioRead(DeviceHandle, C_631504_CNT1, &readdata); if (ret!= IFUSBIO_ERROR_SUCCESS) return -1; *ReadCount = readdata; return 0; int main(void) { HANDLE DeviceHandle; int ret; int i; unsigned int ReadCount; 71
// オープンの処理を行ないます // USBIOxx の xx は製品の DSW の値を指定します // ( 例 )DSW の値を 0 に設定したデバイスをオープンします DeviceHandle = UsbioOpen("USBIO0", IFUSBIO_FLAG_NORMAL); if(devicehandle == INVALID_HANDLE_VALUE) { printf("usbioopen error : %x \n", DeviceHandle); return -1; // カウントモード等の設定を行います ret = SubSetMode(DeviceHandle); if(ret!= 0) return -1; for(i = 0; i < 10; i++){ // カウンタ値のラッチを行います ret = SubLatchCount(DeviceHandle); if(ret!= 0) return -1; // カウンタ値の取得を行います // ラッチ後 カウンタ値の取得を行ってください ret = SubReadCount(DeviceHandle, &ReadCount); if(ret!= 0) return -1; printf("readcount = %xh \n", ReadCount); Sleep(1000); // 終了処理を行ないます // プログラム終了時は必ず UsbioClose 関数を実行してください ret = UsbioClose(DeviceHandle); if (ret!= IFUSBIO_ERROR_SUCCESS) { printf("usbioclose error : %x \n", ret); return -1; return 0; 72
第 6 章サンプルプログラム 以下 各サンプルプログラムの概要を説明します 6.1 実行手順 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ Visual Studio を起動し ファイル メニューから 開く プロジェクト を選び プロジェクトファイル *.vcxproj を開き ビルドしてください Visual Studio 2010 より新しい Version で実行する場合には 下記の設定を行なってください Visual Studio のメニューから プロジェクト - プロパティ - 構成プロパティ - 全般 を開き プラットフォームツールセット を使用している環境に合わせて変更 例 ) Visual Studio 2012 を使用している場合 Visual Studio 2012 (v110) を選択 ( プルダウンメニューより選択できます ) Visual C#.NET Visual Studio を起動し ファイル メニューから 開く プロジェクト を選び プロジェクトファイル *.csproj を開き ビルドしてください Visual Basic.NET Visual Studio を起動し ファイル メニューから 開く プロジェクト を選び プロジェクトファイル *.vbproj を開き ビルドしてください 73
6.2 サンプルプログラム一覧サンプルプログラムの一覧は下記の通りです プログラム名 DI_226120 DO_252102 DI_286111 DO_286111 DI_294133 DO_294133 AD_323416 DA_343416 COUNTER_631504 PRESET_631504 CLEAR_631504 STATUS_631504 概要 URS-226120 の DI1 から DI8 の値を取得します URS-252102 の DO1 を ON にします URS-286111 の DI1 から DI8 の値を取得します URS-286111 の DO1 を ON にします URS-294133 の DI1 から DI8 の値を取得します URS-294133 の DO1 を ON にします URS-323416 の AD1 の AD 変換値を取得します URS-343416 の DA1 から 0V の電圧を出力します URS-631504 のチャンネル 1 について 下記のカウントモードに設定して カウンタ値を取得します 位相差パルス 1 逓倍モード URS-631504 のチャンネル 1 について プリセットデータ (1000h) を設定して カウンタ値を取得します URS-631504 のチャンネル 1 について カウンタ値の取得処理の途中で カウンタ値のクリアを行います URS-631504 のチャンネル 1 について ステータスの情報を取得します 74
第 7 章ユーティリティ 7.1 IfUsbIoUtil 本ユーティリティを使用することで 下記が可能になります PC に接続されている CoolIOs USB 製品の接続一覧の確認が可能 ベンダー ID プロダクト ID DSW 番号の情報取得が可能 ユーティリティのバージョン情報の確認が可能 7.1.1 起動方法 スタートメニュー すべてのプログラム Interface DPC-0403 IfUsbIoUtil を選択し ユーティリティを起動します または < インストール先 >\interface\dpc0403\bin\ifusbioutil.exe を実行し ユーティリティを起動します 75
7.1.2 機能 1. メイン画面ユーティリティを起動すると 下記の画面が表示されます 1 2 3 4 5 6 7 8 各内容は下記の通りです 番号 1 2 3 4 5 6 7 8 機能 File メニューを表しています クリックすると下記の項目が表示されます 項目説明 Update メイン画面の情報を更新します Save メイン画面に表示している情報をログファイルとして保存します Exit ユーティリティを終了します Help メニューを表しています クリックすると下記の項目が表示されます 項目説明 Version Information バージョン情報画面を表示します 接続されている CoolIOs USB 製品の製品型式が表示されます 接続されている CoolIOs USB 製品のデバイス名が表示されます 接続されている CoolIOs USB 製品の DSW の値が表示されます 接続されている CoolIOs USB 製品のベンダ ID の値が表示されます 接続されている CoolIOs USB 製品のプロダクト ID の値が表示されます 接続されている CoolIOs USB 製品シリアル番号の値が表示されます 76
2. バージョン情報画面メイン画面の Help メニュー Version Information を選択すると 下記の画面が表示されます 1 各表示の内容は下記の通りです 番号機能 1 ユーティリティのバージョン情報が表示されます 77
7.1.3 トラブルシューティングユーティリティのトラブルシューティングは下記の通りです No. 項目 内容 1 ユーティリティ起動後 設定ファイルが見つかりませんでした とエラー表示になる 設定ファイルが無い場合に生じるエラーです ユーティリティ (IfUsbIoUtil.exe) があるフォルダ内に設定ファイル (setfile.ini) が格納されているか確認してください 2 ユーティリティのログファイルを C:\windows\system32 等の管理者権限が必要なフォルダに保存できない 3 メイン画面の Product Name の項目が no name と表示される ログファイルを管理者権限が必要なフォルダに保存したい場合は ユーティリティを管理者権限で起動してください 下記のいずれかの問題に該当します 設定ファイルの情報取得に失敗した場合 CoolIOs USB 製品のベンダ ID やプロダクト ID が意図しない値が取得された場合 弊社まで問い合わせください 4 メイン画面の DSW や Vendor ID の項目に何も表示がない CoolIOs USB 製品の情報取得に失敗しています 弊社まで問い合わせください 5 PC に接続した CoolIOs USB 製品の個数と メイン画面に表示されている CoolIOs USB 製品の個数が異なる PC に接続している CoolIOs USB 製品の DSW の値が重複している可能性があります DSW の値が重複していないか確認してください 78
第 8 章重要な情報 保証の内容と制限弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと またはその実行に誤りが無いことを保証していません 本製品の品質や使用に起因する 性能に起因するいかなるリスクも使用者が負うものとします 弊社はドキュメント内の情報の正確さに万全を期しています 万一 誤記または誤植などがあった場合 弊社は予告無く改訂する場合があります ドキュメントまたはドキュメント内の情報に起因するいかなる損害に対しても弊社は責任を負いません ドキュメント内の図や表は説明のためであり ユーザ個別の応用事例により変化する場合があります 著作権 知的所有権弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています 本製品はコンピュータソフトウェア 映像 / 音声 ( 例えば図 文章 写真など ) を含んでいます 医療機器 / 器具への適用における注意弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計 製造された物では有りません 弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機器と共に設計された物では有りません 医療機器 治療器具などの本製品の適用により 製品の故障 ユーザ 設計者の過失などにより 損傷 / 損害を引き起こす場合が有ります 複製の禁止弊社の許可なく 本ドキュメントの全て または一部に関わらず 複製 改変などを行うことはできません 責任の制限弊社は 弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害 偶発的損害 間接的な損害 重大な損害について 責任を負いません 本製品 ( ハードウェア, ソフトウェア ) のシステム組み込み 使用 ならびに本製品から得られる結果に関する一切のリスクについては 本製品の使用者に帰属するものとします 本製品に含まれるバグ あるいは本製品の供給 ( 納期遅延 ) 性能もしくは使用に起因する付帯的損害もしくは間接的損害に対して 弊社に全面的に責がある場合でも 弊社はその製品に対する改良 ( 正常に動作する ) 代品交換までとし 金銭面での賠償の責任は負わないものとしますので 予めご了承ください 本製品 ( ソフトウェアを含む ) は 日本国内仕様です 本製品を日本国外で使用された場合 弊社は一切責任を負いかねます また 弊社は本製品に関し 海外での保守サービスおよび技術サポート等は行っておりません 79
商標 / 登録商標本書に掲載されている会社名 製品名は それぞれ各社の商標または登録商標です 80