この記事ではRockwellの少し古いCPU GuardLogix L43Sと1768 ENBT-A Ethernet/IP Scanner モジュールを使用し、CPU GuardLogix L43SをSafety Controllerを立ち上げるまで説明します。Adpater側はMolex CIP Safety Hash IO TCDEC-8D4B-DYU-GWです。
よろしくお願いします。
Implementation
まずは0から構築をStep by Stepで説明します。
Molex Side
Adapter側、今回使用するMolex CIP Safety Hash IO Moduleから設定していきます。
Wiring
こちらはESTOPの配線です。
Download SNCT Tools
下記のLinkからMolexのSNCTツールをDownloadします。このツールからSafety ResetやMolex CIP Safety Hash IO Moduleを設定できます。
https://www.molex.com/molex/mysst/doCenter.action
Safety Network Configuration Tools>Downloadします。
Zip fileがDownloadされました。
Installation
Fileを解凍しsetup.exeからツールをインストールします。
Next>.
Next>.
Install.
インストール完了した。
SNCTDevice はOSにインストールされました。
Download EDS Files
次は同じWebからEDS FileもDownloadしてください。
Configure the Module
最初にMolex CIP safety Hash IOをリセットします。
Molex SNCT Software が起動しました。
Create New Project
File>New で新規プロジェクトを作成します。
今回の記事ではTCDEC-8B4B-DYU-Gx を使用しますので、デバイスを選び>OKします。
新規プロジェクトが作成されました。
Go Online
モジュールと接続してるNetwork Interfaceを選び>デバイスのIPを設定>最後はSafety Network Numberを設定すればOKです。(Defaultにしたまま、OmronのツールからSafety Network Numberを設定してもOKです。Module Discovery でデバイスを検索します。
CIP Safety Hash IOを選んで>Selectします。
“Establish communication with the module”をクリックしモジュールと接続します。
TUNIDが実機とProject異なるのでいいですか?の警告があります。
Yesで進みます。
Safety Reset
接続に成功したらSafety Operation Tabを開き>Safety Resetボタンでモジュールをリセットします。
Safety Resetするとすべての情報がリセットされるが大丈夫ですかって。Yesで進みます。
Yesで進みます。
Safety Reset完了です!
Rockwell Side
次はRockwell Sideを構築します。
Install EDS
Tools>EDS Hardware Installation Toolを起動します。
Next>します。
Register an EDS Files(s)を選び、Next>します。
Register a directory of EDS Fileを選び>Browseします。
EDSにあるFolderを選び、OKします。
Next>します。
Next>します。
Next>します。
Done!
Insert Module
次はMolex CIP safety Hash IOをEthernet/IP NetworkにInsertします。1768-ENBT/A右クリック>New Moduleします。
CatalogからMolexを検索し、実機の型式に合わせて選択し、Createボタンをクリックします。
IP Addressを設定・モジュール名を入手>Okします。
TCDEC-8B4B-DYU-Gが追加されました。
Copy Safety Network Number
1768-L43Sをクリック>General TabからSafety Network NumberをCopyします。まず…ボタンをクリックします。
Safety Network Number Popupが表示され、CopyでSafety Network Numberを複製します。
Set TUNNID
またMolexのSNCT Toolに戻り、General TabからSafety Network NumberのところPasteボタンからSafety Network Numberを貼り付けます。
Set TUNID in DeviceでMolex CIP Safety Hash IOのTUNIDを設定します。
これでOKです。
Time
RockwellのCPU 時間を設定します。Date/TimeのTab開き、”Set Date,Time and Zone From Workstation”ボタンでEnginnering Stationの時間とCPUを同期します。
Safety Signature
Communication>Go Onlineをします。
Safety Signatureを生成します。Safety Tab>Generateします。
しばらく待ちます…
これでOKです!
Program
最後は簡単なプログラムを作成します。
Add Data Type
Data Types>User-Defined>右クリック>New Data Typeします。
こちらはMolex CIP Safety Hash IOのInput Only Assembly 768データ構造です。
Input OnlyのAssemblyに合わせてData Typesを作成しましょう。
MAIN
Controller TagsにはすでにMolex CIP Safety Hash IOのTagsが作成されていますが、それでは少しわかりにくいですね。
Program Tags
MainProgramのProgram Tagsで以下の変数を定義します。
Program
こちらは簡単なプログラムになります。
//Safety Input Module1.SafetyInput[0]:=CIPSafetyModule1:I.Data[0].0; Module1.SafetyInput[1]:=CIPSafetyModule1:I.Data[0].1; Module1.SafetyInput[2]:=CIPSafetyModule1:I.Data[0].2; Module1.SafetyInput[3]:=CIPSafetyModule1:I.Data[0].3; Module1.SafetyInput[4]:=CIPSafetyModule1:I.Data[0].4; Module1.SafetyInput[5]:=CIPSafetyModule1:I.Data[0].5; Module1.SafetyInput[6]:=CIPSafetyModule1:I.Data[0].6; Module1.SafetyInput[7]:=CIPSafetyModule1:I.Data[0].7; Module1.SafetyInput[8]:=CIPSafetyModule1:I.Data[1].0; Module1.SafetyInput[9]:=CIPSafetyModule1:I.Data[1].1; Module1.SafetyInput[10]:=CIPSafetyModule1:I.Data[1].2; Module1.SafetyInput[11]:=CIPSafetyModule1:I.Data[1].3; //Safety Input Status Module1.SafetyInputStatus[0]:=CIPSafetyModule1:I.Data[2].0; Module1.SafetyInputStatus[1]:=CIPSafetyModule1:I.Data[2].1; Module1.SafetyInputStatus[2]:=CIPSafetyModule1:I.Data[2].2; Module1.SafetyInputStatus[3]:=CIPSafetyModule1:I.Data[2].3; Module1.SafetyInputStatus[4]:=CIPSafetyModule1:I.Data[2].4; Module1.SafetyInputStatus[5]:=CIPSafetyModule1:I.Data[2].5; Module1.SafetyInputStatus[6]:=CIPSafetyModule1:I.Data[2].6; Module1.SafetyInputStatus[7]:=CIPSafetyModule1:I.Data[2].7; Module1.SafetyInputStatus[8]:=CIPSafetyModule1:I.Data[3].0; Module1.SafetyInputStatus[9]:=CIPSafetyModule1:I.Data[3].1; Module1.SafetyInputStatus[10]:=CIPSafetyModule1:I.Data[3].2; Module1.SafetyInputStatus[11]:=CIPSafetyModule1:I.Data[3].3; //Safety Test Output Value Module1.TestOutValue[0]:=CIPSafetyModule1:I.Data[4].0; Module1.TestOutValue[1]:=CIPSafetyModule1:I.Data[4].1; Module1.TestOutValue[2]:=CIPSafetyModule1:I.Data[4].2; Module1.TestOutValue[3]:=CIPSafetyModule1:I.Data[4].3; Module1.TestOutValue[4]:=CIPSafetyModule1:I.Data[4].4; Module1.TestOutValue[5]:=CIPSafetyModule1:I.Data[4].5; Module1.TestOutValue[6]:=CIPSafetyModule1:I.Data[4].6; Module1.TestOutValue[7]:=CIPSafetyModule1:I.Data[4].7; Module1.TestOutValue[8]:=CIPSafetyModule1:I.Data[5].0; Module1.TestOutValue[9]:=CIPSafetyModule1:I.Data[5].1; Module1.TestOutValue[10]:=CIPSafetyModule1:I.Data[5].2; Module1.TestOutValue[11]:=CIPSafetyModule1:I.Data[5].3; //Safety Test Output Status Module1.TestOutputStatus[0]:=CIPSafetyModule1:I.Data[6].0; Module1.TestOutputStatus[1]:=CIPSafetyModule1:I.Data[6].1; Module1.TestOutputStatus[2]:=CIPSafetyModule1:I.Data[6].2; Module1.TestOutputStatus[3]:=CIPSafetyModule1:I.Data[6].3; Module1.TestOutputStatus[4]:=CIPSafetyModule1:I.Data[6].4; Module1.TestOutputStatus[5]:=CIPSafetyModule1:I.Data[6].5; Module1.TestOutputStatus[6]:=CIPSafetyModule1:I.Data[6].6; Module1.TestOutputStatus[7]:=CIPSafetyModule1:I.Data[6].7; Module1.TestOutputStatus[8]:=CIPSafetyModule1:I.Data[7].0; Module1.TestOutputStatus[9]:=CIPSafetyModule1:I.Data[7].1; Module1.TestOutputStatus[10]:=CIPSafetyModule1:I.Data[7].2; Module1.TestOutputStatus[11]:=CIPSafetyModule1:I.Data[7].3; //Safety Output Monitioring Module1.SafetyOutputMonitor[0]:=CIPSafetyModule1:I.Data[8].0; Module1.SafetyOutputMonitor[1]:=CIPSafetyModule1:I.Data[8].1; Module1.SafetyOutputMonitor[2]:=CIPSafetyModule1:I.Data[8].2; Module1.SafetyOutputMonitor[3]:=CIPSafetyModule1:I.Data[8].3; //Safety Output Status Module1.SafetyOutputStatus[0]:=CIPSafetyModule1:I.Data[10].0; Module1.SafetyOutputStatus[1]:=CIPSafetyModule1:I.Data[10].1; Module1.SafetyOutputStatus[2]:=CIPSafetyModule1:I.Data[10].2; Module1.SafetyOutputStatus[3]:=CIPSafetyModule1:I.Data[10].3; //Other Status Module1.OutputPowerError:=not CIPSafetyModule1:I.Data[12].0; Module1.InputPowerError:=not CIPSafetyModule1:I.Data[12].1; Module1.GlobalSafetyOutputStatus:=not CIPSafetyModule1:I.Data[12].2; Module1.GlobalSafetyInputStatus:=not CIPSafetyModule1:I.Data[12].3; Module1.MutingLampStatusTO3:=not CIPSafetyModule1:I.Data[12].4; Module1.MutingLampStatusTO7:=not CIPSafetyModule1:I.Data[12].5; Module1.OutputCrruentError:=not CIPSafetyModule1:I.Data[12].6; Module1.InputCurrentError:=not CIPSafetyModule1:I.Data[12].7; ESTOP:=Module1.SafetyInput[0] and Module1.SafetyInput[1]; |
Rockwell CPU Download
Communication>DownloadでProjectをCPUにDownloadします。
Downlaodで進みます。
しばらく待ちます…
Molex Configuration Download
MolexのSNCT ToolsからI0とI1をSafety Inputとして設定します。
Download Configuration to moduleでConfigurationをModuleにDownloadします。
Yes。
OKです。
Result
実際の通信状態を見てみましょう。
Ethernet>Molex Moduleをクリックします。
Module Info Tabを開き>Refreshボタンをクリックします。
Faultがなし・モジュールがRun Modeで、Configurationも完了です。
実際I0とI1にも信号が入っていますね!
Turn to Rockwell PLC to Run Mode
Rockwell PLC Normal Status
Molex CIP Safety Hash IO Module Normal Status
https://youtube.com/shorts/35HxnZf9j64
ESTOP Status
Project Download
下記のLINKからProjectをDownloadできます。
https://github.com/soup01Threes/Rockwell/blob/main/Rockwell_L43s.With%20Molex%20CIP%20Safety%20IO.7z