In-Sight ビジョンシステムからのデータの取得

In-Sight Explorer スプレッドシートから ControlLogix PLC にデータを取得するためには、WriteResultsBuffer 関数を使用して、データが EtherNet/IP スタックにプッシュされる必要があります。この関数は、FormatOutputBuffer 関数によって作成されたデータバッファを取得し、それを In-Sight ビジョンシステムの EtherNet/IP 入力アセンブリ (ネットワークへの入力) のデータ領域に書き込みます。このデータは、次の RPI サイクルで PLC に転送されます。

このデータ領域への EtherNet/IP バッファの書き込みはキューに入れられます。つまり、スプレッドシートの実行中に書き込みは行われず、スプレッドシートの実行の少し後に別のイベントとして実行されます。このため、検査は短時間で完了しますが、新しいバッファの書き込みは完了しません。

ResultsValid はデータの読み取り準備ができる前には高くならず、準備ができている場合にのみ高くなるため、この設定によって発生する可能性がある PLC ロジックのわずかなタイミングのずれに関する問題を回避するには、ResultsValid を使用してデータの読み取り時期を決定することが重要です。

例: In-Sight ビジョンシステムからの 32 ビット整数データの取得

以下の手順で、In-Sight ビジョンシステムから ControlLogix PLC に送信されるデータの書式設定の方法を説明します。

  1. まず、In-Sight Explorer を使用して、新規ジョブを作成します。
  2. [パレット] の [スニペット] タブから、次の 2 つのスニペットをスプレッドシートに追加します。[Acquisition] → [AcqCounter] および [Math & Logic] → [Random]
  3. AcquireImage セルを開いて、[トリガ] パラメータを [連続] に設定します。
  4. 空白のセルを右クリックして、[関数の挿入] を選択します。画面左側の [入出力] カテゴリを展開し、FormatOutputBuffer 関数をダブルクリックして、スプレッドシートに挿入します。
  5. [FormatOutputBuffer] ダイアログの [追加] ボタンをクリックします。これでセル選択モードになります。Random スニペットの「Scaled random number」セルを選択します。
  6. [FormatOutputBuffer] ダイアログで、[データ型] プルダウンメニューを使用して、[データ型] を [32 ビット整数] に変更します。
  7. [FormatOutputBuffer] ダイアログの [追加] ボタンを再びクリックします。これでセル選択モードになります。AcqCounter スニペットのカウントセルを選択します。

  8. [OK] ボタンをクリックして、[FormatOutputBuffer] ダイアログを閉じます。
  9. 空白のセルを右クリックして、[関数の挿入] を選択します。画面左側の [入出力] カテゴリを展開し、[ネットワーク] サブカテゴリをクリックし、WriteResultsBuffer 関数をダブルクリックして、スプレッドシートに挿入します。
  10. WriteResultsBuffer 関数の [プロトコル] パラメータを EtherNet/IP に設定し、[バッファ] パラメータを、作成した FormatOutputBuffer データ構造体へのセル参照として設定します。WriteResultsBuffer の [Result Code] パラメータの値を 3 に設定するか、整数データの任意のセルを参照します。
  11. In-Sight ビジョンシステムをオンラインにします。
  12. データが RSLogix 5000 の Controller → Controller Tags ノードに表示されます。

    :  データ値を表示するには、RSLogix の [Monitor Tags] タブを選択する必要があります。

例: In-Sight ビジョンシステムからの浮動小数点数値データの取得

浮動小数点データ型または等しいサイズの複数のデータ型の混合を送信する必要がある場合は、ControlLogix でユーザ定義型を作成します。浮動小数点データを In-Sight ビジョンシステムの入力タグから、新たに作成されたユーザ定義型にコピーします。

以下の手順では、2 つのセルを浮動小数点数値としてコピーする方法を説明します。

  1. In-Sight ビジョンシステムをオフラインにします。
  2. 以前に作成した FormatOutputBuffer 関数を開きます。
  3. [FormatOutputBuffer] ダイアログから、[Data Type] プルダウンメニューを使用して、[Data Type] を [32 bit integer] から [32 bit floating point] に変更します。

    :  ビジョンシステムで使用されるデータタイプの一致は、必ずしも必要とは限りません。PLC でバッファの受信に使用されるデータタイプに関係なく、ビットはビジョンシステムの出力バッファから、FormatOutputBuffer または [Format Outputs] タブに表示されている順序どおりにコピーされます。
  4. In-Sight ビジョンシステムをオンラインに戻します。
  5. RSLogix で、オフラインモードにします。
  6. RSLogix で、[Data Types] → [User-Defined] フォルダを右クリックし、メニューから [New Data Type] を選択します。

  7. 新しいデータ型にわかり易い名前を付けて、2 つの浮動小数点数値を [Members:] リストに追加します。

  8. 次に、ユーザ定義データ型を使用して、新しいタグをプロジェクトの Controller Tags に追加します。

  9. 最後に、COP 命令を MainRoutine ラダーロジックプログラムに追加します。これは、InSight_Top:I.InspectionResults[0] タグから InSight_Top_Input タグにデータをコピーします。

    :  長さフィールドは、出力にコピーする必要がある入力構造体の数です。この場合、入力構造体は 32 ビット浮動小数点数値であるため、COP コマンドは、ビジョンシステムの出力バッファから 64 ビットを PLC のユーザ定義型にコピーします。PLC の受信バッファで 16 ビット整数型 (INT) を使用する場合、同じ 64 ビットを取得するには、長さ 4 を使用します。また、8 ビット整数型 (SINT) を使用する場合、64 ビットすべてをコピーするには、長さ 8 を使用します。
  10. このプログラムが ControlLogix PLC にダウンロードされた後、In-Sight Explorer スプレッドシートの Random セルと Acquisition Counter セルが InSight_Top_Input タグに浮動小数点形式で表示されます。