現在、OPC LabsのQuickOPCライブラリーを使用しています。私の現在の目的は、Matrikon Simulation OPCサーバーから項目値を読み込むための.NETコンソールアプリケーションを作成することです。QuickOPCを使用してリモートOPCサーバーを接続します。
シミュレーションサーバは、使用可能なIPアドレスを持つリモートマシン上で実行されています。このリモートマシンにログインするには、ユーザ名とパスワードを入力する必要があります。
次のように私の現在のコードは次のとおり
NetworkSecurity networkSecurity = new NetworkSecurity(UserName, Password, MachineName);
ServerDescriptor serverDescriptor = new ServerDescriptor("\\\\xxx.xxx.xxx.xxx\\Matrikon.OPC.Simulation.1", networkSecurity);
serverDescriptor.Scheme = "opcda";
DAItemDescriptor itemDescriptor = new DAItemDescriptor(ItemID);
Console.WriteLine(client.ReadItemValue(serverDescriptor, itemDescriptor));
次のように例外がある:
例外:エラーコード-1073442759 (0xC0049039)OCC urredとOPCの動作不良、由来 'OpcLabs.EasyOpcRaw.DataAccess.RawEasyDAClient'インテルの例外 には、この問題の詳細が含まれています。内部例外:Noメソッド を使用してProgIDをCLSIDに変換できます。
私はCLSID
ServerDescriptor("\\\\xxx.xxx.xxx.xxx\\{F8582CF2-88FB-11D0-B850-00C0F0104305}", networkSecurity);
を使用しようとすると、例外が次のようになります。
例外:エラーコードとOPCの動作不良-2147024891 (0x80070005と) からOCC urred、発信元'OpcLabs.EasyOpcRaw.DataAccess.RawEasyDAClient'。インテルの例外 には、この問題の詳細が含まれています。内部例外:アクセスが拒否されました。
私はQuickOPCメーカのOPC Labsを代表しています。ここでは他のユーザーの回答とコメントに示されているとおり、これはDCOMのセキュリティ上の問題です。元のエラーメッセージを説明するために、OPCEnumメソッドが機能しない場合、QuickOPCは、いわゆるリモートレジストリを使用してProgIDを解決しようとします。メソッドが成功しなかった場合は、このエラーメッセージが表示されます。とにかくと、実際のOPC通信のためのあなたがしますまだDCOM - あなたの管理者がDCOMを有効にするために不本意であれば、彼は最も可能性が高いだけでなく、リモートレジストリを有効に消極的になります。 – ZbynekZ
@ZbynekZご返信ありがとうございます。 OPCクライアントをサーバーの同じマシンにインストールすることに決めましたが、答えは間違いありません。したがって、DCOMを有効にせずに正常に動作します。 – Christopher