4

Windows C# で OPC クライアントを開発しています。私はコードを開発し、サンプリングとイベント ベース (OnDataChange) で OPC 項目を読み取りました。ローカル マシンで作業している場合、コードはサンプリングと OnDataChange の両方で正常に動作しますが、リモート OPC サーバーからデータを読み取ろうとすると、サンプリングは正常に動作しますが、イベント ベースのプロセスでデータを取得できません。OPC サーバーに接続できますが、サブスクリプションを追加するとエラーが発生します。

HRESULT : 0x80040202。

       group1.DataChanged += new DataChangeEventHandler(this.DataChangeHandler);
               group1.AdviseIOPCDataCallback();//exception HRESULT : 0x80040202.

OPCサーバーが接続され、グループも登録されましたが、データの読み取り時に例外が発生しました。

4

3 に答える 3

3

通常、問題は、 を使用するAdvise()と、サーバーがクライアントに DCOM 接続を確立することです (標準の DCOM 接続ポイント)。これを可能にするには、クライアントを適切に設定する必要があります (つまり、サーバーがクライアント上でコードを実行できるようにするための適切なセキュリティ設定)。

このページを読む必要があります: http://www.softwaretoolbox.com/xpsp2/、OPC の使用のために DCOM を適切にセットアップする方法に関する多くの推奨事項をカバーしています。ここには多くのセキュリティ上の懸念があります。Software Toolbox サイトには、多くの優れた情報 (およびビデオ) があります。それでも問題が解決しない場合は、すべての DCOM ループをジャンプすることなくリモート OPC を実行できる OPC トンネリング製品に投資することをお勧めします。

同じ問題が発生するのに OPCDA.NET を使用している必要はありません。任意の OPC クライアントを使用して、最初にリモート サーバーで動作させることができます。次に、すべてを OPCDA.NET に接続する方法を理解することに集中します。OPC Quick Client (Software Toolbox TOP Server demo に付属) をお勧めします。

于 2011-05-17T23:42:59.763 に答える
0

その問題は、サーバーに接続するときに、最初の接続関数を使用する可能性があるためです。server.connect();

代わりに、次を試してください。

server.connect(new Opc.ConnectData(new System.Net.NetworkCredential()));

これは私にとってはうまくいきます。それが役に立てば幸い:)

于 2016-06-11T17:44:23.043 に答える