USB-UNIV-IO の概要

1 USB-UNIV-IO の特徴

  全ての端子を、入力としても出力としても利用できますので、入出力の数に変動がある場合や、数にアンバランスが大きい場合にも対応できます。

  弊社のUSB-IOの特徴である、パソコンとは絶縁された入力と出力を構成することは、このUNIV-IOでも継承されています。このことは、特に計測システムでは重要ですし、制御システム全体の安定化には必須です。

  出力はプルアップされたオープンコレクタ(MAX:+5V, 20mA)相当であり、入力はロジックレベル(シュミット)で動作します。( 11:CN1,CN2 I/F部参照 )

  I/O部は、64点が一枚のI/O基板に載っており、これを最小単位として最大8枚のI/O基板を制御することができます。したがって最大で512の端子を自由に入力としても出力としても使用できます。なお、入出力電圧は基板上のジャンパー挿し換えで5V(JV2)と3.3V(JV1)を選択できます。

  CPU部とI/O部は一体にもできますし分離も可能です。 分離する場合は、CPU部のみ制御の壁に取り付けることもできます(要:ストレート型USBコネクタ裏付け)

  開発環境として、VB6VB.NET(2005~), VC++/CLI(2008~), VC#(2008~)に対応します。VB6は、XPモードである必要がありますが、VB.NET/VC++/VC# ではその必要はなく、VistaWindows 7などでも、そのままの環境で開発できます。( ただし、VB6はドライバーが違いますからPlug & Playのセットアップ時にどちらを使うかを下記の説明のように選択します )

  Visual Studio の基礎を習得されていれば、確実にご自分のアプリケーションに組み込めます。組み込みしやすいように構成したサンプルプログラム(モニター)をソース込み(プロジェクト)で提供しています。この方法で、多くの方が移植している実績があります。


2 USB-UNIV-IOのセットアップ

USBケーブルを接続せずに、基板セットに電源(5V)を供給してください ( 10ページの「図10 ) 接続の略図」を御参照ください) CPUボードの赤のLEDが点灯し、セットアップ待ちとなります。添付のCDをドライブに入れてください。

ここでは、VB.NET/VC++/VC#で動かすこととし、WinUSBをインストールするように説明いたしますがVB6でも同様に操作できます。次にUSBケーブルを接続します。「新しいハードウェアの検出」ウィザードが起動されます。

               図 1 )

                図 2 ) 

               図 3 ) 

添付のCDをドライブに入れて「参照」のボタンをクリックしてVB.NET/VC++/VC#でインストールする場合は、CDのドライブの\DriverByWinUSB\DriverWinUSBホルダを指定します。(VB6でインストールする場合は、CDドライブの\DriverByApiDLL\DriverAPIホルダを指定)

インストール作業は、 OSによりやや表現の違いがありますが似ているので分かると思います。

「次へ」のボタンをクリックします。「Windowsセキュリティ」の画面が出ましたら「このドライバソフトウェアをインストールします」をクリックして下さい。

インストールが開始されます。WinUSBのインストールには結構時間がかかります。(510分程度)

               図 4 )

               図 5)

確認のために、デバイスマネージャを起動して下図のようにインストールされているのをご確認下さい。(コントロールパネル−システム−デバイスマネージャ)

 

              図 6 )

              図 7 )

WinUSB(VB.NET/VC++/VC#)でセットアップした場合は 6)の表示、DLL(VB6) でセットアップした場合は 7 )の表示となります。この時、CPUボードの赤のLEDは消灯し、緑のLEDが点灯しています。これでUSB-UNIV-IOは、いつでも使える状態になっています。

将来、もしドライバーを入れ替える必要が生じた時は、切り替え可能です。(Appendix・参照)


3 】サンプルプログラムの操作

1.    サンプルソフトの配置と環境設定

CDの中にVB.NETのサンプルとして「\DriverByWinUSB\UsbUVIO_WUmon」ホルダ、
VC++のサンプルとして「\DriverByWinUSB\USB_UNIV_IOM_VCpp
」ホルダ、
VC#のサンプルとして「\DriverByWinUSB\USB_UNIV_IOM_VC#
」ホルダ、それにVB6のサンプルとして「\DriverByApiDLL\UsbUVIO_Mon_VB6」ホルダがあります。必要な方をホルダ込コピーしてパソコンの任意(ご自分が使う場所)の位置に貼り付けて下さい。これらの中にサンプルソフトのソースを含めたファイル一式が納められています。

VB.NETの場合は、\UsbUVIO_WUmon\bin\ UsbUVIO_Mon.exe、
VC++の場合は、USB_UNIV_IOM.exe
を、VC#の場合は、UsbUNIV_IOM.exeを、VB6の場合は、\UsbUVIO_Mon_VB6\ UsbUVIO_Mon.exeをダブルクリックして起動します。もし、VB.NETVB6がインストールされていない環境で実行される時は、CDの中の「EnviromentSetup」ホルダの中にある「EnvSetup.EXE」をダブルクリックして実行して下さい、これで実行に必要な環境が設定されます。(VB.NET, VB6 の場合のみ)

注!VB6の場合、ユーザーアカウント制御(UAC)のあるOS(Vista)は、これをOFFにするかXPモード (EXEファイルを右クリックしてプロパティ-互換性タブの「互換モードでこのプログラムを実行する」にチェックを入れる) にしてサンプルプログラムを実行して下さい。VB.NETはこの配慮は不要です。

2.    サンプルソフトの実行

簡単化のために、I/O基板は1枚で、そのアドレスは'B0'にジャンパピンが差さっている状態でご説明いたします。(写真3) 10)参照)

先に配置しましたサンプルをダブルクリックして起動して下さい。起動された画面と操作は、VB.NETVB6もまったく同じです。

Open」ボタンをクリックします、すると赤の「Comm Off」窓が緑の「Comm On」に変わりモニターが開始され下図のように表示されます。もし「Select Board Group No.」のラジオボタンが'1,2'の選択になっていなかったら'1,2'を選択して下さい。

         図8)

上半分の画面には、入出力ポートが64ビット(164)表示されています。8ビットを一組としてそれぞれ順番に'00000000'の形で示しています。'0'OFFを表し、'1'ONを表します。I/O基板1枚で入出力は64ビットです。左半分の’I/O Board1’が現在実装されているもので、右半分の非アクティブになっている64ビットが、未実装の基板番号’2’を意味しています。このI/O基板を追加搭載したら、ここで表示されているモニターは、すべてアクティブになりますが、ここでは1枚の状態でご説明します。

[ モニターでの操作 ]

マウスのカーソルをPIN-0の第0ビットの'0'の上に持って行き、その状態でクリックして下さい、ピッと音がしてモニターは'10000000'と表示され第1番がONしたことが確認されます。同じビットをもう一度クリックするとやはりピッと音がして、'0'に戻りOFFされます。この操作はトグルになっています。アクティブなどのビットもこの操作ができます。この時にI/O基板のCN1の1番ピンにLED(+5V-330Ω-LED)などの負荷を付けておけば’1’の時に点灯します。ここを’0’にしておいてCN1の1番ピンをGNDに接続(入力ON)すると、このビットが’1’になります。入力がONしたということです。このように入力として使うときは、出力は’0’でないといけません。

[ アプリケーションに組み込むときのサンプルでの操作 ]

下半分の画面はアプリケーションに組み込む場合のサンプルです。VB6(またはVB.NET)のデザイン画面で操作ボタンをダブルクリックすると、それを実行するコードが現れますので、それをアプリケーションに組み込む際のサンプルにしてください。

(バイト出力)

バイト出力」のBOARD'1'とし、OUT PIN’OUT 1_8’DATA'5A'として「バイト出力」のボタンをクリックして下さい。モニターの’1-8’'01011010'と表示され、16進数(HEX)'5A’が出力されていることがわかります。出力範囲は、OUT PINのプルダウンリストの範囲を選択できます。

(ワード出力)

ワード出力」のBOARD'1'とし、OUT PIN’OUT 1_16’DATA'6C93'として「ワード出力」のボタンをクリックして下さい。モニターの’1-16’'1100100100110110'と表示され、16進数(HEX)'6C93’が出力されていることがわかります。出力範囲は、OUT PINのプルダウンリストの範囲を選択できます。

(DWord出力)

DWord出力」のBOARD'1'とし、OUT PIN’OUT 1_32’DATA'ABCD1234'として「DWord出力」のボタンをクリックして下さい。

モニターの’1-32’'00101100010010001011001111010101'と表示され、16進数(HEX)'ABCD1234’が出力されていることがわかります。出力範囲は、OUT PINのプルダウンリストの範囲を選択できます。

 (Bit ON)

Bit ON」のBOARD'1'とし、BIT'7'として「Bit ON」のボタンをクリックして下さい。モニター上で7番目のビットがONしたことがわかります。この操作は上の「モニターでの操作」でのマウスによるビットON操作と結果として同じです。

(Bit OFF)

Bit OFF」のBOARD'1'とし、BIT'7'として「Bit OFF」のボタンをクリックして下さい。上で「Bit ON」したビットをOFFする操作です。モニター上で7番目のビットがOFFしたことがわかります。この操作は上の「モニターでの操作」でのマウスによるビットOFF操作と結果として同じです。

(単点出力サンプル)

BOARD1PIN914’100111’を出力するサンプルです。コードで任意の範囲に任意のデータ出力する場合のサンプルとなります。

(バイト入力)

バイト入力」のBOARD'1'とし、INPUT PIN’IN 1_8’として「バイト入力」のボタンをクリックして下さい。入力したデータをDATA欄に16進数(HEX)で表示します。モニターの表示とも合っていることがわかります。入力範囲は、INPUT PINのプルダウンリストの範囲を選択できます。

(ワード入力)

ワード入力」のBOARD'1'とし、INPUT PIN’IN 1_16’として「ワード入力」のボタンをクリックして下さい。入力したデータをDATA欄に16進数(HEX)で表示します。モニターの表示とも合っていることがわかります。入力範囲は、INPUT PINのプルダウンリストの範囲を選択できます。

 (DWord入力)

DWord入力」のBOARD'1'とし、INPUT PIN’IN 1_32’として「DWord入力」のボタンをクリックして下さい。入力したデータをDATA欄に16進数(HEX)で表示します。モニターの表示とも合っていることがわかります。入力範囲は、INPUT PINのプルダウンリストの範囲を選択できます。

(Bit 入力)

Bit入力」のBOARD'1'とし、INPUT PIN'7'として「Bit 入力」のボタンをクリックして下さい。7番目のビットがONであれば’1’OFFであれば’0’が表示されます。

(単点入力サンプル)

BOARD1PIN914の入力を読みだすサンプルです。コードで任意の範囲の入力データを読み出す場合のサンプルとなります。

(単点出力記録入力サンプル)

BOARD1PIN914の出力記録を読みだすサンプルです。コードで任意の範囲の出力データの記録を読み出す場合のサンプルとなります。

 (I/O基板実装状況とファームウェアバージョン)

ボタンをクリックすると、Statusに「01」と表示されます。これは、'B0' をジャンパしたI/O基板が1枚のみ実装されていることを表しています。もし、'B1' をジャンパしたI/O基板を追加した場合の表示は'03'となり、最大の8枚をフル実装した場合は'FF'となります。この機能は、このソフトの上半分のビットモニターのアクティブ・非アクティブ(非実装)を実現するのに利用しています。Versionは、このファームウェアのバージョンを示します。下図は、ある状態の動作確認中の画面です。

         図9)

   3. アプリケーションへの組み込み

[ VB.NETの場合 ]

このサンプルソフトのソリューションは、UsbUVIO_Mon.slnです。これを起動するとその中に、「clsDevice.vb」と「mduDeviceUV.vb」が組み込まれています。この二つのファイルをご自分の開発ソリューションに追加するとUSB-UNIV-IOをソフトから操作できるようになります。「mduDeviceUV.vb」のテキストの上部の方に解説がありますのでご参照ください。


[ VC++/CLI
の場合 ]

このサンプルソフトのソリューションは、USB_UNIV_IOM.slnです。これを起動するとその中に、「USB_UNIVIO.cpp」と「USB_UNIVIO.h」が組み込まれています。この二つのファイルをご自分の開発ソリューションに追加するとUSB-UNIV-IOをソフトから操作できるようになります。「USB_UNIVIO.cpp」のテキストの上部の方に解説がありますのでご参照ください。

[ VC# の場合 ]

このサンプルソフトのソリューションは、UsbUNIV_IOM.slnです。これを起動するとその中に、「USB_UNIVIO.cs」と「WinUsbDriver.cs」が組み込まれています。この二つのファイルをご自分の開発ソリューションに追加するとUSB-UNIV-IOをソフトから操作できるようになります。「USB_UNIVIO.cs」のテキストの上部の方に解説がありますのでご参照ください。

[ VB6の場合 ]

このサンプルソフトのプロジェクトは、UsbUVIO_Mon.vbpです。これを起動すると、その中に「USB_UVIO.bas」が組み込まれています。このファイル(標準モジュール)をご自分のプロジェクトに組み込んでください。このテキストの上部の方に解説がありますのでご参照ください。
VB6の場合は、mpusbapi_vb.dll をご自分のアプリケーションの実行ファイル(EXE)と同じホルダに入れて置く必要があります。
注!VB6の場合ユーザーアカウント制御(UAC)のあるOS(Vista)で、VB6のIDE環境から走らせる場合は、UACOFF するかVB6.EXEのプロパティのXP互換モードにチェックを入れる必要があります。そうしないと、IDEからはデバイスを認識できなくなります。


4. 簡易テストのための接続

出力はオープンコレクタ相当になっていますので、フォトカプラやLEDを接続してON('1')OFF('0')を確認できます (ただし、電源はMAX +5V, 20mA) 。入力はGNDに落とすことでON('1')となりますのでスイッチをつけてGNDに接続('1')・非接続('0')で入力を確認できます。

テストのための冶具(写真0)を作れば良いのですが、簡易テストとしては、CN1CN2のコネクタを折り返しで接続(写真1)すると’132’に出力したデータが入力として’3364’にも表示されます。その逆も同様です。これで入出力同時のテストができます。

     
                        写真0) テスト用冶具接続状況

         

               写真1) 折り返しケーブル

4 】構成基板について

1.  CPU基板

この基板の収納場所については、二通りを考慮しています。

I/O基板の数が少なく、かつUSBコネクタの配置に支障がない場合は、下の写真のように子亀のように乗せることができます。

        

                  写真2) CPU + I/O x 2 実装例

I/O基板の数が増えると子亀の配置では無理になってまいりますので、CPU基板のUSBコネクタの種類をストレートに変えてそれをCPU基板のハンダ面()に取り付けて、基板を制御のケースにネジ止めするのが実装しやすいと思います。

2.  I/O基板

写真2) のように、CPU基板とI/O基板との接続は、14Pinのフラットケーブルで数珠つなぎします。電源は、CPU基板に加える+5VGNDUSBGNDは絶縁されています。ですので、I/O基板の+5VCPU基板の+5Vは共通で構いません。

I/O基板には、写真3)のような、アドレス設定をするためのジャンパー部があります。一つのCPU基板に接続するI/O基板のアドレスは重複させてはいけませんので、それぞれ違ったアドレスになるように設定してください。

          

            写真3) I/O基板のアドレス設定ジャンパー部

3.  接続略図

 

   

                   図10) 接続の略図

電源の極性(±)と電圧、接続ピンには充分ご注意ください。間違えると基板を壊してしまいます。

  

4.  コネクタ表

( CPU基板 )

  CN-3: Power
 1    +5V
 2   GND(5V)






               CN-2: BUS
  B1  1   2    B2
  B3  3  4   B4
  B5  5  6   B6
  B7  7  8   B8
   OE  9  10    DAT
   NC  11  12    CLK
GND(5V)  13  14 GND(5V)

( I/O 基板 )

CN-3: PWR
 1   +5V
 2 GND(5V)






CN5: BUS

CPU基板の

CN-2: BUS

まったく同じ







CN-4: OUT
  PIN-1   1   2   PIN-2 
  PIN-3   3  4  PIN-4 
  PIN-5   5  6  PIN-6 
  PIN-7   7  8  PIN-8 
  PIN-9   9  10  PIN-10 
  PIN-11   11  12  PIN-12 
  PIN-13   13  14  PIN-14 
  PIN-15   15  16  PIN-16 
  PIN-17   17  18  PIN-18 
  PIN-19   19  20  PIN-20 
  PIN-21   21  22  PIN-22 
  PIN-23   23  24  PIN-24 
  PIN-25   25  26  PIN-26 
  PIN-27   27  28  PIN-28 
  PIN-29   29  30  PIN-30 
  PIN-31   31  32  PIN-32 
  GND(5V)  33  34  GND(5V)

CN-5: IN

  PIN-33  1   2    PIN-34 
  PIN-35  3  4   PIN-36
  PIN-37  5  6   PIN-38
  PIN-39  7  8   PIN-40
  PIN-41  9  10   PIN-42 
  PIN-43  11  12   PIN-44 
  PIN-45  13  14   PIN-46 
  PIN-47  15  16   PIN-48 
  PIN-49  17  18   PIN-50 
  PIN-51  19  20   PIN-52 
  PIN-53  21  22   PIN-54 
  PIN-55  23  24   PIN-56 
  PIN-57  25  26   PIN-58 
  PIN-59  27  28   PIN-60 
  PIN-61  29  30   PIN-62
  PIN-63  31  32   PIN-64
 GND(5V)  33  34  GND(5V)



       

                   11) CN1,CN2 I/F


5 Appendix

(ドライバーの切り替え:  WinUSB -> DLL) 逆の切り替えも同様にできます。

デバイスマネージャで現在のドライバー(WinUSB for VB.NET)を削除します。

         

            
  
  削除後、ターゲットのUSBコネクタを抜き、3秒後くらい後に再度さしてPlug&Playを起動する。
  
‘?’付きのデバイスが出るがそのままにしておく

         

         

         

         

         

      元、インストールされていたものが表示されるが「ディスク使用」で別に指定する


          

    今回はVB6用のDLLに切り替えるので画面に表示されているホルダ(CD)を参照で指定する


         

         

         

         
戻 る