こちらは新しい記事シリーズで、三菱のRJ71SEIP91-T4を使用し様々な通信テストを行います。今回はRJ71SEIP91-T4とEuchnerのMGB-L2B-EIA-R-136508とCIP SAFETY Class通信方法を0から構築し、GXWORKS3内にもSafetyFBを使用し安全プログラムを作成していきます。
さ、FAを楽しもう。
Reference Link
Reference Video
OMRON.TurckのCIP Safety IOと繋がってみよう
前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
現在、私達の活動はほぼ無償で続けており、より多くのコンテンツを提供するためには、皆様の温かいご支援が大変重要です。もし可能であれば、以下のリンクから応援していただけると大変嬉しく思います。
高橋クリスのメンバーシップ
こちらはFullさん(full@桜 八重 (@fulhause) / X)と共にやっているラジオにメンバーシップを登録いただけます。
https://note.com/fulhause/membership/join
AMAZON ギフトリスト
こちらは自分のブログのコンテンツ制作や設備の充実に大いに役立てさせていただきます。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon
こちらは自分のブログのコンテンツ制作や設備の充実に対する小さな応援の気持ちのPatreonです。
https://www.patreon.com/user?u=84249391
皆様のサポートが、私たちの活動をより充実させる力となります。
どうぞよろしくお願いします。
メールアドレス(*=@)
X
MGB-L2B-EIA-R-136508
こちらは今回記事で使用するCIP Safetyドアロック、EuchnerのMGB-L2B-EIA-R-136508 (Order no. 136508)になります。
Layout
こちらはMGB-L2B-EIA-R-136508 (Order no. 136508)のLayoutです。
DIP スイッチ設定
こちらはMGB-L2B-EIA-R-136508 (Order no. 136508)のDIPスイッチ設定です。
Connections, variant M12
バスモジュールには、イーサネット/IP接続(X3とX4)と電源接続(X1とX2)が含まれます。 接続はM12プラグ(イーサネット/IP M12 Dコード、電源 M12 Aコード)を使用します。また、イーサネット接続用のイーサネット/IPスイッチが搭載されています。
Ethernet/IP data bytes
MGBシステムには以下のモジュールが含まれています。
- バスモジュール、MGB-B-…EI (Ethernet/IP接続に必要なすべてを含む)
- ロックモジュール、MGB-L。 (ハンドルモジュールと共にドアロック機構を形成します)
また、各MGBモジュールは、制御システムの入出力範囲において、一定数のデータ・バイトを占有し、以下のデータ型は区別されます:
- 安全データ
- 非安全データ
M+SF_GLOCK_R
こちらはガードロックを制御し、なおかつ位置を監視するFBです。 このFBは機械式ロックスイッチと共に使用でき、 オペレータは危険エリアへのアクセスを要求します。 ガードのロックは、危険領域が安全状態にあるときのみ解除できます。
VAR_INPUT
変数名 | タイプ | 説明 |
i_bActivate | Bit | 1=FBを作動する |
i_bS_GuardMon | Bit | ガードインターロックを監視する0:ガードオープン1: ガードクローズ |
i_bS_SafetyActive | Bit | 危険区域の状況0:マシンは「非安全」状態。1:マシンが安全状態 |
i_bS_GuardLock | Bit | メカニカルガードのロック状態0:ガードはロックされていません1: ガードがロックされています |
i_bUnlockRequest | Bit | ロック解除コマンド0:リクエストなし。1: リクエストあり。 |
i_bS_StartReset | Bit | 起動した(初回)安全 FB のリセット方法の選択。 |
i_bS_AutoReset | Bit | 入力信号をONにリセットするリセット方法の選択 |
i_bReset | Bit | リセット入力 |
VAR_OUTPUT
変数名 | タイプ | 説明 |
o_bReady | Bit | セーフティFBが作動しているかどうかの状態 |
o_bS_GuardLocked | Bit | 停止が必要な危険区域へのインターフェース0:安全状態ではない1:安全状態。 (ガードを閉じてロックしているので、機械は操作できます)。 |
o_bS_UnlockGuard | Bit | ガード解除コマンド0:クローズガード。1: ガードのロックを解除します。 |
o_bError | Bit | 1=エラーあり |
o_wDiagCode | Word [signed] | 診断コード |
Flow
こちらはM+SF_GLOCK_RのFlowになります。
シーケンサ
シーケンサ1,2
現在は危険区域が安全な状態にあることを確認し、該当する危険区域が安全な状態にあることをフィードバックします。
シーケンサ3,4
オペレータによるガード解除要求(i_bUnlockRequest input=ON)し、ガード解除信号を出力します(o_bS_UnlockGuardをONに設定)。
シーケンサ5
ガードロックを解除した信号が入力され(i_bS_GuardLock入力OFF)、ガードが開けられるようになります (o_bS_GuardLocked入力OFF)。
シーケンサ5.5
オペレーターがガードを開けます。
シーケンサ6
ガードが再び閉じているかどうかをチェックします。 (i_bS_GuardMonをON入力)
シーケンサ7,8
オペレータからの危険区域再開をリクエストします。(i_bUnlockRequest=ON)それによって、ガードをロックします。 (o_bS_UnlockGuard=ON)
シーケンサ9
ガードがロックされているかどうかをチェックします(i_bS_GuardLock=ON)。
シーケンサ10,11
危険区域は再び操業できます。 (o_bS_GuardLocked=ON)
注意するにはi_bS_AutoResetがOFFの場合、i_bReset入力によるリセットが必要です。
Implementation
これからCIP Safety接続や安全プログラムを構築します。

Euncher Side
最初にEuchner社のMGB-L2B-EIA-R-136508側を設定します。

Download EDS File
こちらのLinkでEuchnerのドアロックのEDS FileをDownloadしてください。
https://marketplace.odva.org/products/1872-mgb-with-ethernet-ip
Factory Reset
MGB-L2B-EIA-R-136508の右側のCoverを開けてください。
中にDIPスイッチがあり、すべてのDIPスイッチをOFFし、デバイスを再起動します。
DHCP Server Setting
ドアロックのDHCP Serverに設定するにはDIPスイッチ2のみONしてください。
Mels Side
次は三菱とRJ71SEIP91-T4側を設定します。

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をダブルクリックし、ツールを起動しましょう。
Install EDS File
CIP Configuration Tools>Device Library>Add EDSでEDS Fileをインストールします。
”Add EDS From Directory”を選択し、Browseで先程DownloadしたEDS Fileが格納されたFolderを選択します。
インストールするEDS Fileを選び>Next>で進みます。
Done!EDS Fileがインストールされました。
Start Detection
Network Detection>Start Network detectionでネットワーク内のEthernet/IPデバイスを検索します。
OKで進みます。
しばらく待ちます…
Done!Euchner社のMGB-L2B-EIA-R-136508を検索できました。
Euchner社のMGB-L2B-EIA-R-136508をNetwork1に追加して行きましょう。
Done!
Safety Settings
Safety Connectionを構築するために必要なパラメータを設定します。
Safety Parameters
先ほど追加したEuchner社のMGB-L2B-EIA-R-136508を選び>Safety Settingsを>Safety Parameters Tabを開きましょう。
Safety ResetをクリックしEuchner社のMGB-L2B-EIA-R-136508のTUNIDをリセットします。
Resetで進みます。
Yesで進みます。
TUNIDをリセットします。
Done!
Set TUNID
次は”Set TUNID”ボタンをクリックし、Euchner社のMGB-L2B-EIA-R-136508に新しいTUNID IDをセットします。
Done!
Save Configuration
最後は”Save Configuration to Module”をクリックし、設定を変更しRJ71SEIP91-T4を転送します。
Yesで設定を保存します。
しばらくお待ち下さい…
Done!
Add Shared GVL
次はStandard/Safety SharedのGlobal Label Listを追加します。
こちらはShared GVLの変数です。
Safety GVL
次はGXWORKSにEuchner社のMGB-L2B-EIA-R-136508と交換するSafety I/OデータをMappingします。Safety Communication Module>CPU Data Exchange>Label/Devicesをクリックし、適切なデバイスとMappingしましょう。
GxWorks3 Copy Labelsをクリックします。
新たなSafety GVLを作成、そのままCtrl+Vでラベルを貼り付けましょう。
NonSafety-Program
非安全プログラムを作成します。
下図のようにRJ71SEIP91-T4の通信開始信号や各接続の状態を取得します。
RJ71SEIP91_1.stEIPCls1_P1.uSet_CommunicationStartupRequest_D:=1; RJ71SEIP91_1.stEIPCls1_P2.uSet_CommunicationStartupRequest_D:=1; gsCommOK:=RJ71SEIP91_1.bSts_ModuleReady AND RJ71SEIP91_1.stCIP_Safety_P1.bnDataLinkStatus_In_D[3] and RJ71SEIP91_1.stCIP_Safety_P1.bnDataLinkStatus_Out_D[3]; gs1sClock:=SM412; ; |
Safety FB
Fb16Bit2Word
こちらのFBは16個のBoolデータを1つのWordに変換します。
sxIn00 Bit VAR_INPUT sxIn01 Bit VAR_INPUT sxIn02 Bit VAR_INPUT sxIn03 Bit VAR_INPUT sxIn04 Bit VAR_INPUT sxIn05 Bit VAR_INPUT sxIn06 Bit VAR_INPUT sxIn07 Bit VAR_INPUT sxIn08 Bit VAR_INPUT sxIn09 Bit VAR_INPUT sxIn10 Bit VAR_INPUT sxIn11 Bit VAR_INPUT sxIn12 Bit VAR_INPUT sxIn13 Bit VAR_INPUT sxIn14 Bit VAR_INPUT sxIn15 Bit VAR_INPUT swOut Word [Signed] VAR_OUTPUT |
下図のように、各BitをWordに出力するようにします。
MAIN
最後は安全プログラムを作成するため、Fixed Scan>Add New Dataをします。
Safety Ladderを作成します。
VAR
こちらはSafety プログラムで使用する変数になります。
_CommOK Bit VAR _sEuchnerRUN Bit VAR _sEuchnerConnFailed Bit VAR _sEuchnerDiagActive Bit VAR _AlwaysON Bit VAR_CONSTANT _F1ES Bit VAR _F1EEN Bit VAR _DiagWord Word [Signed] VAR Fb16Bit2Word_1 Fb16Bit2Word VAR _AlwaysOFF Bit VAR_CONSTANT _DiagCount Word [Signed] VAR _GreenSw Bit VAR _BlueSw Bit VAR _RedSw Bit VAR _DoorInPosition Bit VAR _FID Bit VAR _FIB Bit VAR _FIL Bit VAR _FISK Bit VAR _FIUK Bit VAR M_SF_ESTOP_R_01A_1 M+SF_ESTOP_R_01A VAR _GreenLED Bit VAR _BlueLED Bit VAR _RedLED Bit VAR M_SF_GLOCK_R_01A_1 M+SF_GLOCK_R_01A VAR _UblockCommand Bit VAR _ESTOPStatus1 Bit VAR _DoorStatus1 Bit VAR _ESTOPStatus2 Bit VAR _DoorStatus2 Bit VAR |
こちらは今回記事で作成した安全プログラムです。
Rung1
Rung1は三菱のRJ71SEIP91-T4とEuchnerのMGB-L2B-EIA-R-136508の通信を確認します。
Rung2
Rung2はEuchnerのMGB-L2B-EIA-R-136508ドアロックの状態を取得します。
Rung5
Rung5は先程作成した16Bit→Wordの変換FBを使用し、EuchnerのMGB-L2B-EIA-R-136508の診断情報回数を取得します。
Rung23
Rung23はEuchnerのMGB-L2B-EIA-R-136508の各ボタン状態・非常停止状態を取得します。
Rung27
Rung27はEuchnerのMGB-L2B-EIA-R-136508のドア状態を取得します。
Rung32
Rung32は三菱のSafety Function Blockを使用し非常停止を制御します。
Rung38
Rung38はEuchnerのMGB-L2B-EIA-R-136508のドアロックのロック解除コマンドを発行します。
- 緑ボタン押す:ロック解除
- 赤ボタン押す:ロックする
Rung46
Rung46では三菱のSafety Function Blockを利用しEuchnerのMGB-L2B-EIA-R-136508のドアロックを制御します。
Rung49
Rung49は先程のSafety Function Blockの出力により、ドアロックをロック解除します。
TRUE=ロック解除します。
Rung50
Rung50は非常停止のSafety Function Blockの診断ワードから現在の状態を確認します。
- ESTOP診断ワード=16#8005=リセット待ち
- ESTOP診断ワード=16#8000=非常停止OK、Enable信号出力中
Rung52
Rung50はドアロックのSafety Function Blockの診断ワードから現在の状態を確認します。
- ドアロック診断ワード=16#8003=リセット待ち
- ドアロック診断ワード=16#8000=非常停止OK、Enable信号出力中
Rung54
Rung54は安全機器の状態により、青いランプの点灯か点滅かを出力します。
- 点滅=リセット待ち
- 点灯=すべての安全機器の状態は正常であること
Rung57
Rung57はEuchnerのMGB-L2B-EIA-R-136508の青いボタンランプを出力します。
Rung58
Rung58はドアロックの状態によって赤ボタンランプが点滅・点灯します。
- 赤点滅:ドアロックは適切な位置にあり、リセット待ち
- 赤点灯:ドアロックはロックした状態
Rung60
Rung60はEuchnerのMGB-L2B-EIA-R-136508の赤ボタンランプを出力します。
Rung61
Rung61はドアロック解除のとき、緑ボタンランプを点滅させて出力します。
Rung64
Rung64はEuchnerのMGB-L2B-EIA-R-136508の緑ボタンランプを出力します。
Result
最初にCIP CM Protocolからエラーメッセージが来てて、Revisionが異なるのせいで接続不可になっています。
そのエラーを解除する方法はEDS Fileを置き換えるか、もしくはSafety Connectionsに以下の設定を行います。
- Check Type:Compatible Module
- Minor Version:2(今回EuchnerのMGB-L2B-EIA-R-136508のMinor Version)
Done!CIP I/Oメッセージが交換できるようになりました。
三菱 GXWorks3のCIP Safety Configurationツールにも通信開通してたことをわかります。
こちらの動画で実際の動作を確認できます。
Mitsibushi.CIP Safety Module RJ71SEIP91-T4 With Euchner Door Lock
Download
こちらのLinkで今回記事で作成したプロジェクトをDownloadしてください。