MVApp 結果の取得 (Hilscher)
MERLIC の プロセス統合 MERLIC は、製造マシンに統合されたマシンビジョンシステムで使用できます。プログラマブルロジックコントローラ (PLC) などのマシンコントローラでは、統合ビジョンシステムの制御、実行の監視、結果の照会が可能でなければなりません。そのため、MERLIC には、マシンコントローラとの通信に必要なプロセス統合モードが備わっています。 プロセス統合モードは、 MERLIC インストレーションに用意されているアプリケーション「MERLIC RTE」で開始できます。モードでは、結果は自動的には返りません。代わりに、MERLIC Vision App (MVApp) の各反復の結果をユーザーが照会する必要があります。結果の転送はコマンド「GetResult」でトリガーできます。それぞれのコマンドコードは 2 です。
コマンドはプロトコル FromPLCProtocol で指定する必要があります。また、照会する結果の ID をメンバー Selector で定義する必要があります。MERLIC によって生成された最後の結果の ID は、プロトコル FromMerlicProtocol のメンバー LastResultId に含まれます。
制限
リクエストされた MVApp 結果 にタプルが含まれる場合、最初のタプル要素の値のみが Hilscher カードに転送されます。他のタプル要素の値にはアクセスできません。したがって、プロセス統合用に Hilscher card を使用するときに、タプル値を受け取る可能性があるツール結果を MVApp 結果 として定義しないことをお勧めします。
結果の取得
特定の MVApp 反復の結果を照会するには、以下のメンバーをプロトコル FromPLCProtocol で適切に設定する必要があります。
|
メンバー |
値 |
説明 |
|---|---|---|
|
CommandCode |
2 |
コマンド「GetResult」のコード値 2 を定義します。 |
|
Selector |
<結果 ID> |
値が返される結果の ID を定義します。指定された ID の結果が存在しない場合、MERLIC は「Error」状態に変化します。 |
PLC から MERLIC に送信されるプロトコル FromPLCProtocol は、以下の例のように定義できます:
TYPE
FromPLCProtocol :
STRUCT
Preamble : 17;
CommandCode : 2;
Selector : 2;
END_STRUCT
END_TYPE
CommandCode の値は 2 に設定されています。したがって、MERLIC はコマンド「GetResult」を認識します。PLC からリクエストされる結果 ID は、メンバー Selector で定義されます。この例では、ID 2 の結果がリクエストされます。MERLIC では、結果 ID が 2 の値を見つけ、プロトコル FromMerlicProtocol を通じてそれぞれの値を PLC に返すことにより、コマンドを処理します。
以下の例は、MERLIC から PLC にレスポンスとして送信されるプロトコル FromMerlicProtocol を示します。この中には、リクエストされた結果に関する情報が含まれています。
Preamble : 17
VersionMajor : 1
VersionMinor : 0
RecipeId : 1
CommandCode : 0
ActionResponse : 1
CurrentState : 34
LastResultId : 5
LastStartedJobId : 1
Reserved : 0
ResultState : 1
BoolCount : 0
ByteCount : 1
WordCount : 0
DWordCount : 0
LWordCount : 0
SIntCount : 0
USIntCount : 0
IntCount : 0
UIntCount : 0
DIntCount : 0
UDIntCount : 0
LIntCount : 0
ULIntCount : 0
RealCount : 0
LRealCount : 0
TimeCount : 0
TimeOfDayCount : 0
LTimeCount : 0
DateCount : 0
DateAndTimeCount : 0
Str80Count: 0
TotalResultCount : 1
DataIntegrity0 : 3
Result0 : 7
Preamble の値は、プロトコルが 17 で始まることを表します。VersionMajor および VersionMinor の値は、データプロトコルの最初のバージョンが使用されていることを表します。メンバー RecipeId は、ID が 1 のレシピで定義された入力値が MVApp のパラメーター化に使用されているという情報を示します。
CommandCode 0 は、MERLIC と PLC の同期に使用されます。この例では、ID が 2 の結果を照会する PLC からのコマンドを MERLIC が認識し、処理することを伝えます。ActionResponse は 1 に設定されています。これは、コマンドが正常に処理されたことを意味します。CurrentState の値 (34) は、MERLIC が現在「Ready」の状態にあること、つまり、状態「Ready」および「OperationalAutomaticMode」のビットが設定されていることを表します。これは、1 回の操作を開始するか、最後の反復の結果を照会するか、別のレシピファイルを準備する用意ができたことを意味します。
この例では、MERLIC によって計算された最後の結果の ID は、メンバー LastResultId で転送されたとおり、5 です。これらは、LastStartedJobId で示される ID 1 のジョブの実行中に計算されたか、あるいは、ID 1 で最後に開始されたジョブでまだ結果が得られなかった場合に、前のジョブで計算されました。しかし、PLC では ID が 2 の結果をリクエストしています。したがって、ID が 2 の結果を生成する間に、PLC に転送されたすべての結果が計算されます。ResultState の値 1 は、処理が正しく実行されたことを示します。TotalResultCount の値には、リクエストされた LastResultId とともに 1 つの結果のみが返されたという情報が含まれます。返された値のデータタイプ Byte は、メンバー ByteCount の値が 1 であることによって認識されます。他のデータタイプのカウンタはすべて 0 に設定されます。
この結果の値に関する実際の情報は、メンバー DataIntegrity および Result に保存されます。DataIntegrity が 3 であることは、バイト 00000011 によって表されます。最初のビットは値が有効であること、2 番目のビットは、ID が 2 のリクエストされた結果を生成した MVApp 反復において値が決定されたことを表します。各ビットの意味の詳細については、「データ交換のプロトコル」を参照してください。プロトコルの最後のエントリでは、結果の値が返されます。この例では、結果の値は 7 です。