三菱#RJ71PN92とBeckhoff TF6270 Profinet Devicesを繋がろう

こちらの動画は三菱IQ-RのRJ71PN92を利用し、Beckhoff TwinCAT3 TF6270 と Belden のマルチプロトコルBlock IOをProfinetで接続する手順を1から説明します。

さ、はじめよう!

Reference Link

三菱#RJ71PN92をSIEMENSとProfinet通信する
Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part1

Reference Video

RJ71PN92?

RJ71PN92は三菱のIQ-Rの拡張通信モジュールです。このモジュールを使用することによりProfinet IO Controllerを立ち上げ、複数のProfinet IO Devicesと通信することができます。

Layout

こちらはRJ71PN92 モジュールのLayoutです。

Flow

こちらはRJ71PN92を使用するときのTime Chartです。

Download GSDML

下記のLinkからBeldenのProfinet・Ethernet/IPマルチプロトコルに対応するIO BlockのGSDML FileをDownloadしてください。

https://catalog.belden.com/index.cfm?event=pd&p=PF_0980ESL393121DCU1

GX Configurator-PN

RJ71PN92のProfinetネットワークを構築するにはGX Configurator‐PNのインストールが必要です。GX Configurator‐PNのセットアップFileは三菱電機の営業部署に問い合わせてください。

セットアップFileを起動し、Next>で進みます。

簡単な個人情報を入力し、Next>で進みます。

Installする場所を設定し、Next>で進みます。

Installで開始します。

しばらく待ちます…

Driverもインストールしていきましょう。

Done!

最後はパソコンを再起動しましょう。

Implementation

Beckhoff Side

Add Profinet Devices

I/O>Devices>Add New Itemで新規デバイスを追加します。

Profinet>Profinet I/O Device(RT)を選び>Okで進みます。

Profinet Deviceとして使用するEthernet Interfaceを設定してください。

Configure Task

Profinet Devices通信用の専用Taskを追加するため、Sync Task>Special Sync Taskを選び>Create new I/O Taskを追加します。

Task 名を入力し>Okで進みます。

Done!次はCycle TicksでTaskの更新時間を設定します。注意するのはProfinet ControllerのClockはProfinet Devicesより低くなると、Timeoutになる可能性が高いです。

Add New PNTC Device

次は三菱のモジュールと通信するデータを定義するため、Device 1>右クリック>Add New Itemします。

PNTC Deviceを選び>Okで進みます。

こちらはProfinet Versionを設定する画面です。TwinCAT3側は一番古いのV2.0にします。

Configure Slots

Beckhoff TwinCAT3のAPIにある各Slotのデータ交換領域を定義するため、API>Add New Itemします。

Device Configuration画面が表示されるので、アプリケーションに合わせてSlotを定義しましょう。今回の記事ではSlot1-3までModulesを定義しました。

Slot1

Slot1は64Word の入出力になります。

Slot2

Slot2は10 Float32 の入出力になります。

Slot3

Slot3は100DWord の入出力になります。

Generate GSDML

最後はGSDML Generator のTabを開き、”Create GSDML from original”でGSDML Fileを生成しましょう。

Add PLC

今度はPLCプロジェクトを追加するため、PLC>右クリック>Add New Itemします。

Standard PLC Projectを選び>AddでPLCプロジェクトを追加しましょう。

Add DUT

Process Input/Outputと紐つけるための変数を一括定義できるように、構造体を作成します。

構造体の名前を設定します。

こちらは三菱のRJ71PN92 Profinet IO Controllerと交換するデータ領域になります。今回の記事では入出力も同じサイズなので、定義も一回で済ませます。

TYPE DUT_dataExchange_Mels :
STRUCT

dataWords:ARRAY[0..63]OF WORD;
dataFloat:ARRAY[0..9]OF REAL;
dataDWord:ARRAY[0..99]OF DWORD;
END_STRUCT
END_TYPE

Add GVL

次はGlobal Variable Listを追加するため、右クリック>Add>Global Variable Listをクリックします。

GVLの名前を定義します。

先ほど定義した構造体を利用し、三菱のRJ71PN92のモジュールとデータ交換する変数を定義します。

{attribute ‘qualified_only’}
VAR_GLOBAL

dataFromMels AT %I*:DUT_dataExchange_Mels;
dataToMels AT %Q*:DUT_dataExchange_Mels;
END_VAR

MAIN

こちらはMAINプログラムになります。TwinCAT3のライブラリを使用し乱数を生成し各Registerにデータを書き込みます。

PROGRAM MAIN
VAR
i:INT;
rand:DRAND;
nrand:REAL;
END_VAR


rand();
nrand := rand.Num*5.0;
FOR i := 0 TO 99 BY 1 DO
GVL_data.dataToMels.dataDWord[i] := REAL_TO_DWORD(100.0*nrand*(i+1));
END_FOR

FOR i := 0 TO 9 BY 1 DO
GVL_data.dataToMels.dataFloat[i] := 10.0*nrand*(i+1);
END_FOR

FOR i := 0 TO 63 BY 1 DO
GVL_data.dataToMels.dataWords[i] := i+1;
END_FOR

Activate Configuration

Activate ConfigurationでプロジェクトをCPUにDownloadしましょう。

OKで進みます。

Yesで進みます。

もしライセンスが足りない場合、魔法のコードを入力しましょう。

TwinCAT RuntimeをRun Modeに切り替えます。

Login

次はLoginします。

Yesで進みます。

最後はStartでプログラムをRunにします。

3

GXWORKS3 Side

Module Configuration

まずはModule Configurationを構築します。

R35B

Rack Module R35Bを追加します。

R61P

次は電源モジュールR61Pを追加します。

CPU

今度はプロジェクトを作成したとき追加されたR04EU CPUをCPU Slotに引っ張ってきます。

Done!

CPU Ext

こちらは今回使用したR04ENCPUですが、隣には1つの拡張モジュールがあり、実際このCPUは2Slotを占有しています。なので、Module Configurationでは隣の拡張モジュールも構築する必要があります。

CPU Extenstionには4つの_RJ71EN71 Slotがあり、実際のアプリケーションに合わせて適切なSlotを追加しましょう。

Done!今回は_RJ71EN71(E+IEF)を追加しました。

RJ71PN92

最後に今回の記事の主役RJ71PN92を追加してください。

Done!

Add System Label

このStepではMustではありませんが、ラベルを使用したい方にはModule Label>右クリック>Add Module LabelでCPUのラベルを追加しましょう。

Module Parameter

次はRJ71PN91のパラメータを設定するためRJ71PN92>Module Parameterをダブルクリックしましょう。

モジュールのIpアドレスとSubnetをアプリケーションに合わせて設定してください。

次はRJ71PN91のController 名も設定しましょう。

PROFINET Module Setting

今度はProfinetネットワークを構築するため、PROFINET Module Settingをダブルクリックします。

先ほど言ったGX Configurator PNをインストールしたら、ツールが自動的に立ち上げます。

Add GSDML

PROFINETネットワークを構築するにはGSDML Fileが必要で、赤矢印のボタンをクリックしGSDML Fileを追加します。

GSDML Management画面が表示され、Next>で進みます。

Add File(s)を選び、BrowseでGSDMLが格納された場所を設定し、Next>で進みましょう。

先程Beckhoff TwinCAT3でExportされたGSDML Fileを開きましょう。

Next>で進みます。

GSDML Fileがインストールされました。

Done!Finishをクリックし終了しましょう。

Device Libraryに先ほど追加したTwinCAT Deviceが表示されました。

同じ操作でBelden社のProfinet IO Blockも追加しましょう。

Add Devices

Device Libraryから先程のTwinCAT ProfinetデバイスをDropし、PROFINETネットワークに追加しましょう。

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

Device Name

Profinetネットワークを構築するには各IO Deviceにもデバイス名が必要で、こちらのDevice Nameはデバイス名になります。実際のアプリケーションに合わせて設定していきましょう。

IP Address

こちらはProfinet IO デバイスのIPアドレスになります。

NumberのDrop-Listからデバイスの番号を設定すると、該当する番号はIPアドレスの一番最後に数字に反映されます。例えば下図のようにNumberを99に設定すると、このProfinet IO DeviceのIPアドレスは192.168.5.99になります。

Activate Configuration

Defaultでは”Active Configuration”のCheck Box入れていますが、念の為にもう一度確認していきましょう。

Module Configuration

Module Configurationでは今回使用するGSDML Fileもすでに各Slotの領域が決められたので、特に設定する必要がありません。もし自由設定できるProfinet IO Deviceの場合、ProfinetのIO Device側が構築したSlot構成と一致する必要があります。

Parameters

ParametersではByteの並び(Device Data Order)・通信周期(Refresh Period)・タイムアウト参数(Watchgod Factor、Refresh Period x Watchdog Factor=実際のWatchgod タイム)を設定できます。

今回は1ms周期で設定します。

Result

Beldenのデバイスも先程と同じ操作で追加や設定してください。

Save

Profinet IO Deviceの構築が完了したら、設定を保存してください。

MAIN

こちらは今回記事で使用するMainプログラムです。

bPNConectOKTwinCAT3 Bit     VAR
iCounter         Word [Signed] VAR

こちらのプログラムはRJ71PN92から受信したデータをそのままTwinCATにFeedbackするプログラムです。また、Beldenのモジュールの入力を監視し、入力0と入力1がTrueの場合は非常停止のランプを点灯させます。

glRJ71PN92_1.stMgmtOutputs.bReq_DataExchangeStartRequest:=
glRJ71PN92_1.stMgmtInputs.bSts_ConfigurationStatus;

bPNConectOKTwinCAT3:=glRJ71PN92_1.stMgmtInputs.bnSts_IODevicesConnStatus[99];

glRJ71PN92_1.SLV099SLOT001DataStructOut.SLOT001_1_WORD_OUTPUT:=
glRJ71PN92_1.SLV099SLOT001DataStructIn.SLOT001_1_WORD_INPUT;

glRJ71PN92_1.SLV099SLOT001DataStructOut.SLOT001_1_WORD_OUTPUT62:=
glRJ71PN92_1.SLV099SLOT001DataStructIn.SLOT001_1_WORD_INPUT62;

glRJ71PN92_1.SLV099SLOT002DataStructOut.SLOT002_1_FLOAT32_OUTPUT:=
glRJ71PN92_1.SLV099SLOT002DataStructIn.SLOT002_1_FLOAT32_INPUT;

glRJ71PN92_1.SLV099SLOT002DataStructOut.SLOT002_1_FLOAT32_OUTPUT8:=
glRJ71PN92_1.SLV099SLOT002DataStructIn.SLOT002_1_FLOAT32_INPUT8;

glRJ71PN92_1.SLV099SLOT003DataStructOut.SLOT003_1_DWORD_OUTPUT:=
glRJ71PN92_1.SLV099SLOT003DataStructIn.SLOT003_1_DWORD_INPUT;

glRJ71PN92_1.SLV099SLOT003DataStructOut.SLOT003_1_DWORD_OUTPUT98:=
glRJ71PN92_1.SLV099SLOT003DataStructIn.SLOT003_1_DWORD_INPUT98;

glRJ71PN92_1.SLV111SLOT001DataStructOut.SLOT001_8_BIT_OUTPUT_DATA[0]:=
(glRJ71PN92_1.SLV111SLOT001DataStructIn.SLOT001_16_BIT_INPUT_DATA[0]
AND glRJ71PN92_1.SLV111SLOT001DataStructIn.SLOT001_16_BIT_INPUT_DATA[1]
)
AND RCPU.stSM.b1sClock
;
;

Update Label

GX Configurator-PNからIO デバイスが登録された項目名、関連するグローバルラベルと構造体をプロジェクトに反映するため、GXWORKS3で手動更新する必要があります。

モジュールを右クリック>Update PROFINET Labelをクリックします。

Global Label FolderにはGlobal_PN92_1というSheetが追加されます。

glRJ71PN92_1というGlobal Labelがあり、先程Update Labelの操作でGlobal Labelが更新されました。

中にRJ71PN92で構築したProfinet デバイスの入出力もすべて定義されました。

Autorefresh Settings

次はRJ71PN92 Profinet IO Controllerと各Profinet Deviceを交換する入出力データのとき、CPUの中にどこのメモリ番地を設定する必要があります。

モジュールを右クリック>Autorefresh Settingsをクリックします。

Output device(IQ-R -> PN Controller)はCPU側RJ71PN92 Profinet Controllerに出力するとき、CPU内のメモリ番地を指定します。下図ではUser CPU Deviceをw0に設定しましたので、つまりw0からw189まではCPU‐>RJ71PN92の出力データ領域になります。

Input device(IQ-R <ー PN Controller)はRJ71PN92 Profinet ControllerがCPU側に出力するとき、CPU内のメモリ番地を指定します。下図ではUser CPU Deviceをw0に設定しましたので、つまりw3Aからw2A6まではCPU‐>RJ71PN92の出力データ領域になります。

それらの設定はすべてGXWORKS3が自動で行うので、特に手動で設定する必要がありません。

Show I/O Mapping

Show I/O Mapping機能を利用し、各入出力データがCPU内にどの番地になるかを確認できます。

OSのDefault Browserが自動的に起動され、いまProfinetのMappingを確認できます。

PROFINET DUT

こちらはGXWORKS3が自動的に生成する構造体の意味になります。

  • “Global_PN92 “で始まる名前のグローバルラベルはProfinetに関連する制御や状態確認用の構造体です。
  • “stSLV “で始まる名前の構造体は各Profinet Devices入出力構造に合わせて定義した構造体です。

それらの構造体はRJ71PN92_1に使用されています。

Compile

最後はプロジェクトをコンパイルしましょう。

Download

Write to PLCでプロジェクトをCPUにDownloadしましょう。

DownloadするときPROFINET ModuleのCheckboxをCheckするのは忘れずに。

Reset Power

プロジェクトDownload完了したらCPUの電源を入れ直しましょう。

Assign Device Name

最後は各Profinet DeviceにDevice Nameを振り分けるために、GX Configurator-PNをもう1回立ち上げ、Network Delection>Online Actionをクリックします。

RJ71PN92が自動的にネットワークにあるProfinet機器を検索します。

Done!

Profinet機器を選び>Name FieldでProfinet Device Nameを入力し、Apply NameでProfinet NameをDCP経由で割り付けます。

Pemanent NameのCheckboxを入れれば保存された設定を不揮発性メモリに保存することができます。つまり電源を失っても設定が保持されます。

Result

Devices>Start Console Diagnosticで各Profinet Devicesの状態を確認できます。

Done!Beckhoff TwinCAT3のProfinet DeviceとBeldenのProfinet IOにも緑のICONがついており、つまり現在通信状態が正常です。

Profinet Devicesをクリックし、Connection Information TabでConnection Stateを確認できます。

I/O Data TabでProfinet IO ControllerとIO Devices間のデータを確認できます。

TwinCAT3から送信してきたデータも確認できました。

TwinCAT3側も確認していきましょう。PnIoBoxState変数をクリックします。

現在のState=5で、つまり0x0001と0x004になり、現在DevicesはIOデータ交換状態であることを示しています。

Belden Profinet IO Blockの入力信号でも確認できました。

こちらはRJ71PN92が正常通信するときのLED状態です。

こちらはBelden Profinet IO Blockが正常に通信するときのLED状態です。

こちらの動画はRJ71PN92からBelden Profinet IOを制御しています。

Download

こちらのLinkから今回の記事のプロジェクトをDownloadしてください。

https://github.com/soup01Threes/GXWROKS/blob/main/Project_RJ71PN92.gx3

シェアする

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

フォローする