SPEL+からVRunコマンドでビジョンシーケンスを実行する方法
VRunコマンドを使用して、SPEL+プログラムからカレントプロジェクトのビジョンシーケンスを実行することができます。
Function VisionTest
VRun seq1
Fend
上のシンプルなプログラムは、“seq1”というシーケンスを実行して、プログラムをどこから始めるかにより、RUN ウィンドウかオペレーターウィンドウに、グラフィックリザルトを表示します。
VRunの動作は、RuntimeAcquireシーケンスプロパティーにより異なります。このプロパティーは、シーケンスを処理する前に画像を撮影するかしないか、または、トリガー入力を使用することを定義します。次の表は、RuntimeAcquire設定と、VRunの関係を示しています。
RuntimeAcquire | VRun Actions | 使用 |
---|---|---|
0 - None | 画像を撮影しません。 前回の画像を使います。 シーケンスをステップごとに実行します。 | 同じ画像で複数のシーケンスを実行通常、RuntimeAcquire設定が “Stationary”なら、最初のシーケンスが画像を撮影します。その場合、残りのシーケンスは画像を撮影しません。 |
1 - Stationary | 新規画像を取得します。 シーケンスをステップごとに実行します。 | 画像を撮影して、シーケンスを実行 (デフォルト)これがVRunを使う最も一般的な方法です。 |
2 - Strobed | トリガー入力を待ちます。 新規画像を取得します。 シーケンスをステップごとに実行します。 | トリガー入力で使用VRun は直ちに戻り、システムはトリガー入力を待ち、画像を撮影してシーケンスを実行します。 |
シーケンスプロパティーのAsyncModeがTrueの場合、VRunはカメラの露光後に戻り、バックグラウンドで画像取得を継続・完了し、シーケンスを処理します。VGetなど、同じシーケンスの次のビジョンコマンドは実行が完了するまで自動的に待機します。
RuntimeAcquireを“Strobe”に設定した場合、VRunはトリガーを待機状態にし、戻ります。システムはバックグランドでトリガー入力を待ち、画像を撮影してシーケンスを処理します。
シーケンスからリザルトを取得する前に撮影が完了するまで待機させたい場合は、AcquireStateシーケンスリザルトを使用します。
Function VisionTest
Integer state
Boolean passed
VRun strobedSequence
' 画像が撮像されるまで待機
Do
VGet strobedSequence.AcquireState, state
Loop Until state = 3
' リザルトを取得
VGet strobedSequence.AllPassed, passed
Fend
RuntimeAcquireがStrobeの場合にVRunを実行し、「AcquireState =3」を待たずに次のビジョンコマンド(VGetなど)を実行すると、2番目のコマンドはトリガーの受信とシーケンスの実行を待ちます。トリガーが届かない場合、SPEL+ タスクは中止されます。
複数のSPEL+ タスクの実行では、同じカメラを使用しない場合、画像の取得とシーケンスの処理は並行して行われます。
複数のSPEL+タスクで1つのカメラを使い、RuntimeAcquireが「Strobe」に設定されている場合、SyncLockやSyncUnlockを用いて1度に1つのシーケンスが処理されるようにする必要があります。次の例では、シーケンス seq1とseq2はどちらもcamera 1を使用しています。
Function visTask1
Integer state
Do
SyncLock 1 ' camera 1へのアクセスをロック
VRun seq1
Do
VGet seq1.AcquireState, state
Loop Until state = 3
VGet <some results here>
SyncUnlock 1 ' camera 1へのアクセスをアンロック
Fend
Function visTask2
Integer state
Do
SyncLock 1 ' camera 1へのアクセスをロック
VRun seq2
Do
VGet seq2.AcquireState, state
Loop Until state = 3
VGet <some results here>
SyncUnlock 1 ' camera 1へのアクセスをアンロック
Fend
SyncLockおよびSyncUnlockの詳細は、「SPEL+ランゲージリファレンス」を参照してください。
キーポイント
ac2500-14gm/gcのGigEカメラを“Strobe”モード(外部トリガーモード)で使用する場合、外部にストロボ照明が必要になります。
ストロボ照明を使用しない場合、カメラはローリングシャッターモードで動作するため、移動物体を正しく認識できません。