FVC07クラス

Namespace: FVIL.Video
Assembly: FVILdevice (in FVILdevice.dll) Version: 3.1.0.0 (3.1.0.5)

Syntax

C#
public class CFviVideoFVC07 : CFviVideo
Visual Basic
Public Class CFviVideoFVC07
	Inherits CFviVideo

Remarks

PCI Express×4 仕様 カメラリンク対応画像入力ボード(FVC07)を操作する為のクラスです。

FVC07 は、カメラリンク規格の Base/Medium/Full コンフィグレーションに対応した画像入力ボードです。


■ トピック


Base Configuration と Medium Configuration、Full Configuration :

FVC07 では、Base Configuration カメラの場合、CH0 と CH1 の両方に接続することが可能です。 この際、CH0 と CH1 は非同期で使用することが可能です。 また、CH0 と CH1 は同じカメラである必要はありません。 CH0 と CH1 にカメラを2台接続する場合は、 必ず、CFviVideoFVC07 のインスタンスが二つ必要となります。 同一カメラを2台接続する場合にも CFviVideoFVC07 のインスタンスは二つ必要で、 チャネル毎にオープンする必要があります。

Meduim/Full Configuration カメラの場合、カメラ1台を2本のケーブルで接続するため、 FVC07ボード1枚に対して、1カメラ接続することが可能です。 CFviVideoFVC07 のインスタンスは 1 つ必要となります。


[↑戻る]


使用ボードの指定

FVC07が複数枚装着されている画像処理装置の場合、 FVC07上のディップスイッチによるID指定(SW1)と Open(Int32, Int32, Int32)のID指定での組み合わせでオープンされるボードが決定します。

※注) FV2300などの画像処理装置において、複数枚のFVC07が搭載されて出荷される場合、 ID は 0, 1, 2... と順番に割り振られて出荷されます。

Open(Int32, Int32, Int32)のid引数で、-1を指定した場合、 オープン可能な FVC07 の中でディップスイッチの ID が最も若いものをオープンするという意味になります。 ID=0~15 を指定した場合、その値と同じディップスイッチ ID の FVC07 をオープンします。 指定した ID と一致するFVC07がオープン不可能だった場合、エラーが返されます。


[↑戻る]


チャネルの指定:

Base Configuration カメラの場合、チャネルの指定オープン時に行われ、 Open(Int32, Int32, Int32)のch引数で、 -1 を指定した場合、オープン可能なチャネルを CH0 → CH1 に探すということを意味しています。 CH=0~1 を指定した場合、その値のチャネルをオープンします。 指定したチャネルが既にオープン済みの場合、エラーが返されます。 Medium/Full Configuration カメラの場合、CH0 と CH1 の両方のコネクタを使用するため、 チャネルの指定は行えません。CH の値は無視されます。


[↑戻る]


画像取り込み方法(単発取り込み):

単発取り込みとは、カメラから1フレーム入力することです。

GrabImageSync(CFviImage) は、 画像を 1 枚取り込むための関数です。 GrabImageSync(CFviImage) 呼び出し後、 画像取り込みが完了するまで、関数から抜けてきません。

GrabImageASync(CFviImage) は、 画像を 1 枚取り込むための関数で、 GrabImageASync(CFviImage) 呼び出し後、 即関数から抜けてきます。 GrabImageASync(CFviImage) は、 画像取り込み中に別の操作を行うことが可能です。 画像取り込みが完了したことを確認するために、 GrabWait()()()() または GrabStatus を使用します。

前者は、取り込みが完了するまで戻ってきません。 後者は、現在の取り込み状況を調べ、現在取り込み中なのか、取り込みが完了したのかを取得できます。 両関数ともの他の画像入力ボードでも実装されており、もっとも使いやすい画像取り込み関数です。 しかしながら、画像メモリのロックを画像入力ごとに行うため、 大きな画像サイズの場合、オーバーヘッドが生じてしまう場合があります。


[↑戻る]


画像取り込み方法(連続取り込み):

連続取り込みとは取り込み開始時点からフレーム抜けすることなく、連続で画像を入力することです。 CFviContinuousGrabFVC07 は連続取り込み機能をパッケージングしたクラスです。 このクラスの ContinuousGrab プロパティから 連続取り込みクラスのインスタンスを得る事ができます。 取り込み枚数を 1 枚にすることで、単発取り込みを行うことが可能です。 実際に使用する際は、画像メモリのロック→連続取り込みの開始→取り込み完了待ち→画像メモリのアンロックという手順 を踏まなければなりません。

  1. FVC07をオープン(Open()()()())します。 -
  2. 取り込み先の画像オブジェクトのコレクション(List)を Images プロパティ に設定します。 各画像オブジェクトの画像サイズ、BPP、画像タイプを調整しておいてください。 画像メモリのサイズ変更は、 ChangeImageSize(CFviImage) をご利用ください。 -
  3. MemoryLock(UInt32) メソッドで、取り込み先の画像メモリをロックします。 -
  4. 連続取り込みを実行します。
  5. 画像取り込みが終了し、画像メモリのロックが必要なくなった場合は、 画像メモリのアンロック(MemoryUnlock()()()())を 行ってください。 尚、ロックされたまま、画像入力ボードをクローズした場合、自動的にアンロックを行うようになっています。

【連続取り込み開始までの手順】


【連続取り込み中の動作】


[↑戻る]


トリガ動作:

トリガモードは Trigger で行い、 ノーマル、内部トリガ、外部トリガを切り替えることが可能です。 ノーマルモードとは、カメラから常に映像出力される画像を入力するモードの事を言います。 最も基本的な取り込みで、静止した物体の単発取り込みや通常の連続取り込みを行うのに最適です。 移動している物体の単発取り込みは、タイミングを制御するのが難しく、あまり得意ではありません。

内部トリガモードとは、画像入力ボードからトリガ信号をカメラに送り、 そのタイミングでカメラが露光を開始するモードのことを言います。 カメラはトリガモードに設定されていなければなりません。 移動している物体の画像取り込みを得意としていますが、 連続取り込みはフルフレームの速度が出ないためあまり得意ではありません。

外部トリガモードとは、画像入力ボードに対して外部信号(外部センサーなど:TTLレベル)が入ったときに、 カメラに対してトリガ信号を出力し、そのタイミングでカメラが露光を開始するモードのことを言います。 内部トリガは CPU から取り込み開始命令を出すのに対し、外部トリガは外部装置から取り込み開始命令を出す点が違っています。 移動している物体の画像取り込みを得意としていますが、連続取り込みはフルフレームの速度が出ないためあまり得意ではありません。



【内部トリガモード】

取り込み開始命令が呼び出されると、即、最初のトリガ信号がカメラに対して出力されます。 2回目以降のトリガはサイクルタイム設定(TriggerCycleTime) で設定されている値によって、トリガ信号とトリガ信号の間隔が変わってきます。

CycleTimeMode=0 は、カメラの設定がパルス幅トリガモードであることを前提に考えられています。 ほぼ全てのカメラ設定ファイルは、CycleTimeMode=0 をデフォルトとしています。 その為、カメラの設定を「パルス幅トリガモード」に指定する必要があります。 カメラ設定ファイルの[Trigger]CycleTimeには、最小トリガ周期が設定されています。

CycleTimeMode=1 は、FIXトリガモード(エッジプリセレクトモード、スタンダードトリガモードなど、 呼び方は各カメラメーカーによって変わります)を前提としたモードで、 カメラに設定したシャッター時間を考慮して CycleTime を設定する必要があります。 CycleTime が短すぎると、FVC07 から出力されたトリガ信号はカメラ側で無視されてしまう (または、現在取り込み中の画像に問題が発生してしまう)といった現象が起こってしまうため、 最適な時間を設定する必要があります。 時間を考慮して CycleTime を設定する必要があります。



【外部トリガモード(設定値:2)】

Trigger=2 を指定した場合、 フレーム毎に外部トリガ信号を入力して連続取り込みを行います。 外部トリガ信号は、タイムアウト時間以内に入力しないとエラーとなります。 タイムアウト時間はカメラ設定ファイル Video-Timeout で設定可能で、デフォルト5秒となっています。 0 を設定するとタイムアウトなしになります。 タイムアウト時間は、1フレーム単位での最大入力時間の事を言います。 注)ラインセンサの場合、外部トリガモードは、外部トリガモード2(設定値:3)と同じ動作となります。



【外部トリガモード2(設定値:3)】

Trigger=3 を指定した場合、 最初の取り込み開始は外部トリガ信号を待ち、2フレーム目以降は、 サイクルタイムで指定した時間で画像入力を行います。 設定値3は、カメラ設定ファイルでは指定できないため、 Trigger で設定する必要があります。 外部トリガ信号は、タイムアウト時間以内に入力しないとエラーとなります。 タイムアウト時間はカメラ設定ファイル Video-Timeout で設定可能で、デフォルト5秒となっています。 0 を設定するとタイムアウトなしになります。



【外部トリガモード3(設定値:4)】

Trigger=4 はWIL Ver3.0.0.9で追加しました。 使用するには、FVC07ドライバ(fvc07.sys) Ver.1.2.0.26以上とFVC07 ボードリビジョン4以上が必要です。 ラインセンサカメラ(エンコーダ未使用時)、連続取込時にフレーム毎に外部トリガ入力を待つ モードです。それ以外(エリアセンサ、単発取込、エンコーダ使用時)には使用できませんので ご注意ください。



【トリガマスク期間中のトリガ動作について】

単発取込み外部トリガモード時、トリガマスク期間中に入力されたトリガ (画像取込み命令)は無効になります。 単発取込み内部トリガモード時、トリガマスク期間中でも入力されたトリガ (画像取込み命令)は有効になります。 カメラによって次のトリガを受け付けるまでの期間が異なります。 どちらにしてもカメラ仕様よりも早く次のトリガ(画像取込命令)を入れないようにご注意ください。

※WIL Ver.3.0.0.11以上は、トリガマスク期間はカメラ設定ファイル[Trigger]MaskLineNumで決まります。 MaskLineNumの項目がない、MaskLineNum=0、WIL Ver.3.0.0.10以前は、TriggerCycleTime の設定によって決まります。
CycleTimeMode=0 の場合は、トリガマスク期間 = ExposureTime + CycleTime、
CycleTimeMode=1 の場合は、トリガマスク期間 = CycleTime
となります。


[↑戻る]


ラインセンサ画像入力:

FVC07 でのラインセンサカメラ画像入力は、1 フレーム単位での単発取り込みと連続取り込みの2種類をサポートしています。
ラインセンサカメラからは 1 ライン単位での画像出力が行われ、設定されたライン数を画像メモリに取り込まれると 1 フレームとします。
単発取り込みとは、カメラから 1 フレーム分入力することです。
連続取り込みは連続で複数フレームの画像を入力することで、基本的にはフレームとフレームの間のライン抜けはありません。連続取り込みでは無限枚数を指定することが可能です。

1 フレームの入力ライン数は、カメラ設定ファイルの [Video] VerticalSize の値で設定することが可能です。 この値を変更することによって、1 フレーム最大 65534 ラインまで指定することが可能です。 (値は 2 の倍数で指定してください。 また、大きい画像サイズを指定し、メモリの空き連続容量が少ない場合、メモリロックに失敗する場合があります。)
弊社提供のカメラ設定ファイルでは、[Video] VerticalSize の値が比較的小さな値となっていますので、 使用するシステムに合わせて設定してください。

図) フレーム概念


図) ラインセンサ連続取り込み



【ラインセンサにおけるノーマルモードとトリガモード】

「カメラ内部同期モードによる取り込み」
カメラの内部同期モードで画像入力する場合、
Trigger に 0 を指定してください。
カメラの内部同期モードでは、一定周期の LVAL にあわせてデータ出力されます。FVC07 は、その LVAL に合わせて画像入力を行います。



「カメラの外部同期モードによる取込(ライン周期モード)」
カメラの外部同期モード(トリガ動作)を使用する場合は、Trigger で 1~3 の値を指定します。 FVC07 から出力されるライントリガ(以下、LT)に合わせて露光を行い画像を転送します。
ライン周期モードでは、LT と LT の間だけ露光が行われます。
エンコーダと組み合わせてラインセンサを使用する場合は、カメラを外部同期モードで使用してください。



「カメラの外部同期モードによる取込(パルス幅モード)」
カメラの外部同期モード(トリガ動作)を使用する場合は、Trigger で 1~3 の値を指定します。 FVC07 から出力されるライントリガ(以下、LT)に合わせて露光を行い画像を転送します。
パルス幅モードでは、LT の Hi(または Low)の期間だけ露光が行われます。(カメラによっては本設定が存在しないものが有ります)



【エンコーダ信号入力】

ラインセンサカメラの外部同期モードでは、FVC07 からライン単位でトリガを出力する必要があります。
トリガ出力の方法は、大きく分けて二つあり、FVC07 から一定周期で出力するモードと、 エンコーダ信号を FVC07 に入力して、エンコーダ信号の間隔を元に FVC07 からトリガ信号を出力する方法があります。
エンコーダ信号を元に LT を出力することで、画像入力対象物の移動速度が変化した場合でも、 検査対象物の移動速度に合わせ画像入力がおこなえます。
WIL Ver3.0.0.9よりエリアカメラでもエンコーダをご使用いただけます。 エリアカメラで使用する場合、FVC07ドライバ(fvc07.sys) Ver.1.2.0.26以上とFVC07 ボードリビジョン4以上が必要です。

「設置例」

FVC07 はエンコーダ信号を A相 B相 の状態で加算、減算を行います。
また、サンプリング速度は A相(1倍、2倍サンプリング)、A相および B相(4倍サンプリング)から選択可能です。
本ボードでは下図のタイミングで CW方向、CCW方向としております。
但し、1倍、2倍サンプリング時は B相の入力を参照しないため CW/CCW 方向の検出が行えません。
CW 方向は、B相が A相より 90°遅延して入力される場合とします。この時カウント値は加算されます。

CCW 方向は、A相が B相より 90°遅延して入力される場合とします。この時カウント値は減算されます。

Z相の検出は、Z相のレベルがHである時に A相の立ち上がりエッジが最初に入ったタイミングになります。



「エンコーダ使用時の注意点」
エンコーダを使用してトリガ出力を行う際、カメラの最低トリガ周期を上回るような早さでトリガ出力を行ってはいけません。
必ずカメラには最低トリガ周期が存在し、最低トリガ周期よりも早い間隔でトリガが入った場合、そのトリガは無効となる場合がほとんどですが、 カメラによっては、正常に動作しなくなる場合もあります。



【絶対位置エンコーダ】

この機能はFVC07で追加された物です。CW方向に取込を行った後、継続してCCW方向の取込を行う際に使用します。
この為、従来のモード(相対エンコーダ・モード)と異なり、エンコーダカウントは画像取込開始時、画像取り込み終了時共に値が保持されています。
絶対位置エンコーダ選択時、ClearEncdCounter()()()() を実行することにより、絶対位置カウントをリセットします。
絶対位置エンコーダ選択時、StartAbsEncoder(Boolean)により、絶対位置カウントの開始と停止を行えます。
符号付き32bitの絶対位置カウンタの値を超えて変化する信号が入力された場合は、絶対位置カウント値はクリップし、範囲外を示す信号を出力します。



「絶対位置エンコーダ使用時の注意点」
CW方向の取り込みから、継続してCCW方向の取り込みを行う(もしくは、その逆)場合は、絶対位置エンコーダを選択したまま方向を変える際に、
一旦、絶対位置カウントを停止し、比較レジスタ1、比較レジスタ2、および、パルスの方向を設定し、画像取込を開始し、その後、絶対位置カウントを開始する必要があります。
なお、方向切り替え時に、エンコーダからパルスが発生しないことが保証されていれば、絶対位置カウントの停止、開始を操作する必要はありません。
絶対位置エンコーダカウント値は、32bit符号つきのカウンタが使用され、その範囲を超えるエンコーダ・パルスが入力された場合はカウントしません。
ただし、逆のカウントが発生する場合はカウント値が更新されますが、その場合、範囲超えによってカウント値はずれます。
絶対位置エンコーダ選択時は、オーバーフロー・フラグ/アンダーフロー・フラグにより判断できます。
相対位置エンコーダ選択時は、フラグが無効な仕様となっています。


「動作例」



【ライン選択モード】

この機能はFVC07で追加された物です。ライン周期露光のライン・センサー・カメラ用に使用します。
FVC07内蔵のパルス・ジェネレータにより、一定間隔のライン・トリガをCC1等に出力しつつ、エンコーダ一致パルスが発生した次のラインを取り込むという動作を行います。 エリアカメラの場合、ライン選択モードはサポートしておりませんので、ご注意ください。



【外部トリガ入力信号のノイズ除去機能】

FVC07 ボードリビジョン4以上から、外部トリガ入力信号ノイズ除去機能を追加しました。 この機能を使用するには、WIL Ver3.0.0.9以上、FVC07ドライバ(fvc07.sys) Ver.1.2.0.26以上とFVC07 ボードリビジョン4以上が必要です。 この機能はカメラINIファイルにアサート時間とネゲート時間を設定することにより設定値以上、 外部トリガ入力信号の状態が安定していればその状態を外部トリガの有効とみなします。 設定値未満の場合、リセットされます。 本機能を使用した場合、その特性上、設定値分の遅延を伴いますのでご注意ください。 カメラ設定ファイル[Trigger]Assert項目にアサート時間(100ns単位)を、[Trigger]Negate項目にネゲート時間(100ns単位)を設定してください。 デフォルトはともに0で、0〜65535の範囲で設定可能です。




[↑戻る]

Inheritance Hierarchy

System..::..Object
FVIL..::..CFviObject
FVIL.Video..::..CFviVideo
FVIL.Video..::..CFviVideoFVC07

See Also