IEEE 1394従来NI-IMAQおよびNI-IMAQdx使用したFireWire®カメラから画像集録

概要

このドキュメントでは、IEEE 1394 (FireWire) をNI製品と一緒に使用する方法について説明します。

内容

概要

IEEE 1394カメラは標準インタフェースで使いやすいため、マシンビジョン業界において急速に普及しています。NIでは、使いやすいAPIを使用してIEEE 1394カメラを制御できるハードウェアドライバを開発しました。このドキュメントでは、IEEE 1394カメラの詳細およびNI計測器ドライバとの併用方法について説明します。

IEEE 1394技術

履歴

FireWire (Sonyではi.LINK) として知られるIEEE 1394は、汎用高速シリアルバスとして1989年にApple社によって開発された高性能シリアルバスです。このバスは当時大きな期待をもって迎えられ、PC市場でどのように普及するのか注目の的でした。長い間、もう1つの新しい技術であるUSBとの比較が検討されてきましたが、次第にUSBはマウスやキーボードの接続を含む低速I/O用のシリアルバスとして使用されるようになり、IEEE 1394はデジタルビデオやビデオカメラなどの高帯域幅アプリケーションでよく使用されるようになりました。最近では工業用カメラでもこのバスを取り入れ、現在多くのIEEE 1394カメラが市場に出回っています。

機能

IEEE 1394バスには、PCIやISAのような従来型内部PCバスよりも使用しやすい特徴がいくつかあります。IEEE 1394を使用して接続されているデバイスはホットプラグ可能なので、デバイスを取り付けまたは取り外しするたびにPCの電源を切る必要がありません。このバスには、デバイスの自動検索機能もあり、ユーザはデバイスを取り付けるだけで手動で構成を行う必要なく、ソフトウェアがデバイスを検索してインストールします。

このバスはRS232もしくはUSBに比べて高速で、IEEE 1394aでは最大400 Mbps、IEEE 1394bでは最大800 Mbpsのレートで動作します。IEEE 1394ケーブルには、4ピン式と6ピン式があります。4ピン式バスは電源を供給しませんが、6ピンの場合は電源供給があります。通信はピアツーピアで、たとえばビデオカメラはPCによる介入なしにVCRと直接通信できます (デイジーチェーン接続)。また、​1,023​バス​に対して​アドレス​指定​が​でき、​バス​あたり​最大​63​デバイス​まで​接続​でき​ます​が、​実際​に​複数​デバイス​を​接続​した​場合、​指定​機能​に​か​かわら​ず​使用​できる​帯域​幅​に​は​限度​が​あり​ます。

データを転送できる距離はさまざまです。標準のIEEE 1394ケーブルは4.5メートルです。ワイヤレス技術を使用したり、IEEE 1394ケーブル間にハブを配置したりすることでデータ転送の距離を延長できます。以下は、IEEE 1394デバイスを長距離間で接続する場合のオプションです。

  • 42 m (ワイヤ、2ノード間で最長4 mまで)
  • 100+ m 光ケーブル (NEC)
  • 20+ m ワイヤレス (Philips)

非同期転送

IEEE 1394バスには、2種類のデータ転送方法があり、1つは転送を保証する非同期転送で、もう1つは帯域幅を保証するアイソクロナス転送です。非同期データ転送は、データを受け取ったことを示す確認パケットを受信することで、すべてのデータが正常に転送されたことを保証します。デバイスが非同期転送モードに設定されていて、データを送信した後で確認パケットを受け取らなかった場合、デバイスはコマンドを再送信します。このデータ転送モードはデータが確実に転送されたことを保証します。しかし、再送信する場合もあるので、帯域幅は保証できません。



以下に、データの整合性は保証しますが、帯域幅は保証しない極端な例を挙げてみましょう。バス​上​に​デバイス​が​10​個​あり、​そのうち​9​個​は​低速​で​100 Kbps、​残り​の​1​個​は​高速​で​6 Mbpsを​必要​と​想定​し​ます。転送するデータの合計はおよそ7 Mbpsになります。一見、​50 Mbpsを​サポート​できる​バス​では​この​設定​を​使用​し​て​問題​は​ない​よう​ですが、​非同期​転送​モード​では​IEEE 1394​は​ラウンド​ロビン​バス​アクセス​を​使用​し​てい​ます。ここで各パケットのサイズが1 KBで、各デバイスがデータを転送するのに25 μ秒かかると想定すると、高速デバイスは250 μ秒ごとに1 KBのパケットしか送信することができず、スループットは4 Mbpsにすぎないことがわかります。この場合、デバイスはすべてのデータを送信できません。

アイソクロナス転送

アイソクロナスデータ転送は、帯域幅を保証しますがデータの整合性は保証しません。​各​デバイス​が​バス​上​に​設置​さ​れる​と、​デバイス​は​バス​の​帯域​幅​を​要求​し​ます。デバイス​が​要求​する​帯域​幅​の​大​き​さ​は​パケット​の​サイズ (KB/​パケット​単位) ​によって​決まり​ます。バスは125 μ秒サイクルに分割されます。各サイクルは非同期サイクルの開始パケットで開始されます。アイソクロナス帯域幅を要求するデバイスには、各サイクルで1つのパケットが保証されます。各デバイスからパケットが送信されると、サイクルの残りを使用して別の非同期転送を行うことができます。全体でみると、各サイクルの約80%がアイソクロナスデータ転送に使用されます。受信​側​は​パケット​を​受信​した​という​確認​を​行​わ​ない​ため、​データ​が​バス​で​確実​に​転送​さ​れ​たか​どうか​保証​でき​ま​せん。​しかし、​一方で​受信​さ​れる​データ​は​送信​さ​れ​た​データ​と​合​って​いる​こと​が​保証​さ​れ​ます。​ほとんどの場合 (特にバス上にデバイスが2つしかない構成の場合)、転送は正常に行われます。



IEEE 1394デバイスは特定のレートでデータを転送できますが、アイソクロナス転送の場合、データは複数のサイクルに分割されるので、実際のスループットは異なる方法で計算する必要があります。アイソクロナス転送の各サイクルは125 μ秒であるため、1秒間に8000サイクルあることになります。また、各デバイスは1サイクルにつき1つのパケットを送信します。このため、1秒あたりのバイト数におけるスループットはバイト単位のデバイスのパケットサイズに8000をかけたものになります。

帯域幅:

バスの合計帯域幅は、1394バス上のすべてのデバイス間で共有されます。1394a仕様では、デバイスは400、200、100 Mbpsで実行可能で、1394b仕様では800 Mbpsが追加されます。200および100の構成は、レガシー (従来型) デバイスのためにあります。各デバイスには、コントローラを実行するバス速度と必要な帯域幅を含むレジスタセットがあります。帯域幅の割り当ては、バスをリセットするときに行われます。バスリセットは、デバイスが接続されたとき、バスに電源が投入されたとき、デバイスが明示的にバスリセットのコマンドを送信したときに行われます。そのデバイスに十分な帯域幅がない場合、アイソクロナスチャンネルにはアクセスできませんが、バスには検出されます。

全体的スループットはホストコンピュータのバス帯域幅によって決まることに注意してください。ホストにPCIバスがあり、別のPCIデバイスが帯域幅を使用していると、IEEE 1394からPCIバスへ400~800 Mbpsの速度で転送できない場合があります。

IEEE 1394カメラDCAM仕様

基礎知識

IEEE 1394 DCAM (デジタルカメラ仕様) は、IEEE 1394 Trade Associationによって管理されています。この仕様はIEEE 1394の物理バスおよびデータ転送プロトコルに組み込まれています。これによって画像形式のセットを定義し、カメラ内部の制御と通信を記録します。また、デジタルビデオ伝送にアイソクロナスプロトコルを使用すると指定します。必要な帯域幅が保証されるので、ビデオにはアイソクロナスプロトコルが適しています。アイソクロナスプロトコルを使用することで、コンピュータに転送されたフレームが最新のフレームであることが保証されます。データ整合性は保証されませんが、ケーブルが短く、ノイズがほとんどない環境下でバス上に他のデバイスがない場合、データの整合性にほとんど影響はありません。

最新​の​DCAM​仕様​は​1.3​で、​1​つ​の​バス​上​に​最高​16​台​の​カメラ​まで​使用​でき​ます。またYUV (ピクセルあたり8、12、16または24ビット) およびRGB (ピクセルあたり24ビット) の圧縮標準を含む標準解像度とカラーフォーマットも使用できます。この仕様では、トリガ、ゲイン、シャッター速度などの標準機能の実装方法も定義しています。この仕様で定義されたフレームレートは1.875 fps~60 fpsの範囲になります。これらの設定が選択されると、カメラは各アイソクロナス転送で送信されるパケットのサイズを自動的に割り当てます。このパケットサイズは固定値で、カメラが消費するアイソクロナス帯域幅の量を決定します。アイソクロナス転送では、すべてのデバイスがパケットを125 μ秒内に納める必要があります。

また、DCAMにはformat 7というオプションがあり、ベンダは画像の形式を定義できます。このモードでは、異なる解像度を異なるフレームレートで取得でき、パケットサイズも変更することができます。各カメラには、離散的なパケットサイズのセットがありますが、ユーザは複数のパケットサイズの中から各解像度とフレームレートに対応するサイズを選択することができます。別の形式では、フレームレートや画像サイズを変更することによってのみパケットサイズを変更できます。

複数カメラ接続する

バスに接続できるカメラの数は、各デバイスのバケットサイズと各パケットが転送される速度 (400~800 Mbps) によって決定されます。前述したように、パケットサイズはカメラ設定の現状によって決まります。format 7モードの場合は、ユーザがパケットサイズを制御できます。​1​つ​以上​の​カメラ​が​大きな​パケット​を​処理​する​よう​に​構成​さ​れ​て​いる​と、​バス​に​接続​できる​カメラ​の​数​が​制限​さ​れ​ます。​バス​が​各​カメラ​に​帯域​幅​を​割り当て​ら​れ​ない​場合、​カメラ​の​フレーム​レート​または​ビット​深度​を​小​さくする​必要​が​あり​ます。または、format 7を使用して、送信するパケットサイズを指定することもできます。パケットサイズを設定する際は、次の事項に注意します。

  • 必要なフレームレート
  • カメラの数
  • 各画像の転送時間

画像をカメラからホストに転送する時間は速めることができます。これは、パケットサイズを大きくすることで可能ですが、各アイソクロナス転送で他のカメラが転送できるパケット帯域幅が制限されます。フレームレートが低いと、パケットサイズを小さくすることができます。これによって画像の転送時間が長くなりますが、フリーの帯域幅が増えるので他のデバイスが125 μ秒内にパケットを送信できるようになります。下の2つの図を比較してみます。最初の図では、カメラ1は大量の帯域幅を予約しており、250 μ秒内にフルイメージを転送します。しかし、設定したパケットサイズが大きいので、2台目のカメラが使用できる帯域幅が十分にありません。


次の図では、カメラ1のパケットサイズが半分になっています。こうすることで、フレームの転送時間を500 μ秒に増やして全体のフレームレートも保持することができます。2台目のカメラを使用できるだけの帯域幅もフリーになります。この例では、両方のカメラに同じ量のデータがあり、IEEE 1394バスを介して転送する必要があります。



複数のカメラを使用する際に、注意するもう一点は、各カメラの電力消費量です。カメラへの電源がPCIバスから供給されている場合、複数のカメラに供給できる電力がありません。複数カメラを使用する場合、外部電源があるハブを使用してIEEE 1394ポートを拡張することを推奨します。標準的なカメラでは、3~ 5 Wの電力が必要です。ホストコンピュータでカメラが検知されない場合、すべてのカメラに電力が供給されていないことを表しています。

形式

  • Format 0:VGA非圧縮 (最大640×480)
  • Format 1:VGA非圧縮 (最大1024×768)
  • Format 2:VGA非圧縮 (最大1600×1200)
  • Format 3、4、5:予約済み
  • Format 6:静止画像の保存
  • Format 7:カメラ固有の形式

各​形式​に​は​YUV 4:4:4、RGB、Mono 8​など​複数​の​モード​が​含​まれ​ます。​4:4:4​は、​各​3​つ​の​カラー​プレー​ン​で​適用​さ​れる​圧縮​度​を​示し​ます。​値4はそれぞれ圧縮が適用されていないことを示し、各カラープレーンのデータは1バイト (8ビット) で表されます。値が2の場合は、それに対応するカラープレーンが4ビット (非圧縮カラープレーンの半分) に圧縮されたことを示します。

NI-IMAQdx


NI-IMAQdxは、​NI​が​提供​する​ハードウェアドライバ​で、​IEEE 1394​バス​と​の​低​レベル​インタフェース​を​行い​ます。この​ドライバ​に​は、​LabVIEW VI、​Vision Assistant​および​Vision Builder AI​の​プラグ​イン​サポート、​また​LabWindows/CVI​および​Microsoft Visual Studio​用​の​API​サポート​が​含​まれ​てい​ます。また、Compact Vision Systemに接続されているカメラの構成に必要とされるサポートファイルもインストールされます。インストール完了後、Measurement & Automation ExplorerでIEEE 1394カメラを構成します。このドライバには各アプリケーション開発環境に対応したサンプルプログラムが含まれており、IEEE 1394カメラを使用した集録をすぐに開始できるようになります。NI-IMAQdxは、​レ​ガ​シー (従来​型) ​IEEE 1394​カメラ​用​NI-​IMAQ​ドライバ​も​インストール​し​ます。

NI-IMAQdxは、Vision Acquisition Software​パッケージ​の​一部​で、ni.com​から​購入​する​こと​が​でき​ます。

ハードウェアオプション

NI-IMAQdxを使用してIEEE 1394カメラから集録を行うには、2つのハードウェアオプションがあります。NI 145x Compact Vision System、またはPCに差し込むIEEE 1394ボードを​使用​する​こと​が​でき​ます。 NIフレームグラバデバイスまたは​他社​製​の​ボード​を​使用​する​こと​が​でき​ます。 

NIでは、NI Compact Vision SystemまたはNI IEEE 1394インタフェースデバイスと簡単に接続できるさまざまなマシンビジョンハードウェアを提供しています。  

カメラ取り付け、構成、および使用


取り付け
ハードウェアの取り付けおよび構成については、ハードウェアのドキュメントを参照してください。Compact Vision Systemを使用している場合、デバイスに添付のクイックスタートガイドおよびプログラムフォルダ (スタート→すべてのプログラム→National Instruments→Vision→ドキュメント→NI 1450ユーザマニュアル) にインストールされているNI 1450ユーザマニュアルを参照してください。 

ハードウェアの取り付け後、次の手順を実行してIEEE 1394カメラを構成します。

1.Measurement & Automation Explorer (MAX) を起動し、F5キーを押して画面を更新します。

2.MAXのツリー構図から、デバイスとインタフェースフォルダの横にあるプラスマークをクリックします。Compact Vision Systemを使用している場合、このシステムは「リモートシステム」の下に表示されます。コンピュータに接続されたIEEE 1394デバイスを使用している場合、マイシステムの下に表示されます。

3.IMAQdxデバイスフォルダの横にあるプラスマークをクリックすると、IEEE 1394デバイスに接続されているカメラの一覧が表示されます。

メモ: レガシー (従来型) IEEE 1394カメラ用NI-IMAQを使用する場合、デバイス (カメラ) を右クリックして使用するドライバを指定します。CVSでは、カメラが両方のカテゴリに自動的に表示されます。



4.MAX画面の上部にある「Snap」ボタンをクリックすると、1つの画像を集録してウィンドウに表示し、「Grab」ボタンをクリックすると連続画像を表示できます。画像はヒストグラム表示でき、ディスクに保存も可能です。

5.MAXウィンドウの下部には4つのタブがあり、それぞれIMAQドライバがカメラから直接読み取るオプションが表示されています。変更できる値もありますが、これらのオプションはカメラ製造元で定義されたものです。上の図に示した「Camera Information」のタブには、カメラに関する情報が含まれています。下に示す「Acquisition Attributes」タブでは、「Video Modes」と「Time-out」の値を変更することができます。​Format 7​ (下で説明) を​使用​する​場合、​「Packet Size」​と​「Region of Interest」​も​変更​する​こと​が​でき​ます。

メモ:NI Compact Vision System​を​使用​し​て​いる​場合、​Format 7​以外​の​フォーマット​でも​「Region of Interest」​を​変更​する​こと​が​でき​ます。​これ​は​バス​内​で​転送​さ​れる​データ​量​を​変化​させる​の​では​なく、​アプリケーションソフトウェアがメモリに読み込むデータ量のみを変更させます。Compact Vision SystemでFormat 7を使用した場合、PCでの動作と同じように動作します。



下に示す「Camera Attributes」タブでは、「Brightness」や「Gain」などのカメラオプションを選択することができます。

4つ目に「Bayer Color」タブでは、「Bayer」フォーマットで画像を出力するカメラ用です。この場合、フィルタのグリッドがセンサの上に配置されているため、各ピクセルは1色しか検知しません。他の2色の値は、隣接するピクセルの色の値を補間することで決定されます。以下のドキュメントで、Bayerパターンの詳細が説明されています。

6.必要な位置にカメラを設定した後、MAX画面の上部にある「Save」ボタンをクリックします。

7.MAXを閉じます。

Format 7​を​構成​する
他のフォーマットを使用している場合、モードによってパケットサイズ、フレームレート、Region of Interestは固定されています。しかしformat 7では、パケットサイズまたはRegion of Interestを変更してカメラが予約する帯域幅の量を制御することができ、したがって最大フレームレートを制御できます。​上の​図​に​MAX​の​「Video」​タブ​が​表示​さ​れ​てい​ます。​この​タブ​で​Format 7​の​以下​の​アイテム​を​選択​し​ます。

1.「Video」モードでFormat 7を選択します。
2.必要な​「Region of Interest」​を​選択​し​ます。
3.「Packet Size」​を​選択​し​ます。

「Packet Size」はFormat 7で変更することができますが、 選択できる値はカメラの製造元が出荷時に定義した値のみです。MAXは自動的にPacket Sizeを一番近い定義値に強制し、その値を表示します。フレーム/​秒​による​最大​フレーム​レート​は​次​の​数式​を​使用​し​て​計算​し​ます。(バイト​単位​の​パケット​サイズx8000) / (幅​x​高さx​​深度​ピクセル​バイト)

メモ: カメラ​によって​は、​Format 7​モード​を使用する場合に​カメラ​のトリガを​かける​ことが必要な場合が​あり​ます。

プログラミング
NI-IMAQdxドライバ​は、ユーザ​マニュアルと​関数​リファレンス​マニュアル (Windows​の​スタート​メニュー​から​アクセス​可能) ​を​インストール​し​ます。LabVIEWを使用している場合、IEEE 1394カメラの集録をプログラミングできるVIのパレットもインストールされます。このパレットの名前はIMAQdxです。​これ​に​は、​構成、​高​レベル​VI、​低​レベル​VI、​トリガ、​IEEE 1394​カメラ​の​レジスタ​へ​の​アクセス​が​含​まれ​ます。 


IMAQdxパレットには、レガシー (従来型) IEEE 1394カメラ用NI-IMAQのサブパレットがあります。​IMAQdx​は、​最新​かつ最も完全な​ドライバで​あり、新たな開発には必ずこれを使用する必要があります。従来型ドライバおよび関数呼び出しは下位互換性があり、旧バージョンで作成したプログラムも動作します。しかし、IMAQdxの関数呼び出しを優先して使用するよう促すためにこれらの関数はグレーアウトされています。

またNI-IMAQdxは、「Snaps」、「Grabs」、「Sequences」、「Triggers」などを行うVIの使用方法を示したさまざまなサンプルプログラムもインストールします。LabVIEW​では、ヘルプ→サンプル​を​検索に​アクセス​すると、​下​の​図​に​示す​NIサンプルファインダが​開き​ます。​  ​ハードウェア​入力​と​出力を参照する際、IMAQdx用とIEEE 1394用従来型NI-IMAQ用に別々のフォルダがあります。

次のフロントパネルおよびブロックダイアグラムは、LabVIEWでIEEE 1394カメラのスナップを実行する方法を示したものです。このサンプルでは、IMAQ 2.6.0より新しいバージョンに組み込まれた画像表示制御を使用しています。

フロントパネル



ブロックダイアグラム


ドライバをインストールすると、CVI、Visual Basic、およびCでの集録方法を示したサンプルプログラムもインストールされます。NI-IMAQdxドライバを呼び出す方法の詳細は、ユーザマニュアルおよび関数リファレンスマニュアルを参照してください。

メモ: ni.comでも、該当するすべてのプログラミング環境を含む、多数の有用なサンプルプログラムをオンラインで見つけることができます。

トリガ
DCAM準拠IEEE 1394カメラの一部はトリガをサポートしています。これ​は​旧​バー​ション​の​IEEE 1394​カメラ​用NI-IMAQ​から​変更​さ​れ​た​機能​です。​次​の​ブロック​ダイ​ア​グラム​では​従来​型​ドライバ​を​示し​て​おり、​この​概念​を​簡単​に​説明​し​てい​ます。この​プログラム​は、​上記​の​スナップ​サンプル​プログラム​に​「IMAQ1394 Configure Trigger」VI​を​追加​し​てい​ます。CVI、​Visual Basic​または​C​では、​「IMAQ1394ConfigureTrigger」​関数​を​使用​し​ます。​この関数は、アイソクロナスコマンドをカメラに送信し、外部コネクタ上に信号を待機するように伝えます。



このサンプルでは、カメラモードにMode 0を使用しています。DCAM仕様で指定されているトリガには4つのモードがあります。すべてのカメラが全部のモードをサポートしているわけではありません。

  • モード0:カメラは、外部トリガ入力の立ち下がりエッジから集録を開始します。持続時間は「シャッター」属性で指定されます。
  • モード1:カメラは、外部トリガ入力の立ち下がりエッジから集録を開始します。集録時間は外部トリガのLOW状態と同じです。
  • モード2:カメラは、外部トリガ入力の最初の立ち下がりエッジから集録を開始します。集録は、N 番目の外部トリガ入力の立ち下がりエッジで停止します。(Nは制御パラメータで定義されます。)
  • モード3:これは内部トリガモードです。カメラは内部トリガをかけます。サイクル時間は、最速フレームレートのサイクル時間をN (パラメータ) 倍した時間です。持続時間は「シャッター」属性で指定されます。
  • トリガを無効にすることもでき、その場合カメラは即座に集録を開始します。


モード0~4を使用している場合、カメラに直接接続されている外部デジタル信号が必要です。他社製のIEEE 1394プラグインデバイスを使用している場合、ユーザがこのデジタル信号を提供する必要があります。CVSを使用の場合、ユーザはデジタルI/Oポートを使用してカメラに接続した信号のタイミングを制御します。また、NI製のデジタルデータ集録デバイスはトリガの生成にも使用できます。

IMAQdxでのトリガ関数は、下のブロックダイアグラムに示すようにプロパティノードを使用して制御されます。詳細については、IMAQdxサンプルプログラムの「Triggered Grab」VIを参照してください (NIサンプルファインダから入手可能)。

関連項目
最新版のNI-IMAQdx

IEEE 1394カメラ帯域


 
IEEE 1394帯域幅比較表のExcelファイルのリンクが下にあります。 

 

 

FireWire is a trademark of Apple, Inc., registered in the U.S. and other countries.

ダウンロード

Was this information helpful?

Yes

No