DeviceNet ゲートウェイへの接続

この例の目的は、HMS Anybus X-gateway を使用して DeviceNet ファクトリ通信ネットワーク上のデータにアクセスする方法を示すことです。このトピックでは、ゲートウェイのインストールおよび設定の方法、デバイスに通信を許可するようにネットワーク (RSNetworks) を設定する方法、および In-Sight Explorer ジョブを作成してゲートウェイにデータを送信する方法を説明します。以下の例では、ユーザが次のハードウェアとソフトウェアを使用していることを前提としています。

:  :DeviceNet は、In-Sight ファームウェア 4.x.x を搭載した In-Sight ビジョンシステムでのみ使用可能です。In-Sight ファームウェア 5.1.0 以降を搭載した In-Sight ビジョンシステムでは使用できません。モデル一覧およびサポートされているファームウェアバージョンについては、「ファームウェアバージョン」を参照してください。
  • ファームウェアバージョン 3.41.00 以降が実行されている In-Sight ビジョンシステム
  • Anybus X-gateway Modbus/TCP-to-DeviceNet Adapter
  • DeviceNet Scanner Card を搭載した Rockwell PLC
  • Rockwell RSNetWorx および RSLogix 5000 Software

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

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

このセクションでは、Rockwell PLC と Anybus X-gateway の間の DeviceNet 通信を接続および検証するための手順を示します。Anybus X-gateway により、Modbus/TCP ネットワークと DeviceNet ネットワークの間のデータ交換が許可され、これにより入出力データを Rockwell PLC に送信できるようになります。Rockwell PLC と Anybus X-gateway の間の DeviceNet 接続を設定するには、RSNetWorx を使用してコントローラのハードウェア構成にそのゲートウェイを追加する必要があります。

  1. DeviceNet の RSNetWorx を開きます。

    :  Anybus-Gateway を初めて使用する場合は、エレクトロニックデータシート (EDS) をインストールする必要があります。HMS の Web サイトから EDS ファイルをダウンロードします。
  2. [ツール] メニューで、EDS ウィザードを選択して EDS ファイルをインストールします。[次へ] をクリックして [Register an EDS file (EDS ファイルの登録)] を選択し、[次へ] を選択します。ダウンロードした EDS のパスを追加し、[次へ] をクリックします。
  3. [ネットワーク] メニューで [オンライン] を選択します。これにより、スキャナで設定したボーレートでネットワーク全体がスキャンされ、接続されているノードのすべてがリストに表示されます。
  4. 1756-DNB (ほかの接続されたスキャナ) をダブルクリックします。これにより、スキャナの設定を示したウィンドウが開きます。
  5. [Scanlist] タブを選択します。オフライン設定をスキャナにダウンロードするか、またはスキャナの現在の設定をアップロードするかを尋ねるプロンプトが表示されます。[アップロード] を選択します。
  6. Scanlist にデバイスを追加するには、[Available Devices (使用可能なデバイス)] で [Anybus-S] をハイライト表示し、右矢印をクリックしてスキャナに追加します。

  7. デバイスを追加したら、[Edit I/O Parameters (I/O パラメータの編集)] を選択します。I/O のタイプとサイズを設定するためのウィンドウが表示されます。ポーリングオプションをオンにし、入出力サイズを 20 バイトに設定します。ポーリングレートを「スキャンごと」に設定して、入手可能になったらデータを取得します。
  8. 入出力のデータ量が正しいことを確認します。[入力] タブと [出力] タブを選択して、以下のグラフィックスと比較します。

  9. [ファイル] → [名前を付けて保存] をクリックし、その設定を InSightExample.dnt として保存します。
:  20 バイトという入出力サイズの値はデフォルト設定です。このサイズが必要とする値ではない場合は、『Anybus X-gateway ユーザマニュアル』を参照してこの設定値を調整してください。マニュアルは、HMS の Web サイト (www.hms-network.com) からダウンロードできます。

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

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

:  詳細については、www.modbus.orgModicon 発行の『Open Modbus/TCP Specification』、および www.cognex.com/support/files/In-Sight/Modbus.zip に格納されている InSightModbus.doc を参照してください。

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. [パレット] で [スニペット] タブを選択し、[Communications] フォルダを展開します。まず A2 を選択して DeviceNetGateway.cxd をダブルクリックするか、またはファイルをセル A2 にドラッグ & ドロップすることにより、In-Sight Explorer スプレッドシートの A2 セルに DeviceNetGateway.cxd ファイルをロードします。
  4. ビジョンシステムまたはエミュレータに、新規ジョブを DeviceNetGateway.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 関数コードコマンドを作成するときに使用します。DeviceNetbusGateway.cxd ファイルでは、セル C5 に TCPDevice 関数が 1 つ格納されており、読み取り要求用のセル B15 と書き込み要求用のセル B27 には QueryDevice 関数が 1 つずつ、合わせて 2 つの関数が格納されています。
  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 関数をダブルクリックし、パラメータが次のように設定されていることを確認します。

    :  Modbus パケット構造体の詳細については、Modbus 発行の『Modbus Implementation Guide』を参照してください。
    パラメータ入力番号 パラメータ入力名 パラメータ入力値 説明
    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 は入力レジスタ (DeviceNet 経由で書き込まれたデータ) を読み取ります。
    11 Data 0

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

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

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

    :  入力レジスタは、アドレス 1000 から 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 バイト形式です。DeviceNetGateway.cxd ファイルでは、セル D18 の BGetInt 関数により、バイト 9 (ワード読み取りの下位バイト) のバイナリ値が読み取られます。
    11/12 レジスタ 1 の値 これらの値は 2 バイト形式です。DeviceNetGateway.cxd ファイルでは、セル D19 の BGetInt 関数により、バイト 11 (ワード読み取りの下位バイト) のバイナリ値が読み取られます。
    13/14 レジスタ 2 の値 これらの値は 2 バイト形式です。DeviceNetGateway.cxd ファイルでは、セル D20 の BGetInt 関数により、バイト 13 (ワード読み取りの下位バイト) のバイナリ値が読み取られます。
    15/16 レジスタ 3 の値 これらの値は 2 バイト形式です。DeviceNetGateway.cxd ファイルでは、セル D21 の BGetInt 関数により、バイト 15 (ワード読み取りの下位バイト) のバイナリ値が読み取られます。
    17/18/19/20 浮動小数点数値を格納するレジスタ 4 および 5 の値 これらの値は浮動小数点形式です。DeviceNetGateway.cxd ファイルでは、セル D22 の BGetInt 関数により、バイト 17 (ワード読み取りの下位バイト) のバイナリ値が読み取られます。
    21/22/23/24/25/26 文字列 (バイト配列) を格納するレジスタ 6、7、および 8 の値 これらの値は文字列形式です。DeviceNetGateway.cxd ファイルでは、セル D23 の BGetInt 関数により、バイト 21 (ワード読み取りの下位バイト) のバイナリ値が読み取られます。
  10. 書き込み要求用の QueryDevice 関数 (セル B27) は、要求パケットおよび応答パケットと同じ形式で書式設定されます。

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

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

  1. In-Sight Explorer での TCP/IP Modbus による通信の設定」のセクションで作成した In-Sight Explorer ジョブを引き続き使用します。
  2. RSLogix を開き、PLC のプロジェクトをロードします。
  3. I/O Configuration フォルダで、DeviceNet モジュール (この例では 1756-DNB) を右クリックし、[プロパティ] を選択します。

  4. [RSNetWorx] タブをクリックし、前のセクションで作成した設定ファイルを追加します。[OK] をクリックします。

  5. コイルをラダープログラムに追加して、実行モードで DeviceNet スキャナを設定します。

  6. RSLogix で、[Data Types] → [User-Defined] フォルダを右クリックし、メニューから [New Data Type] を選択します。
  7. データ型に AnyBusData という名前を付けます。そのデータ型のメンバで、次の値を配置します。

    • 4 つの整数
    • 1 つの実数
    • ASCII として表示される SINT[6] の配列

  8. ユーザ定義データ型 (この例では InSightData) を使用して、新しいタグをプロジェクトの Controller Tags に追加します。
  9. 最後に、COP 命令を Main Routine ラダーロジックプログラムに追加して、DeviceNet バッファ (Local:1:0.Data[0]) から InSightData タグにデータをコピーします。

  10. 更新したプロジェクトをコントローラにロードし、オンラインに切り替えて、実行モードで起動します。
  11. [InsightData] タグで、各項目の値を入力します。
  12. In-Sight ビジョンシステムをオンラインにします。
  13. DeviceNetGateway.cxd ファイルのセル A8 で、レジスタの値として [9] (18 バイト) を選択します。
  14. セル NC で、[Read Registers] のドロップダウンリストから、[Input Registers] を選択します。

  15. セル A15 の [Read] ボタンをクリックして、結果を更新します。セル D18 ~ D23 の値は、Controller Tags で入力した値を反映するように変更されます。

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

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

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

  4. セル A27 の [Write] ボタンをクリックし、In-Sight Explorer スプレッドシートから PLC に結果を書き込みます。
  5. RSLogix で、前のプロジェクトを開き、別のラングを追加して、ゲートウェイから InSightData タグにデータを書き込みます。

  6. 更新したプロジェクトをコントローラにロードし、オンラインに切り替えて、実行モードで起動します。
  7. [Controller tags (コントローラタグ)] を開き、InSightData タグで作成したユーザに対する変更をモニタします。