こちらは新しい記事シリーズで、三菱のRJ71SEIP91-T4を使用し様々な通信テストを行います。最初にRJ71SEIP91-T4の紹介とTwinCAT3 4026のEthenet/IP SlaveとClass 1 通信構築方法を0から説明します。
さ、FAを楽しもう。
Reference Link
Reference Video
RJ71SEIP91-T4?
三菱電機はMELSEC iQ-RシリーズCIPセーフティモジュール(Common Industrial Protocol)を開発し、CIP Safetyを介した安全通信を実装しようとするアプリケーションに最適の解決案RJ71SEIP91-T4です。
このモジュールは、サードパーティまたは三菱電機製デバイス(Ethernet/IPもしくはCIP Safety対応)多様なデバイスや機器を扱って相互接続できます。
注意するのはRJ71SEIP91-T4デュアルスロットを占有するiQ-R CIP Safetyモジュールを搭載したiQ-R Safety PLCを運用していることです。 このモジュールはEthernet/IPとCIP Safetyプロトコルの両方に対応しております。
✓KEY BENEFITS
- デュアルプロトコル対応: モジュールはデュアルプロトコル、特にEthernet/IPとCIP Safetyをサポートし、さまざまな産業環境に汎用性と統合機能を提供します。
- 安全信号の送信: 安全信号の安全な伝送に優れており、産業オートメーションシステム内の重要な安全データの信頼性の高い通信を保証します。
- 効率的な安全管理: RJ71SEIP91-T4は、安全機能の実装を容易にすることで安全管理を強化し、制御システム全体の堅牢で信頼性の高い安全フレームワークに提供します。
- 国際安全規格EN ISO 13849-1 Category 4 PL eおよびIEC 61508 SIL 3に準拠。
- CIP セーフティ通信および EtherNet/IP 一般通信に対応。
- 同一PLCラック上でCC-Link IE TSNコンフィグレーションをサポート。
- ラックあたり最大 2 つの CIP Safety モジュール
- PLCプログラミングソフトウェアGX Works3内で一般/安全制御プログラムを一元管理
- TUV Rheinland認証のファンクションブロックは、GX Works3プログラミング環境で使用可能
- 様々なサードパーティ製ロボット、PLC Peer to Peer 通信、ゲートスイッチ、エリアスキャナー、VFD、リモートI/Oでテスト済み
- CIP SafetyのトラフィックをiQ-R CC-Link IE TSN Master経由で対象機器にトンネリング可能
✓Example Layout
こちらはRJ71SEIP91-T4の使用例です。
✓Specification
こちらはRJ71SEIP91-T4の仕様になります。
✓Applicable CPU Modules
CIP SafetyモジュールRJ71SEIP91-T4を使用する場合はRnSF CPUを使用する必要があり、
CPU モジュールを使用する場合の CIP Safety モジュールの使用可能性を示します。 CPU モジュールを以下の記号で表します。
注意するのは使用できないCPUモジュールにCIP Safetyモジュールを取り付けると、エンジニアリングツールの書き込み時にエラーが発生します。
また、CPUモジュールのファームウェア・バージョンは28以降必要があります。
✓The number of mountable modules
CIPセーフティモジュールは2スロットモジュールですが、1スロットモジュールと同様に1/2番目のモジュールとしてカウントされます。
また、注意するのはパラメータを設定せずに CIP Safety モジュールを取付けると、モ ジュールの電源投入時に CIP Safety モジュールでエラー(エラーコード:3110H)が発生します。
✓Available Software Packages
CIP Safety モジュールの設定を構成するには、エンジニアリングツールと CIP Safety Configuration Tool が必要です。CIP Safety Configuration Toolは三菱電機のHPからDownloadできます。
- Engineering Tool (GX Works3) バージョン1.090U以降
- CIP Safety Configuration Tool Version バージョン1.000A以降
EtherNet/IP CIP Safety on EtherNet/IP Network…
EtherNet/IP ネットワークと EtherNet/IP ネットワーク上の CIP Safety は、CIP Safety モジュール と EtherNet/IP デバイス で構成されます。
Scanner and adapter
EtherNet/IPネットワークとCIP Safety on EtherNet/IPネットワークでは、ステーションタイプはScannerとAdapterに分かれています。
Scanner
EtherNet/IP のScannerは制御情報を持ち、ネットワーク全体の制御を行います。オリジネータまたはターゲットの接続を持つデバイスをスキャナとして操作することができます。
Adapter
AdapterはScanner以外のステーションになります。ターゲットに接続可能なデバイスをアダプターとして操作することができます。
Topology
Ethernet/IPには様々なTopologyに対応しています。
Line topology
イーサネット・ケーブルを使用して、ライン・トポロジーでモジュールを接続します。
Star topology
スイッチングハブとイーサネットケーブルを使用して、モジュールをスター型トポロジーで接続できます。
Ring topology
イーサネットケーブルを使用して、リングトポロジーでモジュールを接続します。
Class1 communications
Class1 communicationsでは、CIP SafetyモジュールとEtherNet/IPデバイス間のコネクションを確立することで、データ通信が固定スキャンで実行されます。
そのClass1 Communicationsを確立するには2つの方法があります。
- instance IDs
- tag names
オリジネーターまたはターゲットは、コネクションごとに送受信範囲をバッファメモリに割り当て、自動的にデータ通信を行います。 このデータはプログラムからアクセスするため、通常はオートリフレッシュによりCPUモジュールのデバイスメモリに展開されます。
Instance communications
インスタンス通信は、主に固定スキャンでEtherNet/IPデバイスと通信を行う場合に使用します。データ通信は、インスタンスIDを使用してコネクションを確立することで、固定スキャンでCIP SafetyモジュールとEtherNet/IPデバイスの間で実行されます。
CIP Safetyモジュールは、オリジネータまたはターゲットとして機能でき、以下の接続タイプが利用可能です。
- Exclusive Owner
- Input Only
- Listen Only
今回記事で使用したのはExclusive Owner Connectionであり、 Exclusive Ownerは、単一のコネクションを使用してデータを送受信する場合に使用されます。
Connection Open/Response
CIP Safety モジュール ( オリジネータ ) がコネクションオープンリクエストを送信すると、EtherNet/IP デバイス ( ターゲット ) がこれに応答してコネクションを確立します。
Cyclic Transmission Target→Originator
EtherNet/IP デバイス ( ターゲット ) の送信データはサイクリック伝送で送信され、データは CIP Safety モジュール ( オリジネータ ) の ‘Class1 Input Area’ (UnG24576 ~ UnG57343, UnG1073152 ~ UnG1105919) に保存されます。
Cyclic Transmission Originator→Target
CIP Safety モジュール(発信側)の「Class1 Output Area」(UnG61440 ~ UnG94207, UnG1110016to UnG1142783)のデータはサイクリック伝送で送信され、データは EtherNet/IP デバイス(ターゲット)の受信データバッファに保存されます。
Implementation
こちらは今回記事で使用する構成です。三菱電機のRJ71SEIP91-T4がScannerを立ち上げ、TwinCAT 4026側でTF6280を使用しEthernet/IP Adapterを構築しInstance通信します。
TwinCAT3 Side
最初にTwinCAT3側を構築します。
Add RT Ethernet Driver
Real Time Ethernet Driverを追加するため、I/O>Devices>Add New Itemします。
Ethernet/IP Adapterとして使用するEthernet Adapterを設定します。
Done!
Sync Task
Sync TaskのTabを開き、Ethernet/IP Adapterの実行タスクを設定します。
Create new I/O taskで新しいIOタスクを追加します。
タスク名を設定します。
Done!最後はCycle ticksで該当するTaskの周期をアプリケーションに合わせて設定しましょう。
Add Ethernet/IP Adapter
次はEtherNet/IP>EtherNet/IP Adapter(Slave)をクリックします。
Add Slave
Ethernet/IP Adapterを追加しましたが、次はそのAdapterの下にEthernet/Ip Slaveを追加するため、右クリック>Add New Itemします。
TC Ethernet/IP Slaveを選び>OKで進みます。
Done!
Configure IP Address
先ほど追加したSlaveをクリックし、Settings Tabを開きます。IP AddressとNetwork Maskをアプリケーションに合わせて設定しましょう。
Done!今回の記事では192.168.250.111/24を設定しました。
Append IO Assembly
今度はAssembly Instanceを追加するため、Ethernet/Ip Slaveを右クリックし>Append IO Assemblyをクリックします。
Done!Assembly Instanceが追加されました。
Default上でAssembly Instanceに入出力データが設定されていません。
Add Input
Assembly Instanceに入力データを追加するため、Inputs>右クリック>Add New Itemします。
こちらはTwinCATの変数追加画面になります。
Create Array Typeをクリックし配列変数を追加します。
こちらは配列変数の設定画面になります。
0をCheck入れて、1次元配列を定義し、その配列の長さを設定します。
最後は配列変数を選び>Okで変数を追加します。
Done!
Add Output
Assembly Instanceに出力データを追加するため、Outputs>右クリック>Add New Itemします。
先ほど追加した配列変数を選び>Okで変数を追加します。
Done!
Add PLC
次はPLCプロジェクトを追加するため、PLC>Add New Itemしいます。
Standard PLC Projectを選び>Addで進みます。
Done!PLCプロジェクトが追加されました。
Add GVL
次はGlobal Variable Listを追加するため、GVLs>右クリック>Add>Global Variable Listをクリックします。
Global Variable List名を入力しOkで進みます。
下記のようにProcess I/Oデータを定義します。
{attribute ‘qualified_only’} VAR_GLOBAL Box1Ass1_IN AT %I*:ARRAY[0..29]OF BYTE; Box1Ass1_OUT AT %Q*:ARRAY[0..29]OF BYTE; END_VAR |
MAIN
次は下記のように通信テスト用のプログラムを追加します。
PROGRAM MAIN VAR inputData,outputData:ARRAY[0..29]OF BYTE; inputData1:INT; outputData1,outputData2:INT; TestFalse:BOOL; END_VAR inputData:=GVL.Box1Ass1_IN; GVL.Box1Ass1_OUT:=outputData; MEMMOVE(destAddr:=ADR(inputData1),srcAddr:=ADR(inputData),n:=SIZEOF(INT)); IF TestFalse THEN outputData1:=16#5152; outputData2:=16#1712; ELSE outputData1:=16#1919; outputData2:=16#2123; END_IF MEMMOVE(destAddr:=ADR(GVL.Box1Ass1_OUT[0]),srcAddr:=ADR(outputData1),n:=SIZEOF(INT)); MEMMOVE(destAddr:=ADR(GVL.Box1Ass1_OUT[28]),srcAddr:=ADR(outputData2),n:=SIZEOF(INT)); |
Build Solution
Build>Build Solutionでプロジェクトをコンパイルします。
Mapping
今度はEthernet/Ip SlaveのProcess I/OとPLCプロジェクトの変数とMappingするため、Inputs>右クリック>Change Linkします。
先程GVLで追加した入力変数を選びます。
Process出力変数も先と同じ操作でPLCプロジェクトの変数とMappingしましょう。
先程GVLで追加した出力変数を選びます。
Export EDS File
最後はEthernet/Ip SlaveのEDS FileをExportするため、Ethernet/Ip Slave>右クリック>Export EDS Fileをクリックします。
EDS Fileの保存先を設定します。
Done!EDS Fileが追加されました。
Activate Configuration
Hardware ConfigurationをTwinCAT RuntimeにDownloadするため、TwinCAT>Activate Configurationをクリックします。
OKで進みます。
ライセンスが足りない場合はYesをクリックしTrialライセンスの入力画面に移行します。
Securityコードと同じの文字列を入力し、OKですすみます
OkでTwinCAT RuntimeをRun Modeに切り替えます。
Login
PLCプロジェクトをTwinCAT RuntimeにDownloadするため、PLC>Loginします。
Yesで進みます。
Start
最後はPLC RuntimeをRun Modeに切り替えます。
IQ-R Side
次は三菱電機のIQ-R側を構築します。
Register Profile
三菱電機のHPからRJ71SEIP91-T4のProfileをDownloadしてください。
https://emea.mitsubishielectric.com/fa/products/cnt/plc/allcpu/rj71seip91-t4.html#downloads
次はProfileをGXWORKS3に登録するため、Tool>Profile Managment>Registerをクリックします。
先程DownloadしたXXXX.iparを選びます。
Done!RJ71SEIP91-T4のProfile登録が成功しました。
Install Module Label
次はRJ71SEIP91-T4のModule LabelをGXWORKS3にインストールするために、先ほどDownloadしたRJ71SEIP91-T4.msluをC:\Program Files (x86)\MELSOFT\MSF\Common\Library\UNITFBのDirectoryに複製してください。
次はC:\Program Files (x86)\MELSOFT\GPPW3\GXW3PluginPreloader.exeを管理者権限で実行してください。
Install Configuration Tools
RJ71SEIP91-T4モジュールを構築するには専用のConfiguration Toolsを使用する必要があり、下記のLinkからRJ71SEIP91-T4 CIP Safety Configuration ToolをDownloadしてください。
https://emea.mitsubishielectric.com/fa/products/cnt/plc/allcpu/rj71seip91-t4.html#downloads
先ほどDownloadしたZIP Fileを解凍し、Setup,exeをクリックします。
Next>で進みます。
CIP Safety Configuration Toolのインストール先を設定し、Next>で進みます。
InstallをクリックしCIP Safety Configuration Toolをセットアップ開始します。
少々お待ちください…
CIP Safety Configuration ToolのPacketsをFirewallに通過できるするため、Yesで進みます。
Done!
Create New Project
GXWORKS3を起動し、Project>Newで新規プロジェクトを追加します。
今回記事で使用したのはR32SF Safety PLCです。
Safety PLCを使用するにはプロジェクトにUser nameとPasswordの設定が必要です。
User nameとPasswordを設定し、Okで進みます。
プロジェクトが作成されたら、Setting Changeをクリックします。
Use Module LabelのOptionをつけます。
Done!プロジェクトが作成されました。
Module Configuration
Hardware Configurationを設定するために、Module Configurationをクリックします。
こちらはModule Configurationの画面になります。
Add R35B
IQ-R Series>Main Base>R35BをDropし、今回記事で使用するBase Unitを追加します。
Done!
Add R61P
次はPower Suppy>R61Pで今回記事で使用する電源モジュールを追加します。
Done!
Add PLC into PLC Rack
R32SF Safety PLCをCPU SlotにDropします。
Done!それでCPUをRackにインストールしました。
Add R6SFM
CPU Extension>R6SFMでCPUの安全拡張ユニットを追加します。
Done!
Add RJ71SEIP91-T4
最後はNetwork>RJ71SEIP91-T4をSlot1にDropします。
Done!
Save the Configuration
次はModule Configurationを保存します。
OKで進みます。
M+Global
先程Module Label使用の設定を有効にしたので、Label>Global Label>M+GlobalというGlobal Variable Listが追加されました。
M+Globalには今回記事で使用したCPUやモジュール(もちろんRJ71SEIP91-T4)のラベルが定義されました。
Check your Configuration
Convert>Rebuild Allで一回Hardware Configuration問題ないかを確認しましょう。
Reset User
R32SF Safety PLC本体のPasswordを忘れた場合に、PLCデータを初期化し、すべてのデータをリセットしましょう。Online>User Authentication>Initialize all PLC Dataをクリックします。
Write User Data
次は今回プロジェクトのUser DataをCPUに書き込むため、Online>User Authentication>Write User information to PLCでUser dataをR32SF Safety PLCに書き込見ます。
Yesで進みます。
さらにYesで進みます。
Done!
Write to PLC
Hardware Configurationを一旦CPUに書き込むため、Online>Write to PLCを実行してください。
Check RJ71SEIP91-T4 IP Address
現在RJ71SEIP91-T4のIPアドレスを確認するため、Diagnosis>System Monitorをクリックします。
RJ71SEIP91-T4 モジュールをダブルクリックします。
RJ71SEIP91-T4の診断情報を確認でき、Module Information List Tabを開きます。
RJ71SEIP91-T4の詳細情熱が表示され、P1=192.168.250.11を確認できました。
Configure Ethernet/IP Network
次はEthernet/IPネットワークを構築するため、RJ71SEIP91-T4>CIP Safety Configuration Toolをダブルクリックし、ツールを起動しましょう。
こちらはCIP Safety Configuration Toolの初期画面です。
Setup the Local Adapter
Safety Communication Moduleを選び>General>Local Network interface IP address to useのところからRJ71SEIP91-T4と通信するEthernet Portを設定します。
Drop-Listから適切なEthernet インタフェース(自分のPC)を設定しましょう。
Done!
Configure Network1
今回記事で使用したのはRJ71SEIP91-T4のPort1になります。RJ71SEIP91-T4本体にも書いてありますが、P1書いてるPort AとPort BはNetwork1で、P2が書いてるPortAとPort BはNetwork2になります。
Network1をクリックします。
Detect the Network1
General>Scanner IP Address Settings>DetectでRJ71SEIP91-T4を検索します。
Done!現在PCとRJ71SEIP91-T4接続されているPortのIPアドレスはIdnetifierの欄に表示されています(192.168.250.11)。
次はOKで設定を適用します。
Done!RJ71SEIP91-T4 Port1のIPアドレス設定が反映されました。
Ping Network1
Ping>Send PingでRJ71SEIP91-T4のNetwork1と通信確認を行います。
Done!Pingコマンドが通過しました。
Add EDS File
次はCIP Safety Configuration ToolにEDS Fileを追加するため、Device Library>Add EDSをクリックします。
EDS Fileの追加画面が表示され、今回は単一のEDS Fileを追加したいので、Add File>Browseをクリックします。
先ほどTwinCAT3でExportしたEDS Fileを選択し、Openで進みます。
Next>でEDS FileをImportしましょう。
Next>で進みます。
Done!
Device Libraryに先ほど追加したTwinCAT3 Ethernet/IP Slaveデバイスが追加されました。
Detect Network
Network DetectionのTabをクリックしEthernet/IP デバイスを検索します。
緑の矢印ボタンをクリックしネットワークを検索します。
OKで進みます。
Done!先ほど私たちが追加したTwinCAT3 Ethernet/IP Slaveを見つけました。
Add Adapter to Network
TwinCAT3 Ethernet/IP SlaveをNetwork1に追加します。
Done!
Ping
Send Ping機能を使用しTwinCAT3 Ethernet/IP Slaveと通信確認します。
Done!
Standard Settings
Standard SettingsのTabを開き、アプリケーションに合わせてConnection設定を行います。今回の記事ではExclusive Owner接続を使用します。
Information
Information Tabを開き、RefleshボタンをクリックしTwinCAT3 Ethernet/IP SlaveからVendor IDなどの情報を取得します
Transfer
CIP Safety Configuration ToolからHardware ConfigurationをRJ71SEIP91-T4に転送します。Safety Communication Module>General>Save configuration to ModuleをクリックしConfigurationをRJ71SEIP91-T4に転送しましょう。
少々お待ち下さい…
Done!
Start Diagonstic
Configuration>Start DiagnosisでRJ71SEIP91-T4の診断情報を確認します。
OKで進みます。
Done!現在Box 1(TwinCAT3 Ethernet/IP Slave)と接続しCyclic IOデータを交換していますので、Box1の隣に緑の丸がついています。
DiagnosticsのTabがCIP Safety Configuration Toolに増え、Connection StatusからTwinCAT3 Ethernet/IP Slaveと正常接続していることを確認できました。
Network1のDiagnosticsで現在EIPやScannerの状態も確認できました。
Connection StatusにおけるTwinCAT3 Ethernet/IP SlaveのIdentifier=2なので、TwinCAT3 Ethernet/IP Slaveは2番目のConnectionであることを確認できました。
Global Variables‐ Input Data Size
Class 1通信中にCIP SafetyモジュールがEtherNet/IPデバイスから受信したデータのサイズがその変数に格納され、ワード単位で、コネクション番号 1 から昇順に保存されます。
先ほどTwinCAT3 Ethernet/IP SlaveのConnection=2だと確認できましたので、そのConnectionの入力データサイズは17ワードになります。
Global Variables‐ Output Data Size
Class 1通信中にCIP SafetyモジュールがEtherNet/IPデバイスが送信したデータのサイズがその変数に格納され、ワード単位で、コネクション番号 1 から昇順に保存されます。
先ほどTwinCAT3 Ethernet/IP SlaveのConnection=2だと確認できましたので、そのConnectionの出力データサイズは17ワードになります。
Global Variables ‐stEIPCls1_P1.uSet_CommunicationStartupRequest_D
こちらのレジスタに1を書き込めばRJ71SEIP91-T4のNetwork1が通信を開始します。
Global Variables ‐RJ71SEIP91_1. bSts_ModuleReady
こちらのレジスタがTrueであれば、RJ71SEIP91-T4モジュールが準備完了であることを示します。
Global Variables‐ Input Data Offset
Class1 通信中に CIP Safety モジュールから EtherNet/IP デバイスから受信するデータ格納場所 (‘Class1 Input Area’ (Un\G24576, Un\G1073152)) のオフセットアドレスは、コネクション番号 1 から昇順に格納されます。注意するのは各接続のオフセット・アドレスは、2ワード単位で開始するようにアラインされている。
Global Variables‐ Output Data Offset
Class1 通信中に CIP Safety モジュールから EtherNet/IP デバイスに送信するデータ格納場所 (‘Class1 Output Area’ (UnG61440, UnG1110016)) のオフセットアドレスは、コネクション番号 1 から昇順に格納されます。注意するのは各接続のオフセット・アドレスは、2ワード単位で開始するようにアラインされている。
Program
次はプログラムを作成します。下図のようにプログラムをLocal Labelと定義します。
こちらは通信確認用のプログラムになります。
IF RJ71SEIP91_1.stEIPCls1_P1.uSet_CommunicationStartupRequest_D = 0 AND RJ71SEIP91_1.bSts_ModuleReady THEN RJ71SEIP91_1.stEIPCls1_P1.uSet_CommunicationStartupRequest_D := 1;END_IF; //Connection2 //Output iConn2Index:=RJ71SEIP91_1.stEIPCls1_P1.unVal_Class1OutputDataOffset_Connection_D[2]+2; RJ71SEIP91_1.stEIPCls1_P1.unArea_Class1OutputDataArea_D[iConn2Index]:=3421; IConnd2EndIndex:=iConn2Index+RJ71SEIP91_1.stEIPCls1_P1.unVal_Class1OutputDataSize_Connection_D[2]-1; IConnd2EndIndex:=IConnd2EndIndex-2; RJ71SEIP91_1.stEIPCls1_P1.unArea_Class1OutputDataArea_D[IConnd2EndIndex]:=16#ABCD; //Input iConn2Index:=RJ71SEIP91_1.stEIPCls1_P1.unVal_Class1InputDataOffset_Connection_D[2]+2; IConnd2EndIndex:=iConn2Index+RJ71SEIP91_1.stEIPCls1_P1.unVal_Class1InputDataSize_Connection_D[2]-1; IConnd2EndIndex:=IConnd2EndIndex-2; DataFromTwinCAT_0:=RJ71SEIP91_1.stEIPCls1_P1.unArea_Class1InputDataArea_D[iConn2Index]; DataFtomTwinCAT_14:=RJ71SEIP91_1.stEIPCls1_P1.unArea_Class1InputDataArea_D[IConnd2EndIndex]; |
Result
TwinCAT3側から通信を確認します。Box 1>Inputs>Stateを開きます。
State=0なのでエラーがないことを確認しました。
次はAssembly 1>Inpuits>ConStateを開きます。
State=0なのでエラーがないことを確認しました。
TwinCAT3がRJ71SEIP91-T4に送信したデータを確認できました。
次はRJ71SEIP91-T4からTwinCAT3 Ethernet/IP Slaveにデータを送信してみます。
Done!TwinCAT3がRJ71SEIP91-T4に送信したデータを受信しました。