Project#Setup Security OPCUA Connection wtih TwinCAT TF6100 x Keyence KV8000

今回の記事はKeyence KV8000とTwinCAT TF6100でOPCUA Security接続する手順を紹介します。こちらは今回の構成です。最初はUaExpertからKeyence KV8000にNon Security Connectionで接続し、。そのあとはOPC UA CPP ServerとTwinCATをSecurity Connectionで接続する。最後はTwinCAT3とKeyence KV8000をTwinCATのSecurity Connectionで接続します。


Reference Link

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

Video-Japanese Version

Video-English Version

Version

注意するのはKV StuidoでOPC UA Server使用するのにVersionは11.5以上する必要があります。

Keyence Side

New Project

File >New project で新規ブロシェットを作成します。

Project name を入力し、ok します。

なんかバージョンアップしたらoperation recording というツールがついてきます。とりあえず無視なので、Set later します。

Yes でunit Editor を起動します。

Unit setting

Unit Editor 起動したらこのようなハードウェア構築画面にかわります。そこでモジュール追加やパラメータ設定などを行うことが可能です。

CPUをクリックするとで右の画面で細かい設定します。

IP Addressing

まずはIpアドレスから設定します。Base >IP address とsubnet mask をアプリケーションに合わせてください。

OPC UA

次はOPC UA Server settings でopc ua serverを設定します。

OPC UA server enabled のdrop list からenable してください。

Opcua server を有効にすることによって、第三者からCPU の変数にアクセスできるようになりますが、よろしいですか?と。 OK て進みます。

Endpoint URL が表示されるようになり、こよlink はあなたのキーエンスCPU のOPC UA server のアクセスurl です。

Security Setting

OPC UA server settings でセキュリティ関係の細かい設定ができます。

セキュリティポリシー、アクセス権限、user などを設定できます。

設定完了しまらclose で保存します。

OPCUA Variables

OPC UA server が構築OKしたら、つぎはopcua server の変数を用意します。

Unit configuration >Variable をクリックします。

気がつくかもしれませんが、OPA UA が追加されました。

いくつかの変数を追加します。

右にあるopcua はprivate、InOut、Output の三種類でございます。

Private はCPU 内部(それでもセキュリティ設定によりアクセス可能です)

  • INOUT は読み書きも可能な変数。
  • OUT は読み出しのみの変数になります。

それで定義しました。

Transfer to PLC

今度はプロジェクトをCPU に転送します。

Monitor/Simulation > Transfer to PLC -> Monitor mode をクリックします。

Continue sending で続きます。

うん。KV8000 のfirmware が古いのでアップデートする必要があります。

Firmawre update

Tool>Functional version validation >PLC します。

Update system program をクリックします。

Up のcheckbox に入れます。

Update ボタンを押せるようにのり、firmware を転送します。

Firmware update すると、中のデータ全部なくなりますが、よろしいでしょうかって。

Yes で進みます。

丁度私のCPU はRUN mode なので、program mode を変更する必要があるようです。

しばらく待ちます‥

よし、アップデート完了。

Check it

もう一回確認しますと、CPU のversion は2.5になってます。

Transfer Again!

もう一回転送してみます。

Select all ですべての要素を選択>execute で実行します。

Certification の話しはこれから書きますので心配しないでください。

今のはCPU 内部にはcertification ないので生成しCPUに転送しますか?と。

Yesします。

Certification の情報を入力します。

よし、これでok です。

Export certificate and private key のcheckbox をいれ、ok で完了。

.der と.key.bin がexport されました。

Test1- Connection test with UaExpert

ではtwincat3 始める前にまずkeyence のopc ua server 機能してるかどうかをチェックします。UAEXPERTを使用します。

プラスボタンでサーバーを追加します。

Custom Discovery >Double click you add server のところでダブルクリックしサーバーを追加します。

先ほどキーエンス側で設定したendpoint をそのまま貼り付けます。

KV OPC UA Server が見つかるはずです。

サーバーをダブルクリックしセキュリティ接続方法を選べます。

接続テストだけなのでNone で行きます。

OPC UA Server が追加されました。

Connect Server で接続します。

Certification を信頼しますか?って聞かれます。Trust Server Certificate をクリックしContinue します。

キーエンスのopc ua server と繋がりました。

さきほど定義したglobal 変数をUAEXPERT のdata access view にdrop します。

それらのnode の現在値、データ・タイプなどの情報を一覧できます。

Security Connection?

OPCUAはIndustry4.0の中で急成長した大きな原因の一つはセキュリティの統一だと私は思っています。OPC UA通信のメッセージから盗聴や改ざんを守るために、通信のセキュリティポリシーを設定できます。セキュリティポリシーはといのは、署名と暗号化のありなしとそのアルゴリズムの組み合わせのことです。

  • 署名というのは、証明書とデータの正当性を保証するために付けられた暗号化された情報です。
  • 暗号化というのは、データの送受信のとき、途中で第三者による盗聴や改ざんから守るために、アルゴリズムで変換するものです。

OPC-UAベースの通信でセキュリティを2つに分ける大きな部分があります。

  • Transport Layer
  • Application Layer


一つのOPC-UA Serverは複数のEnd Pointを提供しておりClient側が接続先を選ぶことできます。そのEnd Point Url文字ベースでどんなセキュリティ機能がが必要なのか示しています。(セキュリティMode・Policyなど)、Client側は必ずその条件を満たさなければなりません。

例えば、Transport LayerではEnd-pointが署名と暗号化したPackaget求めるとか、

Application LayerではUser nameとPasswordが求められるなど。

Transport LayerではClient/Serverで証明書の確認で”信頼できる”の通信関係構築から成り立ちます。もちろんApplication Layerでは先にもいった通り、User 認証でも可能です。

Security Policy

Security Policyというのはデータを交換するとき、署名と暗号化のありなしと、そのアルゴリズムの組み合わせです。

(Noneで設定すればセキュリティ機能なしでも繋がりますが、あまり推奨しません。)

Server Certification

Server CertificationはOPC-UA Server自身を証明するものだと思ってください。もしセキュリティ機能を使用する場合は、ClientがServerのCertificationを登録する必要があります。

Certificate Exchange

こちらは実際証明書認証するときの流れになります。DefaultでTwinCAT OPCUA ServerとClientはそれの流れのためにSelf-Signed certificationを自動的に生成します。

Step1:OPC-UA Server Generate the Certification

それはKV-Studioだけの話ではありません。KV StudioからOPC-UA Server機能を有効化すると、Self-Signed certificationが自動的に生成され、KV8000に転送されます。


Step2:Transfer the Server Certification to the Client Side

次はそのCertification FileをClient側に転送します(難しそうに言いましたが、単にServer CertificationをCopyしCleint側のFolderに貼り付けるだけです。)

Step3:Client try to connect the OPC UA Server

ClientがServer Certificationと自分のClient Certificationを使用しOPC-UA Serverに接続します。

Step4.1 Trusted it!

もしServerがそのClient Certificationを信頼し、”Trusted” Folderに移動すればOPC-UA接続が許可されます。

Step4.2 If no Server Certification..

たとえClient のCertificationがTrusted Folderにいて、Client自体がServer Certificationなければ接続できません。

Step4.3 if Certification not in trusted Folder

逆にClient側はServer CertificationがあってもClient CertificationがServerのTrusted Folderにいなければ、それでも接続できません。

Step4.4 trusted And rejected Folder

ClientのCertificationはこのように\PKI\CA\trusted\certsやPKI\CA\rejected\certsに格納されています。極端に言うと、PKI\CA\rejected\certsのCertificationをそのままCopy pasteeでPKI\CA\trusted\certs Folderに移動すれば接続が成功します。

Test2- Beckhoff TwinCAT3 Connect with UACPP OPCUA Server

Configuration

実際Keyence KV8000のOPC-UA Serverと接続する前にはまずUA-CPP OPCUA ServerとBeckhoff TwinCAT3 TF6100 セキュリティ接続してみます。

Server Certification Structure

CPP OPC-UA ServerとSecurity接続するにははいつくのFolderの役割を把握しましょう。

pkiserver\own\certs

そのFolderが保存してる.der fileはSever自身であることの証明書です。先程KV StuidoからCertification がExportされたこと覚えていますか。まさに同じ役割です。

pkiserver\own\private

そのFolderは保存してる.der fileはSever自身であることの証明書です。先程KV StuidoからCertification がExportされたこと覚えていますか。まさに同じ役

そのFolderに保存してる.pem Fileはデータを暗号化するために使用するPrivate Keyで、そのKeyは絶対公開しないでください。

pkiserver\trusted\certs

そのFolderは保存してる.der fileは信頼してる接続Clientの証明書の保存先です。

pkiserver\rejected\certs

そのFolderは保存してる.der fileは接続拒否するClientの証明書の保存先です。

TwinCAT3 OPCUA Client Structure

次はTwinCAT3側で、Folder名はServerとまったく同じです。

Client\PKI\CA\own\certs

そのFolderは保存してる.der fileはClient自身であることの証明書です。先程KV StuidoからCertification がExportされたこと覚えていますか。まさに同じ役割です。

Client\PKI\CA\own\private

そのFolderに保存してる.pem Fileはデータを暗号化するために使用するPrivate Keyで、そのKeyは絶対公開しないでください。

Create your own certification!

もしTwinCAT DefaultのCertification Fileを使いたくないなら、UaExpertから証明書を生成することもできます。UaExpertを立ち上げ>SEっちんgs>Manage Certificatesをクリックします。

Create new Application Certificateをクリックします。

個人情報を入力しOKします。

念のためにReflashボタンで画面更新します。

Open certificate Locationボタンで証明書のDirectoryを移動します。

Pki/own/certsのuaexpert.der は生成した証明書になります。

Start the OPC-UA CPP Server

OPC-UA CPP Serverを立ち上げます。opc.tcp://yourservername:48010はそのOPC-UA CPP ServerのEnd Point Urlです。

TwinCAT3 Side

次はTwinCAT3側を設定します。

Add Virtual OPC-UA Device

I/O>Devices>Add New Itemします。

OPC UA>Virtual OPC UA Deviceを選び>Okします。

それでOPA UA Virtualが追加されました。

Add OPC-UA Client IO

次はOPC-UA Client IOを追加します。Device 1>右クリック>Add New Itemします。

OPC UA Client[Module]を選び>Okします。

OPC-UA Client IOが追加されました。

Settings1- Endpoint Configuration (None)

OPC-UA Client IOをクリックし、Endpointの設定で、Security Policyなしで接続します。

先OPC-UA CPP ServerのEndpointを貼り付けて、Security PolicyとSecurity ModeをNoneに設定します。

Add Node

Select Endpointをクリックします。

opc.tcp://yourname:48010[None;None;Binary]をCheck入れてOKします。

Add NodesボタンでServerをアクセスします。

Select Nodeの画面が表示されればアクセス問題ないです。

Dynamic>ScalarのいくつのNodeをCheck入れ>Enable Write のCheck入れ>OKします。

Client #1の下にNodeが追加されました。

Download

Activate ConfigurationでHardware ConfigurationをDownloadします。

OKします。

TwinCAT RuntimeをRun Modeに変えます。

歯車ICONは緑に変わったらOkです。

Test it!

Client #1>先ほど追加したNoe>Inputs>Valueをクリックします。

1・0で変換し続けることがわかります。

もう1つの変数をみてみましょう。それでもずっと変化し続けます。

Settings2 – Endpoint Configuration (Security Connection)

次はセキュリティ接続を構築します。Select Endpointをクリックします。

opc.tcp://yourname:48010[SignAndEncrypt;Basic256Sha256;Binary]をCheck入れ、Okします。

Security PolicyとSecurity Modeも反映されます。

Add Node

Add NodeボタンでOPC-UA CPP Serverに[SignAndEncrypt;Basic256Sha256;Binary] Modeアクセスしてみます。

Something odd happened while connecting!のエラーが表示されます。

Details(1)で詳しい情報を確認します。

BadSecurityChecksFailed.–> Check Trustlist & Certificate on Server、つまり証明書に問題がありますね。

Add Certification in TwinCAT3 Side

以下のPathにあるサーバーの自身証明書をCopyします。

C:\ProgramData\UnifiedAutomation\UaCPPServer\pkiserver\own\certs\uaservercpp.der 

そしてTwinCATの以下のDirectoryに貼り付けます。

C:\TwinCAT\Functions\TF6100-OPC-UA\Win32\Client\PKI\CA\trusted\certs\uaservercpp.der

つまり、OPCUA CPP SERVERの自身証明書をTwinCAT3のtrusted List(信頼リスト)に移動することです。それより、TwinCAT3 ClientはOPCUA CCP Serverを信頼します。

Connect to UAServer

もう一度接続します。

今度また同じエラーが出てきますね。OKで警告を閉じます。

Add TwinCAT3 Certification into rejected folder

UaCPPServer/pkiserver/rejectedのFolderに一つの証明書が入っています。基本的には、Serverは初めて接続するClientのCertification に対して拒否します。そして拒否されたClientのCertificationはこのDirectoryに格納されます。

つまりいまTwinCAT3 OPC-UA CPP ClientがOPC-UA CPP Serverにアクセスしようと思ってます。でもOPC-UA CPP Server trusted folderにTwinCAT3 ClientのCertificationがないので、接続を拒否し、TwinCAT3のCertification をrejected/certs/に転送します。

そのRejectedされたCertification を/UaCPPServer/pkiserver/trusted/certsに転送します。

つまりいまrejected/certs/に格納されたTwinCAT3 Certificationをtrusted/certs/に移動し、TwinCAT3の接続は信頼できるものだと認定します。

もう一度Add Nodesします。

Select Node画面が表示されました!中にいくつのNodeを選択し、Okします。

Client#1に複数のNodeが追加されました。

Add Certification inTwinCAT3 Side

最後はTwinCAT3側にあるC:\TwinCAT\Functions\TF6100-OPC-UA\Win32\Client\PKI\CA\rejectedのServer証明書を

C:\TwinCAT\Functions\TF6100-OPC-UA\Win32\Client\PKI\CA\trusted\certsに転送します。

そうすればServerとClientの信頼接続関係ができます。

Download

Activate ConfigurationでHardware ConfigurationをDownloadします。

OKします。

TwinCAT3 RuntimeをRunに切り替えます。

歯車ICONが緑になればOKです。

Test It!

Nodeを確認したところ、変換し続ければもう接続OKです。

Test3-Play with Keyence KV8000

OPC-UA CPP Serverとセキュリティ接続OKになったら、いよいよKeyence KV8000のOPCUA Serverとつながってみましょう。

Keyence KV8000 Side

Security Connection Settings

Unit Editorを開いてOPC UA Server settings>OPC UA server settingsの…ボタンをクリックします。

Security Policy NoneとAutomatic trust of client certificates をDisableします。

Program

先程追加した変数を使って簡単なプログラムを作成します。Cycleことに変化し続ければ、接続状態もすぐ確認できます。

Check It

UaExpertからアクセスしてみると、KV OPC UA ServerにもNoneのセキュリティ ポリシーが選択できなくなります。

Certification Setting

KV StuidoをMonitor Modeに切り替え、Unit configuration>[0] KV-8000で右クリック>OPC UA server monitorをクリックします。

その画面からKV 8000の証明書管理できます。

まずUpdateします。

もしくは現在の証明書を破棄し新しい証明書を生成します。

Client Side

Certificate のDrop ListからClientを選択します。

そちらではいま登録された証明書を一覧できます。

TwinCAT3 SIde

Endpoint

先と同じ操作でもう1つのOPC UA Client IOを追加し、EndpointのSettings Tabを開きます。

Select Endpointボタンをクリックします。

Endpointsをopc.tcp://yourname[SignAndEncypt,Basic256Sha256Binary]をCheck入れ、OKします。

Connect to KV8000 OPC UA Server

Add NodesボタンでKeyence KV8000のOPC UA Serverをアクセスします。

証明書が信頼されてれないとTwinCAT3から警告が出てきます。

TrustボタンでServerの証明書を信頼します。

またエラーが出てきました。

エラーも同じですね。Certificationに問題ある、と。

C:\TwinCAT\Functions\TF6100-OPC-UA\Win32\Client\PKI\CA\trusted\certsにkeyenceのServer Certificationがもう格納されますので、つまりTwinCAT3側はOKです。

つまりKV-8000からServer CertificationをTwinCAT3に転送し、そしてTwinCAT3がKeyence KV8000の証明書を信頼します。

KV Stuidoに戻り、OPC UA server monitorを起動します。CertificateをClientに選択し、RejectedのTabをみたらBeckhoff TwinCAT3の証明書が格納されています。それは最初のセキュリティ設定のときCertificationの自動認証機能をDisbaleしたからです。

Add to certification in Server

そのCertificationを選び>Trustします。

それでOKです。

Beckhoff TwinCAT3のCertificationがTrustedになりました。

Try Again

Add Nodesでもう一度試してみます。

接続できるようになりました!

いくつかのNodeを選び、Enable WriteのCheckbox入れ、OKします。

Client#1に複数のNodeが追加されました。

Download

Activate ConfigurationでHardware ConfigurationをDownloadします。

OKします。

TwinCAT RuntimeをRun Modeに変えます。

歯車ICONが緑に変わったらOkです。

Test it!

Read

KV-8000のNode現在値を確認してみます。

InputにKV8000 OPC-UA ServerのNode 現在値がきました。

そしてKeyence側に”Ouput”だけ設定した変数は、TwinCATにはOutputがなくなります。

それはOutputは読み専用だからです。

Write

次はKV-8000のOPC UA server のNodeの現在値を変更してみます。そのためにClient#1>Outputs>Write Enableをクリックします。

Trueに変更します。

次はValue[2]をクリックします。

適当な与えをかえます。

最後はKV Stuidoから確認してみます。Monitor/Simulator>Registration monitor windowをクリックします。

Devicesにその配列変数を入れれば、現在値が書き込まれたことがわかります。

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

シェアする

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

フォローする