PLCNEXT#OPC UA ClientをBeckhoff TF6100・Siemens OPC UA Serverと繋がってみよう

今回の記事ではAXCF3152のOPC UA Client機能を使用し、SiemensとBeckhoff TF6100のOPC UA Serverと接続する手順を説明します。

さ、始めましょう!

Reference Link

http://soup01.com/ja/category/protocol/opcua/

PLC NEXT with OPC UA Client

PLCnext Technology のControllerにはOPC UA Clientが組み込まれています。OPC UAの視点では、OPC UA Clientがdata consumer であり、OPC UAサーバーが data providerです。

ClientがServerにデータの要求を送信し、Serverが該当するデータを返します。これにより、ClientはServerが提供するデータに直接アクセスできるようになります。

PLCnext EngineeringではOPC UA ClientとServerの設定もPLANTの”OPC UA”から設定できます。プロジェクトに設定したOPC UAデータはPLCnext Engineerがプロジェクトと共にコントローラに書き込み、OPC UA Client機能は、コントローラの起動時にプロジェクトをロードし、自動的に実行します。

Server-client communication

Server-client communicationは、 OPC Unified Architecture protocolに準拠し設計されています。OPC UAは以前のOPC 通信と比べると、さらに新しいデータモデルを提供しています(例えば構造化されたMachine Data)。

さらに、OPC UA 標準に加えてたPLCopen Standardでは、OPC UAサーバがIEC 61131準拠コントローラのデータを環境に提供するための情報モデルをできるようになります。

Data exchange 

OPC UA ClientとServerのデータ交換は、変数を介して実現されます。ローカル変数(PLCnext EngineerプロジェクトでLocal変数)をMappingしOPC UA ServerにSubscribe(読み取り)もしくはWrite(書き込み)することができます。

OPC UA Clientは、Serverとの接続を確立した後、ServerのAddress spaceをScanし、利用可能な変数を検索します。Address spaceには、ServerがOPC UA Clientに公開する情報のみが含まれて、変数をNodeとして表されます。そして各NodeIdに以下の3つの要素で構成されています:

  • Namespace
    • Nodeが割り当てられている URI (Uniform Resource Identifier) を含む名前空間になります。
    • 名前空間は、異なる命名デバイスで一意の識別子が使用されることを保証します。
  • Type – NodeId の識別子のそのタイプ。タイプは以下の文字のいずれかになります。
    • i:Numeric (integer) value
      • Example: I=10
    • s:String value
      • Example: s=test
    • g:GUID (Global Unique IDentifier) 
      • Example: g=1D73013A-5FAF-45D5-8F2E-DE97C4869873
    • b:Base64 encoded value
      • Example: b=dGhvbWFz
  • Value: OPC UA ServerのNamesapceにあるNodeの識別子値

Security settings

PLCNEXT Engineeringの’Security’ では、OPC UA Serverに接続する際にOPC UA Client側で実行されるSecurity Checkを変更することができます。

Application Authentication

その設定が無効の場合、OPC UAサーバーへの接続時にサーバー証明書検証の失敗を無視します。

Application Uri Check

その設定を無効にすると、無効なサーバー証明書申請URIは無視され、URI Checkを無効にすると、サーバーのURIがクライアントの証明書に入力されたURIと一致しなくても、OPC UAサーバーへの接続を確立できます。

Certificate Hostname Check

その設定を無効にすると、無効なサーバー証明書のホスト名は無視されます。Hostname Checkを無効にすると、サーバーのホスト名がクライアントの証明書に入力されたホスト名と一致しない場合でも、OPC UAサーバーへの接続を確立できます。

Certificate Time Check

その設定を無効にすると、無効な証明書時刻は無視されます。Certificate Time Checkを無効にすると、OPC UAサーバーの証明書が期限切れまたは無効であっても、OPC UAサーバーとの接続を確立することができます。

Certificate Issuer Time Check

その設定を無効にすると、無効な証明書発行者の時刻は無視される。Certificate Issuer Time Checkを無効にすると、OPC UAサーバーの発行者証明書の有効期限が切れていたり、無効であったりしても、OPC UAサーバーとの接続を確立することができます。

Password Encryption Check

その設定を無効にすると、ServerNonceとPasswordEncryptionModeのチェックは無視される。

Implementation

Siemens Side

IP

TIAを起動し、新規プロジェクトを作成します。

Ethernet addressessの項目でCPUのIPを設定しましょう。

OPC UA Server

次はOPC UA Server機能を有効にします。OPC UA>General>Serverのところに

Activate OPC UA ServerのCheckbox入れ、Portを設定します。

License

最後はRuntimeライセンスを設定します。Runtime License>OPC UAでType of purchased licenseを選択しSIMATIC OPC UAS7-1200 Basicに設定します。

Add DB

次はData Blockを追加し、Accessible From HMI/OPC/WebserverのCheckBoxを入れましょう。

Add Server Interface

OPC UA Server Interfaceを追加します。OPC UA Communication>Server interface>Add New server inteterfaeをクリックします。

Server interfaceの名前を入力し、OKします。

Done!Server intetfaceが追加されました。

必要な変数をInterfaceにDropします。

Program

次は簡単なプログラムを組んで、変数を常に変換させます。

Download

Download to deviceでプロジェクトをCPUにDownloadします。

Loadで進みます。

Done!

Beckhoff Side

次はBeckhoff側を構築します。

Activate OPC UA Configurator

まずTwinCATのOPC UA ConfiguratorをToolbar上で表示させるため、View>Toolbars>TwinCAT OPC UA Configuratorをクリックします。

Add OPC UA Project

OPC UA プロジェクトをTwinCATプロジェクトに追加するためSolution>右クリック>Add> New Itemします。

TwinCAT OPC UA Server Projectを開き>Addで追加します。

Done!

Add Device Type

OPC UA のData Access Deviceを追加するため、Data Access>右クリック>Add Device typeします。

Device Typeの作成画面が表示され、ADS Port を851に設定しCreateで新しいDeviceを作成します。

Done!

UA Endpoints

UA Endpoints Tabに該当するOPC UA Serverの使用Port・Securityなどの設定を行うことができます。

Factory Reset

OPC UA Serverを設定する前に一回ServerをFactory Resetします。RecoveryのTabを開き>Factory resetで初期設定に戻ります。

New OPC-UA Server Config

次は新しいOPC-UA Server Configurationを生成します。

OPC UA Configuratorにある”New OPC-UA Server Config”で新しいOPC-UA Server設定を追加します。

Server Configuration画面が表示されます。

Add Serverで新しいServerを追加します。

Endpoint Configuration画面が表示されます。

+ボタンで新しいUaServer URLを追加します。

EndpointでアクセスできるOPC UA ServerのEnd-pointを設定します。

Noneもしくは他のSecurity policy を選びましょう。

最後はOkで設定を適用します。

これでOkです。

Connect to OPC UA Server 

OPC UA Configuratorの”Edit Serverlist”のDrop-listから先程追加したEndpointを選択します。

ConnectでTwinCATとOPC UA Serverを接続しましょう。

OPC UA Serverを初めて設定するときは、Server Initialzationの画面が表示されます。

UsernameとPasswordをPCのUsernameとPasswordに設定しましょう。

Firewall Configuration

場合によっては、PCのFirewallにOPC UA のPort接続を許可する設定が必要です。

Rule TypeはPortを選択し、Next>で進みます。

RulesはTCPに設定し、Port番号を4840にします。

Allow the connectionを選択し、Next>ですすみます。

Next>で進みます。

Nameはわかりやすい名前に設定しましょう。

Done!

Add User

OPC UA ServerにアクセスするためにUserを追加するため、Security Access>右クリック>Add Userします。

Userの作成画面が表示され、UsernameとPasswordを設定しましょう。

Done!

Program

Configuration

プロジェクト>PLC>PLC ProjectにSettings>TMC FileのCheckboxを入れます。

DUT

OPC UA Serverに公開するNodeを構造体として定義します。

TYPE DUT_Nodes :
STRUCT
inBool,Outbool :BOOL;
inint,Outint :BOOL;
inReal,OutReal :REAL;
inLreal,OutLReal :LREAL;

inArraysBool,OutArraysBool :ARRAY[0..31]OF BOOL;
inArrayInt,OutArrayInt :ARRAY[0..31]OF INT;
inArrayReal,OutArrayReal :ARRAY[0..31]OF REAL;
END_STRUCT
END_TYPE

GVL

OPC UA Server用のGlobal variable Listを作成します。

注意するのは{attribute ‘OPC.UA.DA’ := ‘1’}をわすれずに。

{attribute ‘qualified_only’}
VAR_GLOBAL
{attribute ‘OPC.UA.DA’ := ‘1’}
bbool_out:BOOL;
{attribute ‘OPC.UA.DA’ := ‘1’}
MyData :DUT_Nodes;
END_VAR

Main

簡単な検証プログラムを作成します。

GVL_OPCUA.bbool_out:=TRUE;

GVL_OPCUA.MyData.OutReal:=GVL_OPCUA.MyData.OutReal-0.01;

IF GVL_OPCUA.MyData.OutReal <= -10000.0 THEN

GVL_OPCUA.MyData.OutReal:=0.0;
END_IF

PLCNEXT Side

Enable the OPC-UA Client Function

AXCF3152のOPC UA Client機能を有効にするため、CPUのWeb serverにアクセスします。

Configuration>System Servicesを開きます。

ConfigurationにあるOPCUA ClientにあるActivationのCheckboxを入れ、Apply and restartで設定を適用します。

Diagnosics

Web Serverの診断機能を使用すれば、OPC UA の接続が問題が発生すればTroubleShootingしやすくなります。

Sender FieldからMessageのカタログをFilterできます。

今回はOPC UA Clientにします。

Done!いまOPC UA ClientのMessageのみ表示されます。

Import the certification

BeckoffのOPC UA Server証明書(.der)をPLCNEXT AXCF3152にImportするために.crtに変換します。

Install openssl Light

下記のLinkからWin64 OpenSSL LightのSetup FileをDownloadします。

https://slproweb.com/products/Win32OpenSSL.html

Setup Fileを起動し、ライセンスに同意しNext>します。

インストール先を設定し、Next>します。

Next>で進みます。

Next>します。

インストール開始します。

Done!

Edit System variable

次はWindowsにOpenssl環境変数を追加します。

こちらはOpenssl LightのインストールLocationです。

Control Panel>System and Security>SystemからAdvanced system settingsをクリックします。

AdvancedのTab>Environment Variablesを設定します。

Pathを選び>Newで新しいPathを追加します。

Variable nameはOpensslでVariable Valueは下記のPathを入力します。

C:\Program Files\OpenSSL-Win64\bin

Lanuch openssl

TerminalでOpennsslのVersionを確認します。

C:\Users\root>openssl version
OpenSSL 3.1.2 1 Aug 2023 (Library: OpenSSL 3.1.2 1 Aug 2023)

Change the Format

次はBeckhoffのOPC UA Serverの証明書をOpensslツールを使用し.derから.pemに変換します。

C:\TwinCAT\Functions\TF6100-OPC-UA\Win32\Server\PKI\CA\trusted\certs

次は以下のコマンドを使えば変換できます。

C:\Users\root\Desktop>openssl x509 -inform der –in Beckhoff_OpcUaServer.der –out beckhoff-opcua-cert.pem

Upload to AXCF3152

次はBeckhoff TwinCAT のOPC UA ServerwAXCF3152にUploadするため、Security>Authenticationを開きます。

Trust Storesをクリックし、OPC UA Clientの証明書管理で+ボタンをクリックします。

CertificateのUpload画面が表示され、Browseボタンをクリックし証明書をUploadしましょう。

Done!証明書をUploadしました。

Detailsボタンで該当する証明書の詳細を確認できます。

Certificationの発行者・有効期限などの情報を確認できます。

Configure the Time

Certificationを使用するために、AXCF3152の時間を現在の時間に合わせる必要があります。Configuration>Data and Timeをクリックします。

Ntp Serverを設定しましょう。

Define Variables

次はAXCF3152がOPC UA ServerにアクセスしたNodeとCPU内の変数を定義し、なおかつOPCのCheckboxを入れます。

Configure the OPC UA

今度はOPC UA 設定を変更するためにProject>OPC UAを開きます。

OPC UA Server

まずServer SettingsのTabを開きましょう。

Infomration modelの設定はMarkedと設定します。

OPC UA Client

PLCNEXTのOPC UA Client機能を設定します。

場合によりOverride Certificate Store Nameの機能を有効にしましょう。

Session Securityも場合によってOverride Securityの機能を有効にしてください。

自分はBeckhoff TwinCAT のOPC UA Serverと接続する場合、Application URI CheckとCertificate Host Checkの検知だけ無効にします。

Configure Connection

OPC UA Serverの接続を構築するため、Client ConnectionsのTabを開きます。

Siemens 

まずAXCF3152とSiemens OPC UA Serverの接続設定を行います。Nameは該当するConnectionsの接続名です。

URLはSiemens OPC UA ServerのURLで、opc:tcp://IP:portになります。

TwinCAT

次はTwinCATのOPC UA Serverです。Connection名とURLを設定します。

TwinCATはUser & Eync設定なので、Username Fieldは先程TwinCATで作成したUser 名を入力します。

PasswordはTwinCATで作成したUser1のPasswordを入力します。

Security policy uriはBasic 256 SHA 256を設定します。

Configurationの下に2つのOPC UA Server Connectionが追加されました。

Variable Group-Subscribe

次は Subscribe する変数を設定します。SubscribeはPLCNEXTがOPC UA ServerのNodeを読み込むことになります。下図はUaExpertがTwinCATのOPC UA ServerにアクセスするときのScreenShotです。

GVL_OPCUA.MyData.OutRealのNode Attributeを調べると、該当するNodeの情報を確認でき、それらの情報をPLCNEXT Engineeringに合わせて設定する必要があります。

下図のように、Remote variable IdentifierはNode Idの”s=”部分に該当し、Remote variable namespaceはNode Idの”ns=4”部分に相当します。

”ns=4”の4はAddress spaceのDrop listの4:urn:xxxxxxになります。

最後はLocal VariableのFieldを先程定義した変数と紐づけましょう。

Variable Group-Write

WriteはPLCNEXTがOPC UA ServerのNodeを新しい値に書き込むことになります。先程と同じく以下のFieldを設定しましょう。

  • Local Variables:PLCNEXT 内部に紐つける変数
  • Remote Variable Identifier:Node Idの”s=”部分
  • Remote variable Namespace:Node Idの”n=”部分

Cycle Time

Cycle Timeは実際のアプリケーションに合わせて設定しましょう。

Program

最後は簡単な検証プログラムを作成します。

i16_w_Int:=i16_w_Int+1;
r32_w_real:=r32_w_real+0.01;
if r32_w_real>=10000.0 THEN
    r32_r_Real:=0.0;
end_if;

Result

MainプログラムにデータをSiemensとTwinCATのOPC UA ServerのNodeを読み書きできます。

AXCF3152 Web Serverの診断画面をOPC UA ClientにFilterにMonitoring connection; ConnectionId=”1″とMonitoring connection; ConnectionId=”2″のメッセージがありました。

下図のようにConnection1は一番目のSiemens OPC UA Serverで、Connection2は2番目はBeckhoff TwinCAT3 のOPC UA Serverになります。

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

シェアする

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

フォローする