Project#Beckhoff TwinCAT3 x Siemens S210 Servo Drvie_Part2

Beckhoff TwinCAT3とSiemens SINAMICS S210 PN を動かす第2話です。前回はTwinCAT3 Control panelからS210 Driveを動かしました、今回はProfisafe Telegram30を組み込みたいですが、TwinCAT IPCだけだとProfisafeが使えないので、Profinet のShared Devices機能を使いS71212FをProfisafeだけ制御し、MainのMotionをBeckhoffからControlしようのやり方を紹介します。

Thanks!

この記事が出来上がるのはベッコフ日本法人ベッコフオートメーション株式会社さまとMana Design worksさまから機材を貸してくださったおかけです。誠にありがとうございます。

ベッコフ日本法人ベッコフオートメーション株式会社

IPC6920-005はベッコフ日本法人ベッコフオートメーション株式会社さまが貸してくださったものです。Beckhoff Automationは1980 年会社設立、PCベースの制御技術をベースにしたオープンオートメーションシステム導入の先頭に立つドイツ企業です。

ベッコフ日本法人ベッコフオートメーション株式会社は、2011年に横浜に本社、2017年に名古屋オフィスを設立しました。

こちらはベッコフ日本法人ベッコフオートメーション株式会社様のホームページです。

どうぞよろしくお願いします。

https://www.beckhoff.com/ja-jp/

Mana Design Works

Siemens SINAMICS S210はMana Design Worksさまが貸してくださったものです。

Mana Design Worksは大阪に本社あるSiemensの正式なソリューション パートナーで、Siemens製のCPU・HMI・Drive・Motion Controller・SCADAから国産メーカまで常に最適な提案ができます。

こちらはMana Design Works 様のホームページです。

どうぞよろしくお願いします。

https://mndw.jp/

Reference Link

Video

English Version

Part2

Part1

Japanese Version

Part2

Part1

Siemens- Safety Program 

ここからSiemensのTIAから簡単な安全プログラムを作成します。

SiemensのSafety ProgramではLADやFBDだけ作成することができます。そのSafey Blockにはすでにエラー検知・対処・Safety テストも自動的に組み込まれているのです。

LAD/FBD

SiemensのStandardプログラムはSCL/STL/LAD/FBD/S7Graph 5種類作成できますが、Safetyの場合はLAD/FBDで、使用できる関数も制限されています。

Safety Program Structure

Safetyプログラムでは2つのF-Runtime groupsがあります。各 F-Runtime groupでは自分のSafety アプリケーションの作成したBlocksと自動的に追加されたF-Blocks、F-runtime DB、F-I/O DBsになります。

以下はSiemens プログラムの構造です。

Support Data Type

以下のData Typeのみ使用できます。

  • BOOL
  • INT
  • WORD
  • DINT
  • DWORD(S7-300/S7-400)
  • TIME
  • ARRAY[*]
    • UDTはNG
    • BoolはNG
    • WordはNG
    • TimeはNG
  • F-Compliant PLC data type

Main safety block

Main Safety blockはSafety プログラムの中で最初に呼ばれたプログラムです。S7-1200/1500 FCPUではF-OBに呼ばされ、F-Runtime GroupにAssignされています。

F-Runtime groups

処理を便利にするため、Safetyプログラムは複数のF-runtime groupsに存在してる。F-Runtime groupsがF−System内部で複数のF-blocksを連結する構造だと思ってください。そのGroupには以下の部品が存在してます。

  • Main Safety Blockを呼び出すのF-OB
  • Main Safety Block(F-OBに紐つけたF-FB/F-FC)
  • 他にFBDやLADから作られたF-FBsかF-FCs
  • F-DBs
  • F-runtime groupの情報格納されたF-DB
  • F-I/O DB
  • 自動生成させたF-Blocks
  • などなど

ESTOP Function

ではまずESTOP機能を試してみましょう。ESTOPを一つS71212FのI0.0と繋がります。

Wiring

Sink Inputの場合は”-”と”M”を繋がってください。

Function Block

こちらは今回使用するFunction Block ESTOP1です。これはSiemens TIAの標準のSafety Function Blockでそのまま使えばStop Categories0 と1を満たし、緊急停止とリセットを含む機能ができますので、ESTOPのプログラムを特に組む必要がありません。

注意するのはENとENOは他のデバイスとつながることができない。つまり、そのBlockは必ず実行する。

VAR_INPUT

E_STOPBOOL緊急停止の信号
ACK_NECBOOL1=復旧するにはリセットが必要
ACKBOOL1=リセット
TIME_DELTIMETime Delay

VAR_OUT

QBOOL緊急停止の状態、1=OK
Q_DELAYBOOL緊急停止の状態、1=OK+Delay Time
ACK_REQBOOLリセット信号リクエスト
DIAGBYTE診断情報

Implementation

Create new Project

TIAを起動し>Project>Newします。

プロジェクト名を入力し>Createします。

Projectが作成されました。

Add S71200

S71212Fを追加します。Add new deviceをクリックします。

CPU 1212 FCを選び、Versionはいま実機のFirmwareを示しています。

S71212Fが追加されました。

Configure the IP

次はIPを設定します。PLC_1>Device Configurationをクリックします。

Propertiesをクリック>PROFINET interface[X1]>Ethernet addressesを開き、

IP protocolを”Set IP address in the project”を選び>192.168.3.51をします。

Configure the Start-up Cycle Time

Startup Cycle Timeはいわゆる立ち上げTimeですね。初期設定はたしかに60sでかなり遅いので、6sにします。

Add Tags

次はESTOPにTagを設定します。S71212FのI0に繋がっていて、DI8/DQ6_1の列にI address は0だと初期設定されています。

つまりI0=I0.0、I1=I0.1のように考えればよいです。ESTOPはI0と配線しましたのでCPUのアドレスはI0.0になります。

PLC tags>Default tag tableを開きます。

NameをiESTOPに設定し、Data typeはBool、Addressを%I0.0に設定すればOKです。

PROGRAM

次は簡単なSafety programを作成します。

Add ESTOP1 Data Type

最初にESTOP1のData Typeを作成します。

PLC data types>Add new data typeをクリックします。

NameにData typeの名前を入れ、SIMATIC SafetyにあるCreate F-suitable PLC data typeのCheckboxを入れ、OKします。

出力の3つBoolを定義します。

Add Normal Data Type

PLC data types>Add new data typeします。

Normal Data typeの名前を入力し、Okします。

ElementはESTOP1のStateとStateのByteに各Boolの変数を定義します。

Add Function

Program blocks>Add new blockします。

Blockの名前を入れ>Functionを選択>LanguageをSCLにしてOkで完成します。

FunctionのInout InterfaceはUDT_ESTOP_STATEに定義されます。

Codeはまず出力を初期化し、State Byteによって現在状態を出力します。

Add Safety DB

次はSafety Data Blockを追加します。

Program blocks>Add new blockします。

Data block 選び>Safety DBの名前入れ>TypeはGlobal DB>Fail-sfaeにCreate F-BlockのCreate box入れでOKします。

Safety DBが作成されました。

Nameのところに変数名入れ、Data typeは先に定義したSafety user data typeにします。

中身は必要な変数は全部そろえています。

Add Non-Safety DB

次はNon-Safety DBを追加します。Program blocks>Add new blockします。

DB名を入力し>Data blockを選択>TypeをGlobal DBを選択でOKします。

DBが作成されました。

DUT_ESTOP1_STATEとResetのBool変数を定義します。

Add ESTOP1

いよいよプログラムを作成します。

Main_Safety_RTG1をクリックします。

黄色ついてるってことはこのBlockは安全Blockです。

右にあるBasic instructions>Safety functionsからESTOP1をNetwork1にDropします。

Call optionsのPopupが出てきます。

Multi instanceを選び>名前をESTOP1を入力、OKします。

よし、プログラムが追加されました。

E_STOPは先ほどTag Table定義したI0.0と割り付けます。

ACK_NECはTRUEの定数、つまり必ずリセットリセットが必要。

ACKは先程追加Global DBにあるResetに割り付けます。

TIME_DELはT#1sにします。

出力はDIAG以外にSafetyDBに定義した構造体変数と紐つけます。

Add Program in OB1

最後はOB1でESTOP1のState出力から現在のESTOP1状態を取得するFunctionを呼び出します。

FC1を呼び出し、ESTOP1はDB_SharedのDBに定義したESTOP1をパラメーターとして渡せばOKです。

Trace

TIAのTrace機能からESTOP1の状態をMonitorします。

Traces>Traceをクリックします。

Configuraitonを開いて、NameのところにMain_Safety_RTG1_DBに定義したESTOP1入力E_STOPと出力のACK_REQとQを入れます。

Recording conditions>Sample withをFOB_RTG1を設置します。(Main_Safety_RTG1はSafety FBなので)

Trigger>Trigger ModeをMonitoring without triggerを選択します。

Transfer trace configuration to deviceをクリックしTraceをDownloadします。

もし同じConfiguraitonがすでに入ってるならOverwriteしますかって聞かれます。

Yesで進みます。

Trace画面が表示されます。

Activate recordingボタンをクリックしデータを記録しはじめます。

現在値が取れるようになります。

もし記録停止したいならDeactivate recordingボタンをクリックすればOKです。

DeviceにあるTraceを削除したいならDelete Trace from deviceボタンをクリックすればOKです。

Yesで確定します。

Result

まず最初にESTOP(赤)がOFFしてる状態です。Q(青)もOFFしてるになっています。

次はESTOP信号(赤)を入れます。Q(青)がまだOFFの代わりにACK_REQ(緑)がTrueになっています。

最後はリセット信号入れると、ACK__REQ(緑)がOFFになり、Q(青)がONになりました。

Shared Devics?

PROFINETではいくつかのオプション的な機能があり(場合によって使用できないPNデバイスもありますが) 、例えば Shared input・Shared Device・Fast Start Up (FSU)など。今回紹介するのはそのShared Deviceになります。

Shared Deviceは簡単に言いますと、1つのStation中にあるSubSlot群を複数のControllerからアクセスすることができます。よくあるアプリケーションは同じStationではPROFI-safe SupportしてるSafety ControllerがSafetyIOのSubSlotだけにアクセスし、Safety Functionを実装する(例えばSTO)。他のStandard SubslotはStandard Controllerがアクセスし装置を制御します。

Advantages

Shared Deviceを使用することにより以下のメリットがあります。

  • IO Devicesやモジュールの数が減り、装置のコストが下がります。
  • 複数のCPUからリアルタイムでIO Dataをアクセスできる
  • 盤内のスペースが節約できる
  • CPU-CPUの通信実装しなくてもデータ交換できる
  • CPU-CPUの通信プログラムを作成する必要がなくなる

Requirement

  • Step7 TIA V12 SP 以上
  • Siemens CPUはFirmware V1.1以上
  • IO DevicesはShared Device機能をSupportする

注意するのはShared Deviceを使用する場合は、プロジェクトを別々に分ける必要があります。

If iDevice and Shared Device are both used..

もしあなたのアプリケーションはiDeviceとShared Deviceを同時に使用する場合は、

  • S7-1500の場合はFirmware V1.5以上、そしてTIAからそのI-DevicesをGSDML Exportし、IO ControllerのプロジェクトにImportする
  • S7-300,S7-400の場合、Step7 V5.5 からGSDMLをExportし、IO ControllerのプロジェクトにImportする
  • ET200SP-CPUの場合はFirmware V1.6以上、そしてTIAからそのI-DevicesをGSDML Exportし、IO ControllerのプロジェクトにImportする

Rules

  • Shared Deviceを使用するIO Controllerは必ず別々のプロジェクトで構築する必要があります。(今回のTutorialはTwinCAT3とS7-1200ですが、Siemens PLC 同士でも同じです。)
  • Shared Deviceは別々のProjectですが、Hardware Configurationは必ず一致する必要があります。
  • IP、DeviceNameは必ず一致する
  • Send Clock設定も必ず一致する

Safety

標準のDrive機能と比べ、Safety Integrated Functionsは更に低いError Rateになります。

そのError RateはPerformance Level(PL)とSfaty Integrity Level(SIL)に関連しています。

そしてSafety 機能はUserさんがアプリケーションのリスクを減らすことができます。

Siemens のS210 DriveにあるSafety Integrated(”Drive-Integrated”)はつまり安全機能は

Drive内部に内蔵しており外部のコンポーネントの拡張が必要ありません。

Safety Integrated Functions

  • Safety Integrity Level(SIL) 2, DIN EN61508
  • Category 3, DIN EN ISO 13849-1
  • Performance Level(PL) d, DIN EN ISO 13849-1

Response Times

Safety Integrated FunctionはSafety Monitoring cycle 4msで実行されます。

今回使用するPROFISafe Telegramの評価時間は大体Monitoring Cycleの2倍になります。

STO(Safe Torque Off)?

STOはSafety Torque OFFでSafety機能としてトリガーされると直ちにトルクOFFになる状態でそれ以上モーターに動力を与えないように保証します。その安全機能はEN 6024-1のカタログ0に該当します。

モーターが回ってるときSTOがトリガーされたら惰性でモーターを止めます。

Siemens S210 はFailsafe Digital Input(安全入力)やPROFIsafe経由で使用できます。

Telegram30

DriveにTelegram30を組み込むことにより、F Host(PROFIsafe SupportするIO Controller)とPROFIsafe通信ができます。今回紹介するのはTelegram30で、他にまだTelegram900などのPROFIsafe Telegramがあります。

Telegram30では6BytesのIN/OUTデータを占有します。0Byte目と1Byte目はSafety user dataで残りの4BytesはPROFIsafe 通信で使われています。

Control word S_STW1

こちらはTelegram30のSTW1 Controlword構造です。

Stauts word S_ZSW1

こちらはTelegram30のZSW1 Statusword構造です。

Flow

最初にモーターが運転中、1のときSTOがPROFIsafeかFailsafe Digital Inputからトリガーされました。そのときTelegram30の入力がSTO_active信号がFeedbackされます。

Driveが直ちにSafety機能を作動させます。MotorがトルクOFFになる状態でそれ以上モーターに動力を与えないように保証します。そして惰性でモーターを止めます。

もちろんSTO機能がモーターの再起動を完全にブロックします。

DriveがSTO信号を無効に戻すと、Driveはまだ”Ready”の状態に戻ります。リセットするには以下の選択肢があります。

  • IO Controllerからのリセット
  • DriveにあるOKボタン
  • 電源の入れ直し
  • S210のWeb serverからリセット

最後はON/OFF1のパルス信号でDriveを再起動します。

Implementation 

Siemens S210 Side

Web ServerからSiemens S210のProfisafe機能を有効にします。

Safety integrated>Commissioningをクリックします。

右にあるSafety integrated Passwordを入力>Enterします。

Password acceptedのメッセージ出たらOkです。

これからProfisafeの設定をします。

Safety IntegrationはBasic function、Control viaはPROFINsafeし、Startボタンで開始します。

S11 Delay timeなど細かい設定もできますが、今回はDefaultで行きます。

次はPROFIsafe Telegram TypeをTelegram30を選択します。

はPROFIsafeアドレスは1で、STOを設定し、Continueで続きます。

DefaultのままでContinueします。

Finishで完了します。

Save all parameters(Power failure-proof)のCheckboxを入れ、Finishします。

しばらく待けば、Okです。

Preaction

Donwload Library

以下のLINKからライブラリをDownloadできます。

https://support.industry.siemens.com/cs/document/109485794/simatic-failsafe-library-ldrvsafe-to-control-the-safety-integrated-functions-of-the-sinamics-drive-family?dti=0&lc=en-WW

このようなZIP FileがDownloadされました。

TIAにImportするために解凍してください。

Import Library

TIAを起動し、右にあるGlobal librariesにあるOpen libraryのボタンをクリックします。

先程解凍した.al16を選び>Openします。

SiemensのWebからDownlaodしたライブラリをTIAにImportしました。

Control Word

まずTelegram30のControl WordをImportします。

S7-1200F>PROFIsafe>Control Word>Telegram 30を開き、中にあるLDrvSafe_PdcTlg30ControlをProject TreeにあるProgrma blocksにDropします。

LDrvSafe_typePdcTlg30ControlをProject TreeにあるPLC data typesにDropします。

Status Word

次はTelegram30のStatus WordをImportします。

S7-1200F>PROFIsafe>Statys Word>Telegram 30を開き、中にあるLDrvSafe_PdcTlg30StatusをProject TreeにあるProgrma blocksにDropします。

LDrvSafe_typePdcTlg30StatusをProject TreeにあるPLC data typesにDropします。

LDrvSafe_PdcTlg30Control

このFunction Blockを使用すると簡単にSIMATIC MircoのSafety 機能をTelegram 30経由で制御できます。

VAR_INPUT
ParameterData TypeDescription
STOBOOLSafety Torque Off(STO)Safety機能を制御する1=Deselect、0=Select
SS1BOOLSafety STOP1(SS1)Safety機能を制御する1=Deselect、0=Select
SLSBOOLSafety Limit Speed(SLS)Safety機能を制御する1=Deselect、0=Select
SLTBOOLSafety Limited Torque(SLT)Safety機能を制御する1=Deselect、0=Select
ackSafetyFaultsBOOLFail-safe acknowledgment する、立ち上げでトリガー
VAR_OUTPUT
ParameterData TypeDescription
PdcTlg30ControlLDrvSafe_typePdcTlg30ControlTelegram30を制御するProess IO
LDrvSafe_PdcTlg30Status

このFunction Blockを使用すると簡単にSIMATIC MircoのSafety 状態をTelegram 30経由で評価できます。

VAR_INPUT
ParameterData TypeDescription
PdcTlg30StatuslLDrvSafe_typePdcTlg30StatusTelegram30の入力
VAR_OUT
ParameterData TypeDescription
safetyFaultActiveBOOLFail-safe acknowledgment する、立ち上げでトリガー
STOactiveBOOLSafety Torque Off(STO)Safety機能の状態1=Active
SS1activeBOOLSafety STOP1(SS1)Safety機能の状態1=Active
SLSactiveBOOLSafety Limit Speed(SLS)Safety機能の状態1=Active
SLTactiveBOOLSafety Limited Torque(SLT)Safety機能の状態1=Active

Install GSDML File

TIAからOptions>Manage general station description files(GSD)をクリックします。

もしこのようなエラーがあれば、他のTIAを閉じて、もしくはPCを再起動してください。

Source pathにGSDMLが格納されているFolderに設定したらGSDMLがScanされました。

すべてを選び>Installします。

しばらく待ちます…

よし、インストール成功です。

TIAが自動的にUpdateしてくれます。

Hardware Configuration

Add S210

TIA ProjectからS210を追加します。右のProduct CatalogからSINAMICS S210 PN V5.1をDropします。

SINAMICS S210 PN V5.1が追加されました。

No assignedをクリックし>PLC_1.PROFINET interfaac_1を選択します。そのPLC_1.PROFINET interfaac_1はS7-1200のProfinet X1だと示しています。

いまS71212FCとSINAMICS S210 PN V5.1がProject上でProfinet接続しました。

Set IP Address

TIAから紫の目ICON、Show address labelsボタンをクリックします。

SINAMICS S210 PN V5.1にIPが表示されるようになり、PN/IE_1の緑Fieldから直接IPを編集できるようになります。注意するのはそのConfigurationをTwinCAT側と一致する必要があります。

Add Telegram

次はSINAMICS S210 PN V5.1にTelegramを追加するために、S210 ICONをダブルクリックします。

Device Viewに切り替えます。

右のCatalogからPROFISafe Telegram30とStandard telegram3を追加します。

注意するのはそのConfigurationをTwinCAT側と一致する必要があります。

このような操作です。

SINAMICS S210 PN V5.1がいまTelegram30とTelegram3が挿入されました。

Set Shared Devices

最後はShared Devicesを設定すれば終わりです。

Properties>Shared Devicesを開いて、S71212FからAccessするSlotはDRIVE_1、Module Access PointとPROFINsafe Telegram 30だけにします。

Device ViewからSINAMICS S210 PN V5.1を見るとTelegram3が灰色になり、I addressとQ addressにも設定できなくなります。それはSINAMICS S210 PN V5.1いまのTelegram3 SlotがS71212Fからアクセスしないようになっています。

F-Address

PROFIsafe Telegram30をクリックし>PROFIsafeを開いて、F_Source_Addは1のままでOKで、F_Dest_Addは先程S210 Web serverからセットアップしたF_Dest_Addに合わせてください。

Define Tags

PROFINsafeのIO Tagsを定義します。

PLC tags>Default tag tableを開きます。

変数名はわかりやすく定義し、Data TypeをライブラリからImportしたLDrvSafe_PdcTlg30ControlとLDrvSafe_PdcTlg30Statusを設定し、AddressはDevice Viewの先頭に合わせましょう。

Program

いよいよSiemens側のプログラムを作成します。

Safety Main_Safety_RTG1

VAR

Safety Function Block ESTOP1のInstanceをStatic領域で定義します。

NTW1

まずはESTOP1 Safety Function Blockを呼び出し、E_STOP信号などを割り付けます。

NTW2

次はSiemensのライブラリを使用しTelegram30のStatusを評価し、現在のSTOなど状態を取得します。

NTW3

最後はSiemensのTelegram30制御ライブラリを呼び出します。

STOのトリガーは先程のESTOP1の出力と紐つけます。

最後はCPUにDownloadしてください。

TwinCAT Side

TwinCAT側が今回やることはShared Devices設定するだけです。

Add Telegram30

前回のプロジェクトからSINAMICS S210 PN V5.1>Term 2(DRIVE)を右クリックしAdd New Itemします。

Telegram30を追加します。

PROFINsafe Telegram30が追加されました。

Set Shared Devices

次はShared Devicesを設定します。SINAMICS S210 PN V5.1をクリックします。

For Telegram3

Telegram3ではTwinCAT側で制御しますしますので、AccessをTrueにし、他のものをFalseに設定します。

For Telegram30

もちろんTelegram30もFalseしてください。

Result

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

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

フォローする