シーメンス#S71500とPC StationでOPC DA Server繋がってみよう

今回はSIMATIC NET +S7-1500でOPC DA Serverを立ち上げ、OPC ScoutやMatlab OPC Toolboxからアクセスの方法を紹介しようと思います。

S7-1500構築

まずS7-1500を追加します。今回使ってるのはCPU 1515-2 PN V2.0を使用します。

Protection & Security > Connection mechanisms > Permit access with..のChecboxを入れてください。そうすると3rd PartyからPUT/GETリクエストを許可することができます。

次はOPC Server用のTagを作成します。

Data block>Global DB>OKします。

作成したDBに右クリック>Propertiesをクリックします。

Attributes>Optimized block accessのCheckboxを外します。

そうするとDBがOffsetというコラムが出てき来ます。

OPC Server用の変数を追加します。

DBをコンパイルしたらOffsetにアドレスが出てきます。

b1=DB1.DBX0.0

b2=DB1.DBX0.1

f1=DB1.DBD2

のようになります。

PC Sytem

次はOPC Server用のPC System追加します。

PC Systems>PC general>PC station選びます。

Device viewに切り替えます。

右のCatalogに>Communications modules>PROFINET interfaces>IE generalを選択し、左側に引っ貼ります。

次はUser Applications>OPC Serverを偉い、Index 2に引っ貼ります。

OPC ServerのVersionをSW8.2..を使用してください。

いまはIE generalとOPC Serverも追加された状態になります、

IE generalはなんですか?と思う人が出てくるかもしれませんが、このIE generalってつまりあなたのパソコンからCPUと接続するNetwork interface cardのことだといっています。

ここでIPを設定します。

注意するのは実際のPCStationとIPを一致する必要があります。

S7 Connection

次はS7 Connectionの接続を設定します。OPCでしょ?なんでS7 Connectionが必要になるの?と思うかもしれませが、実際CPUとPC StationにあるOPC ServerとはS7 Connectionで通信しています。そしてOPC ServerのTagに変換するだと考えてよいでしょう。

まずNetwork viewにひりかえます。

PC StationのCP IEからCPUにひっばりますーそれで構成上で2つのDeviceが同じのNetworkになることになります。

つまり、こんな感じですね。

次は隣のConnectionというButtonをクリックします。

CPUの色が変わるとわかりますね。

次はとなりのSelectionlistからS7 Connectionを選択します。

いまOPC Serverにも色が変わりましたね。

ここでTIAが示すのはPLC_1とPCStationのOPC ServerとS7 Connection作成することができますよ!っと。

同じく、PLC_1のPortからOPC Serverにひっばり、線で繋がります。

よし、これでS7 Connectionの接続もOKです。

念の為、確認しておきましょう。ConnectionのTabをクリックします。

ここでいまProjectどんなConnectionを作成したが一覧できます。

うん、S7 Connectionはちゃんと作りましたね。

OPC Tag Configuration

S7 Connectionの次は、OPC のTagを設定します。

Network viewに戻り、OPC Serverを選択します。

下にあるProperties>S7>OPC symbols>Configured>Configuring。

Popupが出ます。はい、OKです。

この画面ではPLC Project内どんなTagがOPCからアクセスできるのか、書き込むだけか、LowerとUpper Limitがあるのか、などの設定できます。

左のSymbol selectorでずっとBrowseしたら先DBで作ったTagが見えますね!

それでS7 Connection成立したら見えます!

アプリケーションに合わせて設定してください。

PC Station Configurator

これからPC Station側の設定行います。

SIMATIC NET インストール 

SIMATIC NET Trial DVD V15 SP1は今回使ってバージョンです。

以下のリンクってダウンロードして、インストールしてください。

私はISOのほうが好みです。EXEだとまた解凍しないとだめですから少しめんとくさい。

https://support.industry.siemens.com/cs/document/109762690/-simatic-net-trial-dvd-v15-sp1-download-?dti=0&lc=en-WW

インストール完了だとStation Configurator のアプリケーションが出てきます。

Set PG PC Interface

SIMATIC NETインストールされたPCStationからSet PG/PC Interfaceを起動してください。

Control panelから起動できます。

PCStataionのIE GeneralとCPUを接続するNetwork cardを設定してください。

自分は同じパソコンでなおかつ実機がありませんので、Siemens PLCSIM Virtual..にします。

設定

Station Configurationを設定するときはよくある間違いは、Station名とIndexですね。

Station名は必ずいまプロジェクト内赤矢印示してる名前と一致する必要があります。

そしてIndexはDevice overviewの赤矢印示してるIndexと一致してください。例えばIE general_1はIndex1なら、Station configuration のIndex1にも同じくIE general_1し、Index2はOPC Serverなら、Station configuration にもOPC Serverするって感じです。

もしIndex合わなかったらダウンロードするとエラーが出てます。

IE General 追加

Add..をクリックします。

Add ComponentのPopupが出てきます。

TypeはIE Generalを選んでください。

Index=1にし、Parameter assigはPG/PC Interface設定したのNetwork Cardに合わせてください。

まぁ、新しいComponent入れるとPC Stationが再構成され一時的に止まりますよ、です。

Component Propertiesでいま設定したInterfaceのIP、Mac Addressなどが見えます。

OKを。

これでIE Generalが追加されした。

OPC Server追加

次はOPC ServerをInsertします。

Index2を選んだ状態Addボタンを。

TypeをOPC Serverを選び、OK。

同じPopupですね。

OK!

よし、これで完成です。

実装

これは実際PLCとPC Stationににダウンロードします。

PLC

自分がPLCSimAdvを使っていますので、まずProjectの方をクリックし、Properties。

Protection>Support simulation during block compilation.のCheckboxをいれてください。

そうしないとダウンロードエラーになります。

S7-PLCSIM Advancedを起動中…

次はダウンロードですね。

ちゃんとPLCSIM ADV見えますね。

よし、PLC側これで準備OK。

PC Station

次はPLC Stationです。

Downloadする前に、もう一度確認しましょう。ProjectのPC NameとStation ConfigurationのPC Nameがあってるかどうか。

もし違うのであれば、Station Name..というボタンをクリックします。

そこで自由に変更できます!

ここで念の為、もう一度IPとInterfaceも一致してるかどうかを確認しましょう。

OKなら、PCStation選び、Download。

AddressのところにPCStationのIPを入れて、Search。

よし、みえました。Load!

しばらく待ちます…

リセットとかですね。わかりました。Load!

これで完了ですー。

ちゃんと緑のCheckmarkが入って、Runしてますね。

Test

これからOPC Serverをテストします。2つのToolのやり方も紹介します。1つはOPC Scoutでもう1つはMatlabのOPC Toolboxです。

OPC Scout

OPC ScoutはSIMATIC NET インストールしたときに一緒に勝手に入れたものです。

OPC Scout v10

https://support.industry.siemens.com/tf//WW/en/posts/where-can-i-download-scout-v10/158302?page=0&pageSize=10

Siemens Automation>OPC Scout V10を起動すればよいです。

以下は実際OPC Scoutの居場所ですー

起動したらしばらく待ちます…

Local COM serverをダブルクリックします。

しばらく待ちますと、Drop-listが出てきます。

OPC.SimaticNETを選びます。

ずっとSYM>S71500ET200MP station_1>PLC_1>dbOPC_Dataを開きますと、作成されたTagが見えます。

次はMonitorしたいと思います。例えばb1を選び、下のDA view_1のIDのところにひっばります。

そうするとMonitorされるTagが一つが追加されます。

他のTagにも同じ作業しましょう。

次はDBをちょっと変更してみましょう。

Monitor ONのボタンをクリックします。

ValueのコラムのところにいまDBの値が見えます!

Matlab OPC ToolBox

次はMatlab OPC ToolBoxでOPC Serverをアクセスしてみますね。

まず以下は参考ドキュメントです:

Matlab OPC ToolBox

https://jp.mathworks.com/help/opc/server-connection-and-browsing.html?s_tid=CRUX_topnav

https://jp.mathworks.com/help/opc/ug/dagroup.read.html

OPC Serverと接続するにはまずSeverNameとHostNameの指定が必要ですね。

先のOPC ScoutからServer informationのところ見えます。

接続

d=opcda(‘localhost’,’OPC.SimaticNET’)

d =

Summary of OPC Data Access Client Object: localhost/OPC.SimaticNET

  Server Parameters
      Host      : localhost
      ServerID  : OPC.SimaticNET
      Status    : disconnected
      Timeout   : 10 seconds

  Object Parameters
      Group     : 0-by-1 dagroup object
      Event Log : 0 of 1000 events


connect(d)

NameSpace取り

ns = getnamespace(d)

ns =

  2×1 struct array with fields:

    Name
    FullyQualifiedID
    NodeType
    Nodes

nsは2×1のStruct arrayが戻りましたね。ns(1)は\S7でns(2)は\SYMです。

Nodes見てみる

ns(2).Nodes(1)

struct with fields:

                Name: ‘S71500ET200MP station_1’
    FullyQualifiedID: ‘\SYM:\S71500ET200MP station_1’
            NodeType: ‘branch’
              Nodes: [1×1 struct]

\SYM:\S71500ET200MP station_1のNodesになります。

ns(2).Nodes(1).Nodes(1)

  struct with fields:

                Name: ‘PLC_1’
    FullyQualifiedID: ‘\SYM:\S71500ET200MP station_1\PLC_1’
            NodeType: ‘branch’
              Nodes: [1×1 struct]

\SYM:\S71500ET200MP station_1\PLC_1のNodesになります。

ns(2).Nodes(1).Nodes(1).Nodes(1)

  struct with fields:

                Name: ‘dbOPC_Data’
    FullyQualifiedID: ‘\SYM:\S71500ET200MP station_1\PLC_1\dbOPC_Data’
            NodeType: ‘branch’
              Nodes: [6×1 struct]

ようやくDBの変数見えましたね!

ns(2).Nodes(1).Nodes(1).Nodes(1).Nodes(1)

ans =

  struct with fields:

                Name: ‘b1’
    FullyQualifiedID: ‘S71500ET200MP station_1.PLC_1.dbOPC_Data.b1’
            NodeType: ‘leaf’
              Nodes: []

最後はb1をアクセスしようと思います。

browsenamespace

この関数使ってUIのInterfaceを開いてNodesを見ることを探すこともできます。

ItmList = browsenamespace(d)

Read

最後はNodesの値をリクエストしたいと思います。

valueは0ですね。

itm = additem(grp,’S71500ET200MP station_1.PLC_1.dbOPC_Data.b2′);

s=read(itm)

s = 

  struct with fields:

       ItemID: ‘S71500ET200MP station_1.PLC_1.dbOPC_Data.b2’

        Value: 0

      Quality: ‘Good: Non-specific’

    TimeStamp: [2021 6 7 3 33 26.2880]

        Error: ”

はーい、お疲れ様です。

Footer_Basic

Find ME

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

シェアする

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

フォローする