Beckhoff#TwinCAT3 TF6281で三菱のFX5-ENET/IPと接続しよう

今回の記事ではFX5UとFX5-ENET/IPからClass1 Instanceを立ち上げ、BeckhoffのTwinCAT3 Ethernet/IP Scanner(TF6281)と接続するまでの設定やプログラムを説明します。

さ、FAを楽しもう。

前書き

いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。

技術は独り占めせず、届けるもの

私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。

また、もしあなたの現場で…

  • 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
  • 「EtherCAT通信でうまくいかない部分を検証してほしい」
  • 「新しいリモートI/Oを試したいけど社内に検証環境がない」

など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。

支援のかたち

現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。

メンバーシップ(ラジオの応援)

Fullさんとのラジオをより充実させるための支援プランです。

https://note.com/fulhause/membership/join

Amazonギフトリスト

コンテンツ制作に必要な機材・書籍をリストにしています。

https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share

Patreon(ブログ・動画活動への応援)

月額での小さなご支援が、記事の執筆・検証環境の充実につながります。

https://www.patreon.com/user?u=84249391

Paypal

小さな支援が大きな力になります。

https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP

知ってたら助かること、届けたいだけです

あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。

soup01threes*gmail.com

https://x.com/3threes2

技術はひとりじゃもったいない。

Reference Link

http://soup01.com/ja/category/protocol/ethernet-ip/

Implementation

Mels Side

最初にFX5-ENET/IP側を設定します。

ツールダウンロード

下記のLinkからFX5-ENET/IPのConfiguration ToolsをDownloadしてください。

https://www.mitsubishielectric.co.jp/fa/download/software/detailsearch.page?mode=software&kisyu=/plcf&shiryoid=0000000092

ツールインストール

そして先程Downloadしたツールをインストールします。

Next>で進みます。

インストール言語を設定し、Nextで進みます。

ツールのインストール場所を設定し、Next>で進みます。

Installで進みます。

しばらく待ちます…

Done!

モジュール構成

次はGXWORKS3を起動し、Module Configuration画面で今回記事で使用するFX5 ENET/IPモジュールを追加しましょう。

Done!

プロジェクトを保存すると、Popup画面が表示され、Setting Changeボタンをクリックしてください。

今回の記事はFX5 ENET/IPのモジュールラベルを使用するので、Add New Module→Use Module LabelをYesに選択し、Okで進みます。

OKで進みます。

Module パラメータ

次はParameters→Module Information→先ほど追加したFX5 ENET/IPをクリックします。

こちらはモジュールの設定画面です。

Own Node Settingsの画面を開き、FX5-ENET/IPのIP Addressを設定しましょう。

ENIP コンフィギュレーション

今度は先ほどインストールしたEIP Configuration ツールを起動します。

Done!

Add New ElementのPopupからFX5-ENET/IPのIPアドレスを設定します。

Done!

コネクションの追加

次はFX5-ENET/IPに新しいClass1 Instanceを追加します。

Connectionの設定画面が表示されます。

基本的にはNumber(接続番号)、そしてT->OとO->TのInstance番号とByteサイズを設定するだけです。

結果

Done!

ダウンロード

最後は設定をモジュールにDownloadします。右上にあるOnline Commandをクリックします。

そして下記のICONをクリックしプロジェクトをDowloadしあす。

Downloadボタンをクリックし進みましょう。

VAR

今回プログラムで使用するFB Instanceを定義します。

そしてGlobal ラベルにWORDの配列を宣言します。

プログラム

今回の記事ではラダーでプログラムを作成します。

こちらのネットワークはモジュールの状態をCHECKし、OKならEthernet/ip接続をスタートします。

こちらのネットワークはEthernet/ip接続番号1の入力データを取得します。

こちらのネットワークはEthernet/ip接続番号1の出力データを書き込みます。

Build All

Convert→Build Allでプロジェクトをコンパイルします。

ダウンロード

最後はプロジェクトをDownloadし、CPUリセットしましょう。それで三菱側はOKです。

TwinCAT Side

次はTwinCAT3側です。

EDSファイル

先ほど三菱HPからDownloadしたSetup FileにEDS FILEがあります。

そのEDS FILEをTwinCAT→3.1→Config→Io→EthernetIPに格納します。

EIPスキャナの追加

次はEthernet/IP Scannerを追加するために、I/O→Devices→Add New Itemします。

Ethernet/IP→EtherNet/IP Scannerを選び、OKで進みます。

Ethernet/IP Scannerとして使用したいネットワークAdapterを設定します。

イーサネット・アダプター

または、Adapter Tab→Searchをクリックします。

実際にTwinCAT3 Runtimeを実行しているPCのAdapterを設定しましょう。

Done!

次はSettings Tabを開きます。IP AddressとNetwork Maskをネットワーク構成に合わせて設定しましょう。

Done!

FX5 Ethernet/IP接続の追加

次はFX5のEtherNet/IP 接続を追加するためにDevice1→右クリック→Add New Itemします。

先ほどEDS FILEを格納したので、FX5-ENET/IPを選び→OKで進みます。

Done!

IPを変更する

次はFX5-ENET/IPの接続IPアドレスを変更するために、右クリック→Change IP Addressをします。

IOコネクションの追加

次はEtherNet/IP 接続のタイプを設定するために、右クリック→Append IO Connectionします。

今回はNo001 Exclusive Ownerに設定します。

Yesで進みます。

Done!それで新しいConenctionが追加されました。

InputにはDefault256 Bytesに設定されています。

OutputにもDefault256 Bytesに設定されています。

最後はTwinCAT3側の接続設定も詳しく見ていきましょう。

PLCの追加

次はPLCを追加するために、PLC→Add New Itemします。

Standard PLC Projectを選び→Addで進みます。

GVL

GVLを作成し、256Bytesの入出力Process データを定義します。

{attribute ‘qualified_only’}
VAR_GLOBAL
arrDataInputsFromFX5 AT %I*:ARRAY[0..255]OF USINT;
arrDataOutputsFromFX5 AT %Q*:ARRAY[0..255]OF USINT;
END_VAR

メインプログラム

そして検証用のプログラムを作成します。

  • グローバルの入出力配列とローカル配列を丸ごとコピーして同期しています。
  • 1本目のMEMCPY:
    • GVL.arrDataInputsFromFX5(FX5から来た入力データ)→ inWords(ローカル作業用)へコピー。
    • → スキャン中はinWordsを読んで処理するための取り組み。
  • 2本目のMEMCPY:
    • outWords(ローカルで作った出力データ)→ GVL.arrDataOutputsFromFX5(FX5へ出す領域)へコピー。

PROGRAM MAIN
VAR
inWords:ARRAY[0..127]OF WORD;
outWords:ARRAY[0..127]OF WORD;

END_VAR




MEMCPY(
destAddr:=ADR(inWords)
,srcAddr:=ADR(GVL.arrDataInputsFromFX5)
,n:=SIZEOF(inWords)
);

MEMCPY(
destAddr:=ADR(GVL.arrDataOutputsFromFX5)
,srcAddr:=ADR(outWords)
,n:=SIZEOF(outWords)
);

Build

Build→Build Solutionでプロジェクトをコンパイルします。

Mapping Input

Inputs変数をプロジェクトの変数とMappingします。

FX5-ENET/IPの接続にあるすべての変数を選び→Change Multi Linkします。

先ほど宣言したWORD配列を設定します。

Mapping Output

Outputs変数をプロジェクトの変数とMappingします。

FX5-ENET/IPの接続にあるすべての変数を選び→Change Multi Linkします。

先ほど宣言したWORD配列を設定します。

結果

下図のように、三菱FX5-ENET/IPが出力したデータがTwinCAT3側が受け取りました

また、TwinCAT3が送信したデータがFX5-ENET/IPにも受け取りました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする