今回の記事ではCtrlxのOPC UA Appsの使用方法やスムーズに導入できるように説明します。CtrlxのOPC UA Appsは、OPC Unified Architecture(OPC UA)標準に従った標準化された安全な通信を提供し、OPC UAサーバーとして、ctrlX COREはすべての接続されたOPC UAクライアントにすべてのデバイスデータを提供します。一般的なクライアントには、HMI、MEシステム、またはデータ収集システムがあります。
CtrlxのOPC UA Appsには以下の機能がSupportしています。
- OPC UA data access
- OPC UA discovery services including browsing of data
- Encrypted communication
- Handling of certificates
- User identification and authorization
- Access to all data layer information including plc, motion, system and user app data
Configuration
こちらは今回の接続構成です。ctrlXのOPC UA Server AppsはEXOR社のJSmart710MやTwinCAT TF6100 と接続テストを行います。
OPC UA Server Apps
Security
セキュリティー上で考えると、可能であればAes256-Sha256-RsaPssを使用してください。
- SecurityPolicy [B] – Basic256Sha256
- SecurityPolicy [A] – Aes128-Sha256-RsaOaep
- SecurityPolicy – Aes256-Sha256-RsaPss
Endpoints
Default上で以下のEndpointとLogin ・暗号化 Methodの組み合わせの対応ができます。
- Sign –Basic256Sha256
- Sign – Aes128-Sha256-RsaOaep
- Sign – Aes256-Sha256-RsaPss
- SignAndEncrypt –Basic256Sha256
- SignAndEncrypt – Aes128-Sha256-RsaOaep
- SignAndEncrypt – Aes256-Sha256-RsaPss
Certificate management
OPC UAのサーバーとクライアント間の安全な接続は、信頼できる証明書に基づいて実装されます。現在、Self-signed証明書の管理のみがサポートされています。
つまり、OPC UAサーバーとクライアントの間で証明書を手動で交換することになり、クライアントとサーバーが接続を確立すると、証明書が交換されます。サーバーとクライアントは証明書を手動で信頼する操作をする必要があります。
証明書マネージャーを使用するには以下の手順が必要です:
最初に、OpenSecureChannelを使用してセキュリティの接続(SecureChannel)を設定します。証明書は、そのときクライアントからサーバーに転送されます。
サーバーにエラーBadSecurityChecksFailedが発生し、クライアント証明書を拒否リストに入れます。
クライアントの証明書は、Server側が拒否すると表示されます。この証明書は手動で信頼することができます。クライアントもサーバー証明書を信頼する必要があります。
最後はServerとClientが通信確立されました。クライアントは、今やサーバーと安全なOPC UA接続を設定することができます。
Cleintの証明書は、直接証明書マネージャーにアップロードすることもできますが。証明書は名前を変更する必要があります。ファイル名は、SHA1値に対応する必要があります。
- 証明書のFinger Printを使用して命名できます。
- 名前を変更するときに、SHA1のすべての文字を大文字で表示する必要がありま
- ファイルスキーマはSHA1値の大文字化.derです。
Reference Link
http://soup01.com/ja/2023/04/26/post-5674/
http://soup01.com/ja/category/bosch/ctrlx/
http://soup01.com/ja/category/protocol/opcua/
Implementation with TwinCAT TF6100
最初はTwinCAT TF6100と接続テストを行います。
Network Configuration
Virtual Coreは仮想環境で稼働していますのでPort Forwarding の設定が必要になります。Extended tab>Port forwardingを選択します。
こちらは自分のPort Forward設定です。
8022:22,8443:443,8740:11740,48410:48410,2069:2069,2070:2070
If Error..
もしctrlX Virtualcoreがどうしても起動できないなら、以下の項目をチェックしましょう。
- 該当するPortは他のアプリケーションに使用されているか
- 必要ではないアプリケーションを閉じる
- IP Adapterに複数のIP設定を消す
Ctrlx Side
Download Apps
下記のLinkからCtrlx OPC UA ServerのアプリケーションをDownloadしてください。
Installation
RuntimeのWBMにアクセスし、Service Modeに切り替えます。
Press Continueで進みます。
Settings>Appsで開きます。
Install from fileでAppをインストールします。
Installで始めます。
Oview
インストール完了したら左側にOPC UAという項目が増え、中にOverviewやServerなども表示されています。(自分がClientもインストールされたのでClientも表示されます)
Overviewをクリックすると現在CtrlXで稼働してるサーバー状態を確認できます。
- Status:現在状態
- Start Time:Serverが起動された時間
- Session:Serverと接続したSession数
User
CtrlXのOPC UA Serverはセキュリティなしでアクセスできませんので、OPC UA ClientがServerにLogin するときUser名とPasswordが必要です。そのUserがOPC UA Serverにアクセスできるかの権限を確認しましょう。Ctrlx Web Serverの左下にあるSettingsをクリックします。
User & Permissionsを開きます。
Usersをクリックします。
現在設定されたUserを一覧できます。
Actions
User権限の確認や変更はActionの下にある鉛筆ICONをクリックします。
boschrexrothはDefaultで権限の一番高いUserで、いまState=EnabledはつまりそのUserが使用できる状態です。
Oveall permissions
該当するUserの権限を一覧するにはOverall permissionsのTabを開きましょう。
Full accessのCheckboxが入れてるのでboschrexrothはすべての操作が許可されるのイメージです。
Indivdual permisions
Indivdual permisionsでUserに個別の権限を設定することも可能です。
例えば、rexrootのUser 権限ではOPC UA Serverのアクセスが許可されてないので、OPC UA Server accessをCheck入れてください。
Certificaion
OPC UAのServer Client間のセキュリティ通信を成り立たせるには、証明証は必須です。証明証を操作するにはまたSettingsをクリックします。
Certificates & Keysを開きます。
OPC UA Server AppsがインストールされたらCertificatesのところにOPC UA Serverの項目が表示されます
中にはCtrlx 本体のServerと信頼・拒否された証明証を一覧できます。
Ctrlx Project
前回のctrlX プロジェクトをそのまま利用します。
Server Configuration
Ctrlx のOPC UA Server設定を行います。Overview>Serverをクリックします。
Status
Status画面が表示され、現在CtrlXのOPC UA Serverの状態を確認できます。
Endpoint URL:Ctrlx OPC UA ServerのURLになります。
Active Sessions:現在有効したSession数
Status:現在のOPC UA Server状態
Details
下の矢印をクリックするとより詳しいのServer情報を確認できます。
Actions
Actionsの下にある鉛筆ICONをタップすればOPC UA Serverの構成を変更できます。
Setup Server画面が表示されます。
Endpoint
Endpoint Tabではサーバーの接続やセキュリティ設定を行います。
Port
CtrlX OPC UA ServerのPort番号になります。
Security Policies Allow
NoがDefaultですが、今回はYesで設定してみます。つまり非推奨するセキュリティ設定の使用が可能かどうかを設定します。
Security Configuration
各Policyに接続可能なセキュリティ方法の設定です。
ActionにActivatedのメッセージが表示されたら有効の意味で、もう一度クリックすると無効に変わります。
User Token configurations
User Token Policyを設定する場合です。同じくActivatedのメッセージが表示されたら有効の意味で、もう一度クリックすると無効に変わります。
Session
Sessionの最大維持時間やSessionの関連設定できる項目がのっています。
すべて設定が終わったらSaveボタンで設定を保存します。
Restart your runtime
設定を有効にするために、Runtimeを再起動する必要があり、Settingsをクリックします。
Shutdownを開きます。
RestartでRuntimeを再起動しましょう。
TwinCAT Side
次はTwinCAT 側でOPC UA Clientを準備します。
Add OPC UA Client
次はOPC UA Clientを追加します。Devices>右クリック>Add New Itemします。
Deviceを選択し>右クリック>Add New Itemします。
OPC UA>Virtual OPC UA Deviceを選び>OKします。
Configure OPC UA Client
Endpoint URLにCtrlX OPC UA ServerのURLを入れましょう。
opc.tcp://your Ctrlx IP:your portになります。
そしてSelect Endpointをクリックします。
接続に成功したらCtlrx OPC UA Serverで接続できるEndpointが表示されます。
今回はSignAndEncrypt:Basic256Sha256:Binaryを選択します。
そのEndpointを選択した状態でUpdateします。
Add Node
次はAdd NodesでCtrlX OPC UA ServerのNodeを追加してきます。
CtrlX Serverの証明書を信頼していますか?のPopupが出てきます。Trustで進みます。
TwinCATがCtrlX OPC UA Serverと接続するときエラーが発生しました。それはTwinCAT側がCtrlX OPC UA Serverの証明書を信頼しましたが、CtrlX 側ではまだ信頼してないからです。そのエラーを解除するにはCtrlx 側からTwinCATの証明書を”信頼”する必要があります。
Ctrlx Web serverをCheckするとRejctedされた証明証がありました。Inssued for の列にBeckhoff Automationだと書いてて、うん、これは私先CtrlXに渡してた証明証です。
…のボタンをクリックし>TrustでBeckhoffの証明証を信頼します。
Beckhoffの証明証がTrustedに変わってて、それでOKです。
もう一度先ほどと同じ操作をしていきます。Done!Browse succeededのメッセージもあって、CtrlX OPC UA Serverにアクセスできました。
CtrlxのNodeを選択しEnable writeのCheckboxを入れ、Okで完了します。
Client#1の下に先程追加されたNodeが見えました!
Add PLC
PLCを追加します。PLC>右クリック>Add New Itemします。
Standard PLC Projectを選び>Addで進みます。
新しいプロジェクトが追加されました。
Create Node
Name PrefixでDefault名前を設定し、Create Plc Codeで変数やMethodを自動作成します。
GVLsのFolderにGVLが自動作成されます。
Done!Ctrlx のNode全部入っています。
Activate
Activate ConfigurationでHardware ConfigurationをDowloadします。
OKで進みます。
ライセンスが足りない場合はYesでライセンス入力画面に進みます。
セキュリティコードを入れてOKです。
TwinCATをRun Modeに再起動します。
Login
LoginでプログラムをDownloadします。
Yesで進む。
Start
最後はStartボタンでプログラムを起動すればOKです。
Error?
OKだと思ったら、Erro ListからCtrlX OPC UA Serverと繋がりません、証明証をチェックしてくださいとのメッセージがありまして、うん?先Trustedに設定したはずですが…
もう一度CtrlX WEB Serverから証明証を確認すると、もう一枚Rejectedされた証明証がありました。Common NameではTcOpcUa Extenstion Node SelectorとTcOpcUaClientで、TcOpcUa Extenstion Node Selectorは私達がHardware ConfigurationでNode選択し、構築するときに使用するClientとその証明証で、TcOpcUaClientは実際アプリケーションでNodeアクセスするときに使用するClientとその証明証です。
…のボタンからTrustでその証明書を信頼します。
Done!
Result
TwinCAT側から確認するとbConnected=Trueであり、つまり接続成功です。
nStmState
nStmState変数も現在の接続状態を確認できます。現在値は4です。
変数の意味を確認するにはClient>Inputs>Status>StmStateを開きましょう。
4=Polling Modeで、つまりTwinCAT側のOPC UA Clientはいま正常にPolling Modeとして稼働しています。
Implementation with EXOR
次はCtrlX OPC UA ServerをEXOR社のJSmart710Mと接続テストしてみましょう。
Exor Side
Add OPC UA Connection
Configuration>Protocolsから新しいProtocolを追加します。
Drop ListからOPC UA Clientを選択しましょう。
次はConfigurationの…のボタンをクリックしCtrlx OPC UA Serverを接続設定を行います。
もしうまく接続できない場合、設定にある以下の3つOptionsを外してください。
- Hostname validation
- App URI validation
- Time validation
Importer
次はCtrlx OPC UA ServerのTagをEXOR プロジェクトにImportします。
Configurtaion>Tagsを開きます。
Import Dictionaryをします。
Full BrowseでCtrlx OPC UA Serverにアクセスします。
Accept permanentlyで証明書を信頼します。
Ctrlx OPC UA ServerのNodeを選択し>Okします。
Add Tag
Tagをプロジェクトに追加しましょう。
Screen
Tagを確認するために画面にCtrlXと接続してる表示を追加します。
Ctrlx Side
Ctrlx 側からも証明書をTrustすること忘れずに。
Result
Done!