複数パーツ & 複数ロボットの仕様と要件
ロボットコントローラー1台で、パーツフィーダーを4台まで使用できます。
パーツフィーダーは、ロボットコントローラー間で共有できません。
例えば、2台のT/VTシリーズロボットで同一のフィーダーを共有することはできません。複数のロボットで1台のフィーダーを制御したい場合は、1台で複数のロボットをサポートするロボットコントローラーを使用する必要があります。1つのシステムで、フィーダーのモデルを任意に組み合わせることができます。
例えば、IF-80, IF-240, IF-380, IF-530を1台ずつなど、さまざまな組み合わせが可能です。同一のフィーダー上には最大4種類のパーツを同時に流すことができます。
同一のフィーダーで複数のパーツを同時に流す場合、パーツは物理的に似た特徴を持っている必要があります。つまり、重さが同じで、サイズや材質が類似しており、面積がほぼ同じでなければなりません。各パーツは固有の振動パラメーターを使用します。そのため、パーツの振動パラメーターにより他のパーツがフィーダーから飛び出さないようにする必要があります。最大2台のロボットで、同一のフィーダーを同時に使用できます。
パーツのグループにPF_Startを実行し (PF_Start 1, 2, 5)、パーツを2台以上のロボットに割りあてると、エラーが発生します。PF_Startを実行すると、単一のパーツ、またはパーツのグループがフィーダー上に流れます。
同じフィーダー番号に割りあてたパーツに対してPF_Startを複数回実行すると、 “フィーダーは、すでに使用されています”というメッセージが表示され(PF_Statusコールバックから発行)、2回目のPF_Startは実行されません。パーツのグループにPF_Startを実行する場合 (PF_Start 1, 2, 5)、すべてのパーツが同じフィーダー番号に割りあてられている必要があります。
PF_Startは、フィーダー上に単一のパーツ、またはパーツのグループを流します。
動作している各フィーダーには固有のコントローラータスク番号が割りあてられます。(下表参照)
ユーザーのアプリケーションコードでは、フィーダー用に確保されているタスクを使用しないでください。フィーダー番号が使われていない場合は、そのタスクをユーザーのコードに使用できます。PF_InitLogステートメントを使用してPart Feedingのデータのログを取る場合、特定のタイマー番号がシステム用に確保されるため、ユーザーのコードには使用できません。フィーダー制御コマンド(PF_Center, PF_ConterByShift, PF_Flip, PF_Shift)を使用する場合、特定のSyncLock番号がシステム用に確保されるため、ユーザーのコードには使用できません。タスク番号, タイマー番号, SyncLock番号は、フィーダー番号固有です。(下表参照)フィーダー番号 タスク タイマー SyncLock 1 32 63 63 2 31 62 62 3 30 61 61 4 29 60 60 PF_Startステートメントに記載されている1つ目のパーツが、最初の“アクティブパーツ” (最初に要求するパーツ)です。次に要求するパーツは、PF_ActivePartステートメントを使用して選択します。PF_ActivePartについては、本章で、詳しく説明します。
フィード動作 (振動, ピック領域, 供給方式)は、現在のアクティブパーツに対して実行されます。PF_Startステートメントに記載されているすべてのパーツは、アクティブパーツとして選択された場合、各自の設定を使用します。例えば、アプリケーションで必要とされた場合、PF_Startグループの各パーツは、異なるピック領域を持つ可能性があります。
各コールバック関数に渡されるパーツID (PartID)は、現在のアクティブパーツ (現在要求するパーツ)のパーツ番号になります。
PF_Startステートメントに記載されている各パーツに対して画像を取得し、各パーツのキューをビジョンの結果とともに読み込みます。各パーツは、それぞれのビジョン設定および照明設定を使用します。例えば、PF_Startリストのあるパーツは“system processes vision”を使用し、別のパーツは“user processes vision”を使用するなど、すべてのパーツがそれぞれの設定を使用します。同様に、各パーツは、フロントライト, バックライトなし, 異なる輝度など、独自の照明条件を使用できます。
Part Feedingログファイル (PF_InitLogステートメントにより開始)には、1台のフィーダー上のすべてのパーツのデータが含まれます。
複数のロボットで同一のフィーダーにアクセスする場合、ユーザーのアプリケーションコードでPF_AccessFeeder、およびPF_ReleaseFeederステートメントを使用して、ロボットが衝突しないようにする必要があります。これについては、本章で、詳しく説明します。
すべてのパーツは、個別にキャリブレーションする必要があります。1台のフィーダー上を同時に流れるパーツは、似た特徴 (サイズ, 重さ, 材質など)を持つことを想定しています。