Pilz#PITReaderのOPCUA インタフェースを使ってみよう

今回の記事ではPilzのPITReaderをCDP StudioからOPC UA Serverにアクセスする手順を説明します。CDP StudioのRuntimeはSEEED STUDIOのreComputer R1025-10と横河電機のert3を使用します。

さ、FAを楽しもう。

Reference Link

http://soup01.com/ja/category/iec61499/cdpstudio/

CDPStudio#横河電機のert3に導入しよう
Pilz#PITReaderのREST APIを使ってみよう

OPCUA with PITreader

PITreader OPCサーバーUAは、組み込み型のOPCサーバーで、さまざまなデバイスタイプやバージョンで利用できます。

PITreaderのOPC UAサーバーを使用することによって、PITreaderからのプロセスデータとデバイスデータを可視化システムに提供します。また、OPC UAサーバーはPITreaderからデータを読み込むことが可能です。

注意するのは、 PITreaderのOPC UAサーバーには、一度に最大1つのクライアント接続を確立することができます。OPC UAクライアントは、例えば、可視化システムPASvisuのOPC UAクライアントであっても、サードパーティ製OPC UA対応クライアントであってもかまいません。

Properties

PITreader OPCサーバーUAは、OPC UAクライアントからのアクセス用に、以下のOPC UAプロパティをサポートしています: 

  • TCP経由のUAバイナリ・プロトコル
  • OPC UA Url EndPointのFormatは以下になります。
    • opc.tcp://<IP address>:<Port>
      • <IP address>
        PITreader OPC Server UA を含む PITreader の IP アドレスになります。
      • <Port>
        PITreader OPCサーバーUAのポート番号
        デフォルト設定 4840
    • 例: opc.tcp://192.168.0.12:4840

Limits of the PITreader OPC Server UA

PITTreaderのメッセイベントホール発行間隔 Min. 500ミリ秒、最大 15000ミリ秒になります。Subscriptionでは、OPC UAクライアントが 「PublishingInterval 」に500ms未満の値を使用した場合、PITreader OPCサーバーUAは 「PublishingInterval 」に最小値の500msを使用する。また 「PublishingInterval 」に15000ミリ秒を超える値を使用した場合、PITreader OPCサーバーUAは 「PublishingInterval 」に最大値の15000ミリ秒を使用します。

Client certificate

クライアント証明書は、以下の要件を満たす必要があります。

  • DERまたはPEM形式の証明書
  • 鍵長2048ビット、SHA2(256ビット)のRSA証明書
  • 証明書は、 “Subject Alternative Name”にクライアントのアプリケーション URI を含める必要があります。

DERとPEMは、デジタル証明書と暗号鍵のエンコーディング・フォーマットであり、これらは、特にX.509証明書の取り扱いにおいて広く使われています。

DER (Distinguished Encoding Rules)

DERバイナリ Formatで、ASN.1で記述されたデータ構造のバイナリフォーマットです。通常、厳密なバイナリ形式が必要なアプリケーションで使用される。

使用例: 

  • Java環境やバイナリデータを必要とするその他のシステム
  • iOSやAndroidのようなモバイル・プラットフォーム
  • などなど

ファイル拡張子は.der、.crt、.cer(バイナリ形式)になります。

PEM (Privacy Enhanced Mail):

PEMはBase64エンコードテキストで、PEM は、DER 形式の証明書を Base64 でエンコードし、ヘッダー行とフッター行を追加することで、読みやすくし、テキストフレンドリーな環境での送信を容易にします。

使用例:

  • ウェブサーバー
  • 電子メールシステム
  • などなど

ファイル拡張子はpem、.crt、.cer、.key(テキスト形式)になります。

Namespace

こちらはPITReaderのNamespcae一覧です。

Address space

こちらは今回記事で使用するAddress spaceだけを紹介します。

Nameplate

Nameplate Address spaceは該当するPITTreader製品の情報になります。

Network

Nameplate Address spaceは該当するPITTreader製品のネットワーク情報になります。

PITreader/Transponder

Nameplate Address spaceは該当するPITTreaderに差してるTransponderの情報になります。

PITreader/LED

Nameplate Address spaceは該当するPITTreaderのLEDの情報やLED状態を変更する機能になります。

Implementation

ert3 Side

最初に横河電機のert3から構築します。

Generate the certification

OpenSSLを使用してOPC UA用の自己署名証明書と秘密鍵を生成する際に、Application URIを含むように設定ファイルを作成する方法を説明します。以下の手順に従って、OPC UAに必要な証明書と鍵を生成します。

ssl Folderを作成します。

mkdir ssl
cd ssl

まず、RSAの秘密鍵を生成します。通常、2048ビットを選択します。

openssl genpkey -algorithm RSA -out server_private_key.pem -pkeyopt rsa_keygen_bits:2048

次に、証明書署名要求(CSR)を生成するための設定ファイルを作成します。以下の内容をopenssl_csr.cnfという名前で保存します。

nano openssl_csr.cnf

subjectAltName = URI:foobarはのちほどCDP Studioの設定に合わせる必要があります。

[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
prompt             = no
req_extensions     = v3_req

[ req_distinguished_name ]
C  = JP                           #
ST = Tokyo                        #
L  = Minato
O  = Your Organization             #
OU = Your Unit
CN = yourdomain.com
emailAddress = youremail@example.com  #

[ v3_req ]
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = URI:foobar

設定ファイルを使用してCSRを生成します。以下のコマンドを実行します。

openssl req -new -key server_private_key.pem -out server_request.csr -config openssl_csr.cnf

次に、CSRを用いて自己署名証明書を作成します。

openssl x509 -req –in server_request.csr -signkey server_private_key.pem -out server_certificate.pem -days 365 -extensions v3_req -extfile openssl_csr.cnf

必要に応じて、証明書と鍵をDER形式に変換することも可能です。

openssl x509 -req –in server_request.csr -signkey server_private_key.pem -out server_certificate.pem -days 365 -extensions v3_req -extfile openssl_csr.cnf

Add OPC-UA Client

次はCDP Stuidoから新規プロジェクトを作成し、Resources>OPCを検索>OPC-UA-Clientをプロジェクトに追加します。

Done!OPC-UA-ClientのBlockが追加されました。

End Point

End PointはPILZ社のPITReaderのIPアドレスになります。

Port

PortはPILZ社のPITReaderのOPC UA Serverの使用Portに合わせます。Default上ではOPCUA ServerがPort 4840を使用します。

ClientAppURI

ClientAppURIは先程証明書で設定したURIと一致する必要があります。

SecurityMode/SecurityPolicy

PILZ社のPITReaderはSign&Encrypt/Basic256Sha256のみ対応します。

TLS Certificate /Key File

こちらはert3からPITReaderとOPCUA 通信するための証明書とPrivate KeyのFile名を設定する場所です。先程のStepで生成した証明書とKeyの名前を入れましょう。

AllowURIMissmatch

最後は接続先のOPC UA Serverによって、TLSAllowURIMatchのCheckboxオプションを入れてください。

Add your Certification File

今度は先程横河電機のert3で生成した証明書をプロジェクトに追加します。

Code>プロジェクト>Add Existing Files..をクリックします。

横河電機のert3で生成した証明書とKeyをプロジェクト名>ApplicationのFolderに格納しましょう。

Done!証明書とKeyも追加されました。

Configure Nodes

次はOPC-UA-ClientのBlockを開き、PILZのPITreaderのOPCUA ServerにアクセスしたいNodeを構築します。

Nameplate

最初にPITreader本体の情報”Nameplate”を取得します。

Add ClienObjectNode

右のResourcesにあるOPC-UA-IOからClientObjectNodeをOPC-UA-ClientのBlock内に追加します。

Done!

次は先程追加したClientObjectNodeを開きます。

Example:Add String Node

全部のNodesの追加や設定方法を説明するのは難しいので、PITreader内のいくつかのObjectやNodeの設定方法を説明します。

OPC-UA-IO>ClientVariableNode>ClientVariableNode<String>をOPC-UA-Client Block内に追加しましょう。

Done!ClientVariableNodeとOPC UA ServerのNodeを接続するには、最低限の設定を説明します。

Name

Namは該当するClientVariableNodeの表示名を設定します。ここでわかりやすい名前に設定しましょう。

IDType

ID TypeはOPC UA ServerのNodeの識別子の種類になります。今回は数字でアクセスしますので、”Numeric”で設定してください。

Id

IdはuaExpertを使用するとき、Nodeがns=2,i=2000みたいな表現方法がありますね。そのi=2000はCDP StudioのIdに該当します。

Namespaceindex

NamespaceindexはuaExpertを使用するとき、Nodeがns=2,i=2000みたいな表現方法がありますね。そのns=2はCDP StudioのNamspaceIndexに該当します。

Result

Done!これでNameplate NamespaceのNodeが全部追加されました。

Example:PITReader

最後はもう1つの設定例を紹介します。PITreaderのNamespaceにはたくさんのObjectが含まれ、深く構造化されています。こちらの例ではこのような深く構造化されたOPC UA Objectのアクセス方法について説明します。

Add PITrader Object

最初にPITreader Objectを追加します。

PILZの取説にはIdentifier=1001、Identifier Type=Numericで、タイプはBasic Nodeなので、CDP Studioにそれらのパラメータに合わせて設定しましょう。

なので、ClientObjectNodeは下図のように設定します。

  • Name=PITreader(CDP Studio上の表示で、わかりやすくすればOK)
  • IdType=Numeric
  • Id=1001
  • Namespace=4
Add LED

今度はPITreaderの下にあるLED Objectを追加します。

PILZの取説にはIdentifier=1004、Identifier Type=Numericで、タイプはStructure Nodeなので、CDP Studioにそれらのパラメータに合わせて設定しましょう。

ClientObjectNodeを追加します。

ClientObjectNodeは下図のように設定します。

  • Name=LED(CDP Studio上の表示で、わかりやすくすればOK)
  • IdType=Numeric
  • Id=1004
  • Namespace=4
Add State

LED Objectの下にあるState Nodeを追加します。

LEDのBlockの中にClientObjectNodeを追加します。

PILZの取説にはIdentifier=1009、Identifier Type=Numericで、タイプはStructure Nodeなので、CDP Studioにそれらのパラメータに合わせて設定しましょう。

ClientObjectNodeは下図のように設定します。

  • Name=State(CDP Studio上の表示で、わかりやすくすればOK)
  • IdType=Numeric
  • Id=1009
  • Namespace=4
Add Colour/Flash Mode

State Objectの下にあるColour Nodeを追加します。

PILZの取説にはIdentifier=2053/2054、Identifier Type=Numericで、タイプはUInt32 Nodeなので、CDP Studioにそれらのパラメータに合わせて設定しましょう。

ColourのBlockの中にClientVariableNode<unsigned Int>を追加します。

ClientObjectNodeは下図のように設定します。

  • Name=Colour(CDP Studio上の表示で、わかりやすくすればOK)
  • IdType=Numeric
  • Id=2053
  • Namespace=4

ClientObjectNodeは下図のように設定します。

  • Name=FlashMode(CDP Studio上の表示で、わかりやすくすればOK)
  • IdType=Numeric
  • Id=2054
  • Namespace=4
Add OverWrite

最後はOPC UA ServerにNodeの現在値を上書きするための設定手順を紹介します。

LED Blockの中にClientObjectNode “Overwrite”を追加します。

ClientObjectNodeは下図のように設定します。

  • Name=Overwrite(CDP Studio上の表示で、わかりやすくすればOK)
  • IdType=Numeric
  • Id=1010
  • Namespace=4

Colour・Actiaveted・FlashMode、3つのNodesを追加します。

実際のNodeのIdentifierとIdentifier Typeなどに合わせて設定しましょう。

各Nodeが書き込めるように、下図の設定にしておきましょう。

  • Input=True
  • Bidirectional=True

Result

Done!これで横河電機のert3側が準備完了です。

Pilz PITReader Side

次はPILZのPITreaderを設定します。

OPC UA Server

次はOPC UA Serverの設定になります。今回の記事ではOPC UA Serverを使用しませんが、該当する機能を有効にする方法だけ説明します。

OPCUA Serverをクリックすると、WebServerにPITreaderのEnd pointが表示されます。

Generate new certificateをクリックし、OPC UA Serverの証明書を生成します。

少々お待ち下さい…

Done!

Upload 

Upload client certificateに先ほど横河電機ert3で生成した証明書を選択し、PITreaderにUploadしましょう。

Done!

Seeed Studio Side

最後はSeeedStudio側を構築します。SeeedStudioのreComputer R1025-10を使用し、CDPStudioの中にGUI アプリケーションを作成し、ert3のCDPStudioのRuntime変数にアクセスします。

Add GUI Project

プロジェクトを右クリック>Add Newします。

CDP Applicationを選び>Chhoseで進みます。

DefaultのApplication TypeはConsoleです。

そのApplication TypeをGUIに変更し、Next>で進みます。

Finishでプロジェクトを作成しましょう。

Done!GUIプロジェクトを追加しました。

Configure Toolkit

SeeedStudioのRecomputer R1025がRaspberry Piペースの64Bit OSなので、Toolkitを”ARMv86 64 bit(Debian 11)”に設定してください。

Create your GUI Application

次はDesignのボタンをクリックし、GUI画面を作成しましょう。

こちらは今回SeeedStudioのRecomputer R1025で実行するGUI画面になります。詳しい画面作成はReference Linkを参考にしてください。ここでいくつか重要な設定のみを紹介します。

Label

Label部品の表示を変更するために設定するFieldを説明します。

cdpRoutingに適切な変数に割り当ててください。

Lamp

Lamp部品のON/OFF色をトリガーするために設定するFieldを説明します。

cdpStyleRoutingに適切な変数に割り当ててください。

Button

最後はButton部品をクリックしたあと変数の現在値を変更する設定を説明します。

CDPBaseButtonMsgでは以下の設定をアプリケーションに合わせて設定しましょう。

  • cdpRouting:現在値を変更したい変数
  • cdpParameter:書き込むの値

Download

最後はプロジェクトを横河電機のert3とSeeedStudioのRecomputer R1025を同時にDownloadしましょう。

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

シェアする

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

フォローする