2017-02-21 37 views
1

私は2つのWindowsサービスを提供しています.1つのサービス(service1)が2つのOPC-UAサーバーに接続しています。他のWindowsサービス(service2)は、OPC-UA Foundationの.NET参照スタックと同じ接続コードを持つ同じ2つのOPC-UAサーバーに接続します。OPC-UA BadSecureChannelClosed

Service1は、両方のOPC-UAサーバーに接続でき、データを正常にポーリングします。 Service2のデプロイ時に、Service2は両方のOPC-UAサーバーに接続して値を読み取ることもできます。この時点ですべてがうまくいった。

しかし、今やしばらくしてから、コードを変更することなく。 Session.Createを実行すると、ServiceResultException BadSecureChannelClosed(2156265472)で応答するだけで、Service2はOPC-UAサーバーのいずれかに接続できなくなります。

トラブルシューティングの開始:私たちのカスタマーサイトでは、本番環境で同じ設定のセットアップを実行するテストサーバーもあります。つまり、Service1とService2もテストサーバー上で実行され、 OPC-UAサーバー。

テストサーバーでサービスを無効にすると、Service2のBadSecureChannelClosedエラーが消えてしまいます(ただし、Service2は2台のOPC-UAサーバーのうちのもう1台と通信できます)。運用サーバー上ですべてが正常に動作するようにする。

これは、OPC-UAサーバーにセッションと接続の制限があるのか​​疑問に思います。 OPC-UAサーバーは、SINUMERIK 840dタイプです。私はSiemensにセッション数などのトラブルシューティングのためにServerDiagnosticsオブジェクトを有効にできるかどうか尋ねましたが、これは不可能であると回答しました。私はこのオブジェクトが有効にするために必須であると思った?

私には、これを引き起こす可能性のあることのヒントと、接続の作成中に考えなければならない制限や事柄がありますか?何がユニークである必要がありますか?アプリケーション名? SessionName?このような - 一見 "ランダムな" BadSecureChannelClosedエラーを引き起こす原因は何でしょうか。 Create Session呼び出しでupdateBeforeConnect = trueを使用していることに注意してください。そして私はハードコードされたユーザー名とパスワードでUserIdentityを使用します。

もう一つの奇妙な症状はUaExpert(数週間前に存在しないエラー)とそれに接続するときBadSecureChannelClosedで応答し、このOPC-UAサーバーのために、それはディスカバリー・エラーを与えることである。

16:58:41.806 |自動更新|現在のバージョン情報を取得中にエラーが発生しました:Host updates.unified-automation.comが見つかりません。

16:58:35.404 |ディスカバリーウィジェット|ディスカバリopc.tcp上のGetEndpoint://192.168.0.200:4840 failed(BadCommunicationError)

16:58:35.401 |ディスカバリーウィジェット| Discovery FindServers on opc.tcp://192.168.0.200:4840 failed(BadCommunicationError)

答えて

2

現在のSinumerik OPC UAサーバーはバグがあり、正しくエンコードされたExtensionObjectを提供していません。 Siemensからサーバへのアップデートをリクエストする必要があります。

UaExpertで問題なくアクセスできます.UaExpertは、不正にエンコードされたExtesionObjectをデコードできます。これにより、最初はそのようなバグのあるバージョンをリリースできるようになりました。

EDIT:ExtensionObjectに関する注意:ServerStatusは、完全な構造として読み取ろうとすると、ExtensionObjectとして転送されます。また、PublishResponse(サブスクリプションデータの提供に使用)には、ExtensionObjectとしてエンコードされたデータの変更が含まれます。したがって、ServerState経由でのみステータスを監視すれば、おそらく動作します。しかし、サブスクリプションは、とにかく、動作しません。

+0

ありがとうございます。 ExtensionObjectについては、ServerDiagnosticsオブジェクトを読むことはできますが、データを見るためには有効にできません。 ServerDiagnosticsを有効にするために他の設定を行う必要があるかどうか知っていますか?もしそうでなければ、どうすれば私が接続したセッション数などを見ることができますか? enabledFlagにtrueを書き込もうとすると、単に書き込めないと表示されます。画像を参照してください。https://cdn.pbrd.co/images/BlFt52NrP.png –

+2

サーバは診断を有効にすることをサポートする必要はありません。 –

+0

ExtensionObjectについての注釈を追加しました。これはもう少し問題を説明しています。 –

関連する問題