PROFINET 経由での In-Sight ビジョンシステムによるデータ転送 - In-Sight 5.x.x ファームウェア

このトピックでは、In-Sight 5.1.0 以降のファームウェアが実行されている In-Sight ビジョンシステム、および Siemens PLC との間で行われるデータ転送について説明します。

In-Sight ビジョンシステムでの PROFINET 通信の有効化

In-Sight ビジョンシステムと PROFINET 通信を確立するためには、In-Sight ビジョンシステムの [ネットワークの設定] を使用して、PROFINET が有効になるようにビジョンシステムを設定しておく必要があります。

  1. In-Sight Explorer を開き、In-Sight ビジョンシステムに接続します。
  2. [センサ] メニューから [ネットワークの設定] ダイアログを開きます。
  3. ダイアログの [プロトコルサービス] セクションで、[PROFINET] を選択し、[PROFINET Settings (PROFINET 設定)] ダイアログを使用して、Siemens PLC の場合のように [設定] ボタンを押してビジョンシステムの [ステーション名] を有効化して設定します。

    :  [ステーション名] を設定しないと、PLC ではホスト名を参照しますが、サポートされない文字がサポートされる文字に PROFINET プロトコルによって変換されるため、そのホスト名はビジョンシステムのホスト名と同一ではない可能性があります。
  4. [ネットワークの設定] ダイアログに戻り、[OK] を押します。
  5. In-Sight ビジョンシステムを再起動すると、電源の再投入後 PROFINET サービスが有効になります。

接続のセットアップ

In-Sight ビジョンシステムと Siemens コントローラの間の PROFINET I/O 接続をセットアップするには、最初に、Siemens の HW Config ツールを使用して、In-Sight ビジョンシステムをコントローラのハードウェア構成に追加する必要があります。

  1. SIMATIC マネージャを開き、PLC のプロジェクトをロードします。
  2. [SIMATIC 300] または [SIMATIC 400] ノードを選択して、オブジェクトリストの [Hardware] ノードをダブルクリックします。

  3. HW Config (ハードウェア設定) ツールが表示されます。PROFINET IO ノードをコントローラに追加するには、PROFINET IO システムがハードウェア設定ダイアグラムに存在する必要があります。PROFINET IO システムがハードウェア設定ダイアグラムに存在しない場合、次の操作を行います。

    • CPU 上の PROFINET IO インタフェースにサブネットアドレスが割り当てられていることを確認してください。これを検証するには、CPU 上の PROFINET IO モジュールをダブルクリックします。PROFINET IO モジュールの [Networked] ステータスが [No] になっている場合は、[Properties] ボタンをクリックして、新しいサブネットを追加します。
    • CPU 上の PROFINET IO インタフェースがサブネットに割り当てられたら、PROFINET IO システムをハードウェア構成図に追加します。そのためには、PLC コンフィグレーションの PROFINET IO モジュールを右クリックして、[Insert PROFINET IO System] を選択します。

  4. これが PROFINET ネットワークに追加される初めての In-Sight ビジョンシステムである場合は、In-Sight GSD ファイル (弊社支給のバージョン 2.3) をインストールする必要があります。In-Sight GSD ファイルをインストールするには、次の手順で行います。

    • HW Config ツールのメニューから、[オプション][Install GSD Files (GSD ファイルのインストール)] を選択します。
    • [参照] ボタンを押し、次の場所から GSD フォルダを選択します。C:\Program Files (x86)\Cognex\In-Sight\In-Sight Explorer 5.1.0\Factory Protocol Description\GSD
    • [Select All (すべて選択)] ボタンを押し、続いて [Install (インストール)] ボタンをクリックして、ハードウェア記述をインストールします。

    In-Sight ビジョンシステムを PROFINET ネットワークに追加するには、Hardware Catalog の In-Sight ノードを参照して ([PROFINET IO][Additional Field Devices][Sensors][Cognex Vision Sensors])、In-Sight ビジョンシステムのインスタンスをハードウェア構成内の PROFINET IO システムにドラッグします。

  5. デバイス名を、接続接続されている In-Sight ビジョンシステムの正確な名前に設定します。

    :  
    • In-Sight ファームウェア 5.x.x を反映するデバイスを確実に選択します。これらのデバイスには、デバイス名に付加されるファームウェアバージョンが含まれています (例えば、上記の In-Sight 54XX51XX)。このファームウェアバージョンがデバイス名に付加されていないデバイスでは、In-Sight 4.x.x ファームウェアが実行されています。
    • In-Sight ビジョンシステムの名前にアンダースコアが使用されていた場合は、ビジョンシステムの名前を PROFINET に入力するときに、アンダースコアをハイフンに置き換える必要があります。例えば、In-Sight Explorer でのカメラの名前が「Camera_Top」の場合は、PROFINET では「Camera-Top」に変更する必要があります
  6. これで、In-Sight ビジョンシステムが PROFINET IO システム上のデバイスとして表示され、特定の PROFINET IO 実装によってサポートされる In-Sight ビジョンシステムの各種モジュールも表示されます。

    :  

    In-Sight ビジョンシステムを PROFINET IO システム上のデバイスに追加したら、PLC によって新しい IP アドレスがビジョンシステムに割り当てられないようにするには、ビジョンシステムの [プロパティ] ダイアログの [IP アドレスを IO コントローラ経由で割り当てる] チェックボックスをオフにします。[プロパティ] ダイアログを開いてチェックボックス (デフォルトでオンになっています) をオフにするには、ビジョンシステムデバイスをダブルクリックするか、または右クリックして [オブジェクトのプロパティ] を選択します。

    In-Sight ビジョンシステムの使用可能なモジュールのすべてが、自動的にハードウェア構成に追加されます。これらのモジュールによって、In-Sight ビジョンシステムの各種サブシステムへのアクセスが可能になります。デフォルトの UserData および InspectionResults モジュールは、64 バイトのサイズです。モジュールのサイズを変更するためには、リストからモジュールを削除して、[Catalog] ツリー内の [In-Sight Data Modules] フォルダにある適切なサイズのモジュールをリストの [Slot] にドラッグします。

  7. HW Config ユーティリティで In-Sight ビジョンシステムを PROFINET システムに追加したら、周期転送率を調整することができます。転送率を調整するには、ビジョンシステムをダブルクリックして、更新時間を 16 ms 秒以内の値に設定します。更新時間をデフォルト値の 1ms のままにした場合、PLC が In-Sight ビジョンシステムに接続されているときに、ビジョンツールのパフォーマンスが大幅に低下することがあります。パフォーマンスの低下を緩和するには、周期更新時間を 8ms または 16ms に変更します。

例: 接続のセットアップ

この例では、In-Sight ビジョンシステムが Siemens プロジェクトの入出力デバイスとして追加されていることを前提としています。プロジェクトがコントローラにダウンロードされた後、要求した更新時間で、周期データ転送が開始されます。適切な I/O 接続を確認するには、次の手順を実行します。

  1. オフラインのときに、「接続のセットアップ」のセクションに記載されている Siemens の構成手順を実行します。
  2. 完成したプロジェクトを Siemens コントローラにダウンロードして、[Operating Mode][Run] に設定します。
  3. オンラインで、HW Config ツールを開きます。In-Sight ビジョンシステムのエラーが表示されなければ、I/O 接続は正常に完了しています。
  4. In-Sight ビジョンシステムと Siemens コントローラの間の I/O データの正しい双方向転送を確認するには、In-Sight Explorer を使用して In-Sight ビジョンシステムに接続します。In-Sight ビジョンシステムのスプレッドシートビューから、AcquireImage プロパティシートを開き、[トリガ] パラメータを [外部] または [産業用イーサネット] に設定します。次に、ビジョンシステムをオンラインにします。
  5. HW Config ツールから、In-Sight ビジョンシステムを選択し、[Acquisition Control Module] を右クリックして、[Monitor/Modify] を選択します。

  6. 次に、入力ビット 0 を [false] から [true] に変更します。これによって、Acquisition Trigger Enable ビットが有効になります。

  7. このビットをセットすると、In-Sight ビジョンシステムは、入力ビット 1 (Acquisition Trigger) が false から true に変更されるときにはいつでも画像を取り込みます。
  8. Inspection Status モジュールの [Monitor/Modify] ウィンドウで、[Run conditionally] チェックボックスが [Monitor] についてオンになっていた場合、手順 7 を繰り返すと、検査の完了時に Inspection Completed ビット (ビット 1) の状態が変化することがわかります。

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

In-Sight 5.1.0 以降のファームウェアが実行されている In-Sight ビジョンシステムの In-Sight Explorer スプレッドシートから Siemens PLC にデータを取得するためには、WriteResultsBuffer 関数を使用してデータを PROFINET スタックにプッシュする必要があります。この関数は、FormatOutputBuffer 関数によって作成されたデータのバッファを取り込み、そのデータを PROFINET Inspection Results モジュールの検査結果領域に書き込みます。このデータは、次の更新サイクルの際に転送されます。

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

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

  1. まず、In-Sight Explorer を使用して、新規ジョブを作成します。
  2. [パレット] の [スニペット] タブから、次の 2 つのスニペットをスプレッドシートに追加します。[Acquisition] → [AcqCounter] および [Math & Logic] → [Random]
  3. AcquireImage セルを開いて、[トリガ] パラメータを [連続] に設定します。
  4. 空白のセルを右クリックして [関数の挿入] を選択し、[関数の挿入] ダイアログを開きます。左側のペインで [入出力] カテゴリをクリックし、その後、右側のペインで FormatOutputBuffer 関数をダブルクリックして、スプレッドシートに挿入します。
  5. データの最初の 4 バイトは自動的に PROFINET バッファに追加され、これによって InspectionID と InspectionResultCode が (16 ビットの整数として) 定義されますが、これらは FormatOutputBuffer リストには表示されません。
  6. [FormatOutputBuffer] ダイアログの [追加] ボタンをクリックします。これでセル選択モードになります。Random スニペットの「Scaled random number」セルを選択します。
  7. [FormatOutputBuffer] ダイアログの [追加] ボタンを再びクリックします。これでセル選択モードになります。AcqCounter スニペットのカウントセルを選択します。
  8. [OK] ボタンをクリックして、[FormatOutputBuffer] ダイアログを閉じます。
  9. 空白のセルを右クリックして [関数の挿入] を選択し、[関数の挿入] ダイアログを開きます。左側のペインで [入出力] カテゴリをクリックし、その後、右側のペインで WriteResultsBuffer 関数をダブルクリックして、スプレッドシートに挿入します。
  10. WriteResultsBuffer 関数の [プロトコル] パラメータを [PROFINET に設定し、[バッファ] パラメータを、作成した FormatOutputBuffer 関数の データ構造体へのセル参照として設定します。
  11. In-Sight ビジョンシステムをオンラインにします。
  12. Simatic Manager で、ご使用の PLC を右クリックし、[Insert New Object] メニューから [Variable Table] を選択して新しい変数テーブルを作成し、そのテーブルを開きます。
  13. テーブルに 4 つの項目を追加します。

    オフセット

    アドレス

    表示形式

    説明

    0

    PID 257

    FLOATING_POINT

    乱数

    +4

    PID 261

    DEC

    Acquisition ID

    :  各アドレスは、Inspection Results モジュールが入力アドレス 253 にあることを前提としています (モジュールの最初の 4 バイトは、Inspection ID と Inspection Result Code 用です)。Inspection Results モジュールが別のアドレスにある場合は、指定したオフセットを入力アドレスに適用して、正しいアドレスに設定してください。
  14. Simatic Manager で、[PLC] → [Connect To] メニューから [Configured PLC] を開き、[Variable] メニューから [Monitor] を選択します。表示される値は、In-Sight Explorer スプレッドシートに表示されている値と同じになります。

In-Sight ビジョンシステムへのデータの送信

Siemens PLC から In-Sight Explorer スプレッドシートにデータを送信するためには、ReadUserDataBuffer 関数を使用して、データが PROFINET スタックからプルされる必要があります。この関数は、FormatInputBuffer 関数内で作成されたデータ形式を取り、PROFINET User Data モジュールのデータ領域からデータを読み取って、このデータを書式設定して In-Sight Explorer スプレッドシートに入れます。このデータは、更新サイクルごとに、PLC から受信されます。

例: In-Sight ビジョンシステムへのデータの送信

この例では、In-Sight Explorer 内に新規ジョブを作成した後、以下の手順を実行して、Siemens PLC が受信するデータを設定します。

  1. AcquireImage セルを開いて、[トリガ] パラメータを [連続] に設定します。
  2. 空白のセルを右クリックして [関数の挿入] を選択し、[関数の挿入] ダイアログを開きます。左側のペインで [入出力] カテゴリをクリックし、その後、右側のペインで FormatInputBuffer 関数をダブルクリックして、スプレッドシートに挿入します。
  3. [FormatInputBuffer] ダイアログの [追加] ボタンをクリックして、32 ビットの浮動小数点数と 32 ビットの整数をリストに追加します。

  4. [OK] ボタンをクリックして、[FormatInputBuffer] ダイアログを閉じます。
  5. 空白のセルを右クリックして [関数の挿入] を選択し、[関数の挿入] ダイアログを開きます。左側のペインで [入出力] カテゴリをクリックし、その後、右側のペインで ReadUserDataBuffer 関数をダブルクリックして、スプレッドシートに挿入します。
  6. ReadUserDataBuffer 関数の [プロトコル] パラメータを [PROFINET に設定し、[バッファ] パラメータを、作成した FormatInputBuffer 関数の データ構造体へのセル参照として設定します。
  7. FormatInputBuffer 関数に追加されたフィールドに基づいて、データアクセス関数が自動的にスプレッドシートに追加されます。
  8. In-Sight ビジョンシステムをオンラインにします。
  9. Simatic Manager で、ご使用の PLC を右クリックし、[Insert New Object] メニューから [Variable Table] を選択して新しい変数テーブルを作成し、そのテーブルを開きます。
  10. 送信されるユーザデータ用に 2 つと、SetUserData および SetUserDataAck 用に残りの 2 つで、4 つの項目をテーブルに追加します。

    オフセット

    アドレス

    表示形式

    0

    PQD 257

    FLOATING_POINT

    +4

    PQD 261

    DEC

      Q1.2 BOOL
      I4.7 BOOL
    :  各アドレスは、User Data モジュールが出力アドレス 257 にあることを前提としています。User Data モジュールが別のアドレスにある場合は、指定したオフセットを出力アドレスに適用して、正しいアドレスに設定してください。
  11. Simatic Manager で、[PLC] → [Connect To] → [Configured PLC] メニューをクリックします。
  12. 変数テーブルに追加した 4 つの項目の値を入力して、[Variable] メニューの [Activate Modify Values] を選択します。
  13. 値を入力したら、SetUserData ビットをセットし、SetUserDataAck ビットがセットされるまで待ってから、SetUserData ビットをクリアします。

  14. In-Sight Explorer スプレッドシートの値が、入力した値に変更されます。