PROFIBUS ネットワーク上の Siemens PLC との通信

概要

In-Sight ビジョンシステムは、Anybus X-gateway と TCP/IP Modbus プロトコルを使用して、PROFIBUS ネットワーク上のデバイスと通信することができます。

このトピックでは、ゲートウェイのインストールおよび設定方法、PLC プログラミングソフトウェア (Siemens Step 7) の設定方法、PROFIBUS ネットワーク上の Siemens PLC と通信するための In-Sight Explorer のセットアップ方法について説明します。

下記の例は、次のコンポーネントを使用していることを前提に記述されています。 

  • Anybus X-gateway および HMS Anybus IPconfig ソフトウェア
  • ファームウェアバージョン 3.41.00 以降を実行している In-Sight ビジョンシステム
  • Siemens S7-300 または S7-400 シリーズ PLC (PROFIBUS オプション)
  • Siemens Step 7 プログラミングソフトウェア

Anybus X-gateway のインストールと設定

このセクションの手順では、Anybus X-gateway の Ethernet 部分のインストールおよび設定方法について説明します。手順では、次のコンポーネントを使用していることを前提にしています。 

:  詳細については、HMS Anybus-X のマニュアル (『Anybus-X Generic Gateway User Manual』、『Anybus-X Ethernet Network Interface Addendum』、『Anybus-X PROFIBUS Slave Network Interface Addendum』) を参照してください。これらのマニュアルは、HMS の Web サイト (www.hms-networks.com) からダウンロードできます。

Anybus X-gateway のインストールおよび設定を行うには、以下の手順に従います。

  1. HMS のソフトウェアユーティリティである Anybus IPconfig をダウンロードしてインストールします。このユーティリティでは、HMS IP Configuration Protocol (HICP) を使用して、Anybus ベースの Ethernet インタフェースを簡単な方法で設定できます。
  2. Ethernet に接続した PC で、Anybus IPconfig を実行します。ネットワーク上で検出された Anybus ベースの Ethernet インタフェースとその IP アドレスが、すべてウィンドウに表示されます。
  3. Anybus X-gateway のロータリー PROFIBUS ノードアドレススイッチを使用して、PROFIBUS ノードアドレスを設定します。詳細については、『Anybus-X PROFIBUS Slave Network Interface Addendum』を参照してください。
  4. Anybus X-gateway ハードウェアを実際に取り付けて接続します。詳細については、Anybus X-gateway のマニュアルを参照してください。
  5. Anybus X-gateway ハードウェアを適切に取り付けて、すべてのケーブルを接続した後、Anybus X-gateway ハードウェアの電源を投入し、電源がオンになるまで 30 ~ 60 秒待ちます。Anybus-X Gateway ハードウェアの電源がオンになると、Ethernet LED 状態インジケータが緑色に点灯または点滅します。
  6. Anybus IPconfig ユーティリティで、[Scan] ボタンをクリックし、Anybus ベースの Ethernet インタフェースがすべて表示されているウィンドウを更新します。リストに、デフォルト IP アドレス 192.168.0.1 の Anybus X-gateway ハードウェアが新たに追加表示されます。
  7. Anybus X-gateway の設定を変更する必要がある場合は、リストで [Anybus X-gateway] をダブルクリックします。DHCP による IP アドレスまたは固定 IP アドレス、サブネットマスク、デフォルトゲートウェイ、および DNS サーバを割り当てるためのダイアログが表示されます。設定を完了したら、[Set] ボタンをクリックして続行します。
  8. 最後に、Anybus IPconfig ユーティリティで、[Scan] ボタンをクリックし、Anybus ベースの Ethernet インタフェースがすべて表示されているウィンドウを更新します。リストに、新しい IP アドレス (変更した場合) の Anybus X-gateway ハードウェアが表示されます。

PROFIBUS ネットワーク上の Siemens PLC への Anybus X-gateway の接続

このセクションでは、Siemens PLC と Anybus X-gateway の間の PROFIBUS 通信を接続および検証するための手順を示します。

Anybus X-gateway では、PROFIBUS ネットワークと TCP/IP Modbus ネットワークの間でデータをやり取りします。これにより In-Sight ビジョンシステムの入力と出力を Siemens PLC のプロセッサのメモリに送信することができます。これらの値は、確立後、PROFIBUS ネットワークの更新レートによって定義される間隔で同期されます。

:  詳細については、HMS Anybus-X のマニュアル (『Anybus-X Generic Gateway User Manual』、『Anybus-X Ethernet Network Interface Addendum』、『Anybus-X PROFIBUS Slave Network Interface Addendum』) を参照してください。これらのマニュアルは、HMS の Web サイト (www.hms-networks.com) からダウンロードできます。

Anybus X-gateway との PROFIBUS 通信の設定

Siemens コントローラと Anybus X-gateway の間の PROFIBUS 接続をセットアップするには、まず、Siemens の HW Config ツールを使用して Anybus X-gateway をコントローラのハードウェア構成に追加する必要があります。

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

  3. Siemens の HW Config ツールが表示されます。PROFIBUS ノードをコントローラに追加するには、PROFIBUS システムがハードウェア構成図内に存在する必要があります。ハードウェア構成図に PROFIBUS:DP マスタシステムが存在しない場合は、以下の手順に従って追加します。

    1. ラック設定のコントローラのスロットで、DP または MPI/DP モジュールを見つけて、そのモジュールをダブルクリックします。
    2. [Properties] ダイアログの [Operating Mode] タブで [DP Master] ラジオボタンが選択されていることを、また [General] タブでインタフェースタイプが [PROFIBUS] に設定されていることを確認します。
    3. デバイスのアドレスを変更する必要がある場合は、[Properties...] ボタンをクリックします。
    4. リストビューで [PROFIBUS] サブネットを選択し、[Properties...] ボタンをクリックします。必要な場合は、ネットワーク名を変更し、[Transmission Rate] と [Highest PROFIBUS Address] を変更します。
    5. [OK] ボタンをクリックして、このダイアログでの変更をすべて確定します。
    6. これで、PROFIBUS DP マスタシステムが図に表示されます。

  4. Anybus X-gateway を PROFIBUS ネットワークに初めて追加する場合は、HMS Industrial Networks AB Anybus-X Gateway GSD ファイルがインストールされている必要があります。このファイルの最新バージョンは、HMS の Web サイトからダウンロードするか、HMS に直接連絡して入手することができます。以下の手順を実行して Anybus-X Gateway GSD ファイルをインストールします。

    1. HW Config ツールのメニューから、[オプション][Install GSD Files (GSD ファイルのインストール)] を選択します。
    2. [Browse] ボタンを押し、HMS_1013.GSD ファイルが格納されている GSD フォルダを選択します。
    3. [Select All] ボタンを押してから、[Install] ボタンをクリックして Anybus X-gateway のハードウェア記述をインストールします。
  5. Anybus X-gateway デバイスを PROFIBUS ネットワークに追加するには、Hardware Catalog で [Anybus-S PROFIBUS DP-V1] ノードを参照します (ツリーで、[PROFINET DP][Additional Field Devices][General] ノードの順に選択してアクセスします)。Anybus-S PROFIBUS DP-V1 デバイスのインスタンスをハードウェア構成の PROFIBUS DP マスタシステムにドラッグします。

  6. PROFIBUS ノードのアドレスを、接続先の Anybus X-gateway デバイスのアドレスに設定します (Anybus X-gateway PROFIBUS ノードのアドレスは、Anybus X-gateway のロータリー PROFIBUS ノードアドレススイッチを使用して設定します)。
  7. これで、PROFIBUS:DP マスタシステムに Anybus X-gateway デバイスが指定されたアドレスで表示されます。
  8. デバイス名を変更するには、構成内のノードをダブルクリックし、[Designation] フィールドの値を新しい名前に変更します。

  9. 次に、入出力バイトの設定値を PROFIBUS ネットワークに応じて設定する必要があります。各ネットワークでの入出力に対する Anybus X-gateway のデフォルト設定は 20 バイト (10 ワード) です。PROFIBUS ネットワーク上の I/O バイトすべてにアクセスするように PLC を設定するには、まず、Hardware Catalog で [Anybus-S PROFIBUS DP-V1] ノードを展開します。Anybus-S PROFIBUS DP-V1 ノードで、[IN/OUT:8 words] モジュールを選択し、スロット 1 のグリッドにドラッグ & ドロップします。次に、[IN/OUT:2 words] モジュールを選択し、スロット 2 のグリッドにドラッグ & ドロップします。これで、PLC の 10 ワードが Anybus X-gateway で使用されるようにマップされます。

    :  20 I/O バイトのデフォルト設定の変更方法の詳細については、『Anybus-X Generic Gateway User Manual』の第 5 章を参照してください。
  10. Anybus X-gateway を PROFIBUS システムに追加した後は、HW Config ユーティリティを使用し、プロジェクトを保存して完了してから PLC にダウンロードすることができます。
  11. プロジェクトが PLC に正常にダウンロードされると、Anybus X-gateway では、ゲートウェイステータス LED と PROFIBUS オンラインステータス LED の両方が緑で点灯し、PROFIBUS PLC と正常に通信できることが示されます。

PROFIBUS 通信の検証

上記の手順に従うと、この時点で Anybus X-gateway が入出力デバイスとして Siemens プロジェクトに追加されます。このプロジェクトがコントローラにダウンロードされると、周期データ転送が開始されます。

PLC と Anybus X-gateway の間の I/O 接続が正しいことを検証するには、以下の手順を実行します。

  1. Siemens コントローラの [Operating Mode] を [Run] に設定します。
  2. HW Config ツールをオンラインモードで開きます。Anybus X-gateway がエラーなしで表示されます (エラーは、Anybus X-gateway のネットワークアイコンに赤い線を付けて示されます)。これは、PROFIBUS 接続が正常に確立されたことを意味します。

    接続の確立

    接続エラー

  3. PROFIBUS(1): DP マスタシステム (1) ネットワークの [Anybus X-gateway] ボックスをダブルクリックします。[General] タブに、ステータスが「OK」または「Module available and o.k.」のどちらかとして表示されます。
  4. HW Config ユーティリティで、Anybus X-gateway が選択された状態で [IN/OUT 8 words] モジュールを右クリックし、メニューから [Monitor/Modify] を選択します。

  5. [Monitor/Modify] ダイアログの [Run conditionally] サブセクションで [Monitor] チェックボックスをオンにします。ダイアログの右下に「RUNNING」というワードが表示されます。[Status value] 列には、[Address] 列のリストにある PIW 入力ワードのアドレスごとにステータスコードが返されます。

    :  詳細については、『Anybus-X PROFIBUS Slave Network Interface Addendum』の第 3 章を参照してください。

TCP/IP Modbus 経由での In-Sight ビジョンシステムへの Anybus X-gateway の接続

このセクションでは、TCP/IP Modbus による通信を使用した In-Sight ビジョンシステムへの Anybus X-gateway の接続について説明します。

:  
  • 詳細については、Open Modbus/TCP Specification (外部リンク。インターネットアクセスが必要。Modicon 発行) と InSightModbus.doc (Cognex サポート Web サイトで入手可能) を参照してください。
  • 以下のサンプルでは、Anybus X-gateway でのデフォルトの [Modbus/TCP Modbus Adress Mode] が [Enabled] になっている (デフォルト設定) と想定しています。この設定を [Modbus Address Mode Disabled] に変更する場合は、ProfibusGateway.cxd の Read Holding Registers 関数と Write Multiple Registers QueryDevice 関数を更新し、0 ではなく新しい登録アドレスの 1024 を反映させる必要があります。『X-Gateway Interface Addendum Ethernet Slave Interface』の第 5 章、5-1 から 5-4 ページを参照してください。

In-Sight Explorer での TCP/IP Modbus による通信の設定

In-Sight ビジョンシステムでは TCP/IP Modbus クライアント機能が有効になっていますが、Anybus X-gateway が TCP/IP Modbus サーバ (スレーブ) として機能するため、このサーバ機能はこのモデルでは必要ありません。

  1. In-Sight Explorer で、[In-Sight ネットワーク] ペインから設定する In-Sight ビジョンシステムまたはエミュレータを選択します。
  2. [ファイル] メニューの [ジョブの新規作成] を選択し、ビジョンシステムまたはエミュレータに新規ジョブをロードします。
  3. [パレット]の [スニペット] タブを選択して、[Communication] フォルダを展開します。まず A2 を選択して CCLinkGateway.cxd をダブルクリックするか、またはファイルをセル A2 にドラッグ & ドロップすることにより、In-Sight Explorer スプレッドシートの A2 セルに ProfibusGateway.cxd ファイルをロードします。
  4. ビジョンシステムまたはエミュレータに、新規ジョブを ProfibusGateway.job として保存します。
  5. セル A5 をダブルクリックし、Anybus X-gateway の IP アドレスを入力します (必要に応じ、HMS Anybus IPconfig ソフトウェアユーティリティを実行して、Anybus X-gateway の IP アドレスを取得します)。
  6. TCP/IP Modbus の通信では、In-Sight クライアント (マスタ) のジョブに TCPDevice 関数と QueryDevice 関数が存在している必要があります。TCPDevice 関数は、リモートデバイス間 (この場合は、Anybus X-gateway と In-Sight ビジョンシステム) のネットワーク接続を作成するときに使用します。QueryDevice 関数は、TCP/IP Modbus パケットの Modbus 関数コードコマンドを作成するときに使用します。ProfibusGateway.cxd ファイルでは、TCPDevice 関数が C5 に含まれ、2 つの QueryDevice 関数がセル B15 (読み取り要求用) とセル B27 (書き込み要求用) に含まれています。
  7. Anybus X-gateway は、QueryDevice 関数の以下の Modbus 関数コードをサポートしています。

    関数コード

    関数名

    3

    Read multiple registers

    4

    Read input registers

    6

    Write single register

    7

    Read exception status

    8

    Diagnostics

    16

    Force multiple registers

    22

    Mask write register

    23

    Read/Write registers

  8. セル B15 の QueryDevice 関数をダブルクリックし、パラメータが次のように設定されていることを確認します。

    パラメータ入力番号

    パラメータ入力

    名前

    パラメータ入力値

    説明

    1

    Event

    $A$15

    [イベント] ボタンへのセル参照。

    2

    Device

    $C$5

    セル C5 の TCPDevice 関数へのセル参照。

    3

    Data

    0

    Modbus ヘッダ、トランザクション ID、上位バイト = 0。

    4

    Data

    0

    Modbus ヘッダ、トランザクション ID、下位バイト = 0。

    5

    Data

    0

    Modbus ヘッダ、プロトコル ID、上位バイト = 0。

    6

    Data

    0

    Modbus ヘッダ、プロトコル ID、下位バイト = 0。

    7

    Data

    0

    フィールド長、上位バイト = 0。

    8

    Data

    6

    フィールド長、下位バイト = 6 (後続のバイト数)。

    9

    Data

    0

    単位 ID、使用しないバイト = 0。

    10

    Data

    $C$12+3

    Modbus 関数コードバイト。この例では、この入力は 3 または 4 になります。

    :  Modbus 関数コードバイトが 3 にセットされている場合、In-Sight は保持レジスタ (TCP/IP Modbus 経由で書き込まれたデータ) を読み取ります。Modbus 関数コードバイトが 4 にセットされている場合、In-Sight は入力レジスタ (PROFIBUS 経由で書き込まれたデータ) を読み取ります。

    11

    Data

    0

    Modbus 参照アドレス、上位バイト = 0。

    :  入力レジスタは、アドレス 1024 から Read multiple registers (関数コード 3) を使用して、またはアドレス 0 から Read input registers (関数コード 4) を使用して読み取られる場合があります。

    12

    Data

    0

    Modbus 参照アドレス、下位バイト = 0。

    :  入力レジスタは、アドレス 1024 から Read multiple registers (関数コード 3) を使用して、またはアドレス 0 から Read input registers (関数コード 4) を使用して読み取られる場合があります。

    13

    Data

    0

    ワード (レジスタ) 数、上位バイト = 0。

    14

    Data

    $B$8

    ワード (レジスタ) 数、下位バイト。この例では、この入力は 1、2、3、5、8 のいずれかになります。

  9. Anybus X-gateway からの TCP/IP Modbus 応答パケットは、QueryDevice 関数のバイナリ構造体に格納されます。これらの戻り値は、In-Sight Explorer で BGetInt 関数によって読み取られます。この関数は、バイナリ構造体の特定のバイトからの整数値を返し、応答は以下のような形式になります。

    バイト番号

    Modbus 応答

    説明

    バイト 7

    Modbus 関数コード

    この例では、3 または 4。このコマンドが失敗すると、関数コードに 128 が追加されます (返される値は 131 または 132。セル E15 を参照してください)。

    バイト 8

    バイト数

    この例では、2 レジスタ (ワード) = 4 バイト。セル E15 を参照してください。

    バイト 9/10

    レジスタ 0 の値

    これらの値は 2 バイト形式です。ProfibusGateway.cxd ファイルで、セル D18 の BGetInt 関数がバイト 9 のバイナリ値を読み取ります (ワード読み取りの下位バイト)。

    バイト 11/12

    レジスタ 1 の値

    これらの値は 2 バイト形式です。ProfibusGateway.cxd ファイルで、セル D19 の BGetInt 関数がバイト 11 のバイナリ値を読み取ります (ワード読み取りの下位バイト)。

    バイト 13/14

    レジスタ 2 の値

    これらの値は 2 バイト形式です。ProfibusGateway.cxd ファイルで、セル D20 の BGetInt 関数がバイト 13 のバイナリ値を読み取ります (ワード読み取りの下位バイト)。

    バイト 15/16/17/18

    浮動小数点数値を格納するレジスタ 3 および 4 の値

    これらの値は浮動小数点形式です。ProfibusGateway.cxd ファイルで、セル D21 の BGetInt 関数がバイト 15 のバイナリ値を読み取ります (ワード読み取りの下位バイト)。

    バイト 19/20/21/22/23/24

    文字列 (バイト配列) を格納するレジスタ 5、6、および 7 の値

    これらの値は文字列形式です。ProfibusGateway.cxd ファイルで、セル D22 の BGetInt 関数がバイト 19 のバイナリ値を読み取ります (ワード読み取りの下位バイト)。

  10. 書き込み要求用の QueryDevice 関数 (セル B27) は、要求パケットおよび応答パケットと同じ形式で書式設定されます。

PLC から In-Sight ビジョンシステムへの PROFIBUS 経由でのデータの読み取り

このモデルによって提供される例に従い、Anybus X-gateway の入力バッファは読み取られるデータソースです。このバッファには、TCP/IP Modbus ネットワーク上の In-Sight ビジョンシステムによって要求される PROFIBUS ネットワーク上の PLC からのデータが保持されます。

  1. In-Sight Explorer での TCP/IP Modbus による通信の設定」のセクションで作成した In-Sight Explorer ジョブを引き続き使用します。
  2. SIMATIC マネージャを開き、PLC のプロジェクトをロードします。必要に応じて、プロジェクトを Siemens コントローラにダウンロードし、[Operating Mode] を [Run] に設定します。
  3. SIMATIC Manager で、PLC を右クリックして [Variable Table] メニューから [Insert New Object] を選択することにより、新しい変数テーブルを作成します。新規テーブルに名前を付けて開きます。
  4. 以下のテーブルのようにして、5 つの項目をテーブルに追加します。

    :  アドレスは、出力アドレスが PQW 385 になっている [IN/OUT 8 words] で予測されます。[IN/OUT 8 words] モジュールで別の出力アドレスが使用されている場合は、指定されたオフセットが出力アドレスに適用されて正しい出力アドレスが返されます。

    オフセット

    アドレス

    表示形式

    0

    PQW 385

    DEC

    +2

    PQW 387

    DEC

    +4

    PQW 389

    DEC

    +6

    PQD 391

    FLOATING_POINT

    +10

    PQD 395

    CHARACTER

    +14

    PQD 399

    CHARACTER

  5. SIMATIC Manager で、[PLC] → [Connect To] メニューから [ConfiguredCPU] を開きます。システムは、これでオンラインになり、変数テーブルに入力されたアドレスを監視します。
  6. 変数テーブルに追加した 5 つの項目の値を入力して、[Variable] メニューの [Activate Modify Values] を選択します。

  7. ビジョンシステムをオンラインに設定します。
  8. ProfibusGateway.cxd ファイルのセル A8 で、レジスタの値として [8] (16 バイト) を選択します。
  9. セル C12 で、[Read Registers] のドロップダウンリストから、[Input Registers] を選択します。

  10. セル A15 の [Read] ボタンをクリックして、結果を更新します。セル D18 ~ D22 の値は、変数テーブルに入力した値を反映して変更されます。

In-Sight ビジョンシステムから PLC への PROFIBUS 経由でのデータの書き込み

このモデルによって提供される例に従い、Anybus X-gateway の出力バッファは書き込まれるデータソースです。このバッファには、TCP/IP Modbus ネットワーク上の In-Sight ビジョンシステムによって PROFIBUS ネットワーク上の PLC に書き込まれるデータが保持されます。

  1. ProfibusGateway.cxd ファイルのセル A8 で、レジスタの値として [8] (16 バイト) を選択します。
  2. セル C12 で、[Read Registers] のドロップダウンリストから[Holding Registers] を選択します。これにより、In-Sight ジョブ内で書き込まれるのと同じレジスタからデータが読み取られます。
  3. 次に、アプリケーションに対する正しいデータタイプになるように、セル D30 ~ D34 の値を調整します。EditInt セルに値を入力します。セル D30 ~ D32 には 3 つの整数 (最小値は -32768、最大値は 32767 で、値はこの範囲内の有効な整数である必要があります) を、セル D33 には浮動小数点数値 (最小値は ±1.175495e-38、最大値は ±3.402823e+38 で、値はこの範囲内の有効な浮動小数点数値である必要があります) を、セル D34 には 6 バイトの文字列 (文字列は 4 文字を超えることができなくなりました) を入力します。

  4. セル A27 の [Write] ボタンをクリックし、In-Sight Explorer スプレッドシートから PLC に結果を書き込みます。

  5. セル A15 の [Read] ボタンをクリックします。セル D18 ~ D22 の値は、セル D30 ~ 34 に入力した値を反映して変更されます。
  6. SIMATIC マネージャを開き、PLC のプロジェクトをロードします。必要に応じて、プロジェクトを Siemens コントローラにダウンロードし、[Operating Mode] を [Run] に設定します。
  7. SIMATIC Manager で、PLC を右クリックして [Variable Table] メニューから [Insert New Object] を選択することにより、新しい変数テーブルを作成します。新規テーブルに名前を付けて開きます。
  8. 以下のテーブルのようにして、5 つの項目をテーブルに追加します。

    オフセット

    アドレス

    表示形式

    0

    PIW 325

    DEC

    +2

    PIW 327

    DEC

    +4

    PIW 329

    DEC

    +6

    PID 331

    FLOATING_POINT

    +10

    PID 335

    CHARACTER

    +14

    PIW 339

    CHARACTER

    :  アドレスは、入力アドレスが PIW 325 になっている [IN/OUT 8 words] で予測されます。[IN/OUT 8 words] モジュールで別の入力アドレスが使用されている場合は、指定されたオフセットが入力アドレスに適用されて正しい出力アドレスが返されます。
  9. SIMATIC Manager で、[PLC] → [Connect To] メニューから [ConfiguredCPU] を開きます。システムは、これでオンラインになり、変数テーブルに入力されたアドレスを監視します。変数テーブルの値は、In-Sight Explorer スプレッドシートに入力した値を反映して変更されます。

:  Siemens S7 PLC は、Byte、Word、または DoubleWord としてのデータにアクセスすることにより、I/O-image から直接、1、2、または 4 バイトを一貫して読み取ることができます。ただし、1 つのデータ文字列で 4 バイトより多くを読み取る場合は、システム関数ブロック SFC14 と SFC15 を使用する必要があります。詳細については、HMS の Web サイト (www.hms-networks.com) のサポートページにある HMS のマニュアル『How to Configure an Anybus PROFIBUS Slave Module with a Siemens Step7 PLC 』のセクション 5.2.2 を参照してください。