0

OpenOPC ライブラリを使用して OPC サーバーに接続しています。ローカルの Matrikon OPC サーバーからは正常に読み書きできますが、別のマシン (別のホスト) から読み込もうとするとエラーが発生しますPyro.errors.ProtocolError: connection failed

接続用のコードはこちらです。

import OpenOPC

class OPC_tag_reader:

    opc = OpenOPC.open_client('<remote host>')
    #breaks here!!!!

    def __init__(self):
        print 'connecting to server'
        self.opc.connect('Matrikon.OPC.Simulation.1', '<remote host')

コードはコンストラクターに到達しません。

ありがとう!

4

1 に答える 1

0

OPC は通信に DCOM を使用します。この問題を解決するには、次の手順を実行する必要があります。

Windows の [スタート] メニューから [ファイル名を指定して実行] を選択して DCOM 構成ユーティリティを実行し、dcomcnfg.exe と入力して [OK] をクリックします。2.[コンポーネント サービス]、[コンピューター] を展開し、[マイコンピューター] を右クリックして、[プロパティ] を選択します。

タブの既定のプロパティを選択し、「このコンピューターで分散 COM を有効にする」にチェックを入れます。デフォルトの認証レベルは接続であり、デフォルトの偽装レベルは識別である必要があります。注: [参照の追跡に追加のセキュリティを提供する] はオフにする必要があります。

次に、[COM セキュリティ] タブを選択し、[アクセス許可] セクションで [デフォルトの編集] ボタンをクリックし、[追加] ボタンをクリックして、ユーザー名 (サーバー上のユーザー名とまったく同じ、新しく作成されたユーザー名) を追加します。新しいユーザーを追加した後、それを選択し、下のボックスでチェックボックスをオンにして、ローカル アクセスとリモート アクセスの両方を有効 (許可) にします。

最初のテスト目的で、全員をアクセス許可リストに含めます。

サーバーがあるマシンで、OpcEnum.exe をファイアウォールの例外リストに追加します。

クライアント マシンのファイアウォールで、ポート 135 の着信接続を許可します。

注: 最初のテストでは、サーバーとクライアントの両方でファイアウォールを無効にします.. :)

opc サーバーが実行されている Windows ユーザー アカウントのユーザー ID とパスワードを書き留め、リモート マシンで同じユーザー名とアカウントを作成します (これは、2 つのコンピューター間の信頼を確立するためです)。

于 2014-10-04T17:10:51.263 に答える