2014-09-29 5 views
0

OpenOPC 라이브러리를 사용하여 OPC 서버에 연결합니다. 내 로컬 Matrikon OPC 서버에서 성공적으로 쓰고 읽을 수 있지만 다른 컴퓨터 (다른 호스트)에서 읽을 때 오류가 발생합니다. Pyro.errors.ProtocolError: connection failedPyro.errors.ProtocolError : 연결에 실패했습니다.

내 연결 코드는 여기에 있습니다.

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') 

코드가 생성자에 전달되지 않습니다.

감사합니다.

+0

dcom 및 방화벽 설정을 설정 했습니까? opc에 연결하면 클라이언트와 서버 컴퓨터 모두에서 Dcom 설정을 사용하도록 설정해야합니다. –

+0

이 작업을 수행하지 않았 으면 변경할 설정을 요약 할 수 있습니까? –

답변

0

OPC는 통신에 DCOM을 사용하므로이 문제를 해결하려면 다음 단계를 수행해야합니다.

Windows 시작 메뉴에서 실행을 선택하고 dcomcnfg.exe를 입력하여 DCOM 구성 유틸리티를 실행하십시오. 확인을 클릭하십시오. 2. MyComputer에서 구성 요소 서비스, 컴퓨터 및 RightClick을 확장하고 속성을 선택합니다.

탭 기본 속성을 선택하고 "이 컴퓨터에서 DCOM 사용"을 선택하십시오. 기본 인증 수준은 연결이어야하며 기본 가장 수준은 식별이어야합니다. 참고 : 참조 추적에 대한 추가 보안을 선택하지 않아야합니다.

이제 COM 보안 탭을 선택하고 액세스 권한 섹션에서 기본값 편집 단추를 클릭하고 추가 ... 단추를 클릭 한 다음 사용자 이름 (사용자 이름과 완전히 동일한 새로 작성한 사용자 이름)을 추가하십시오 서버). 새 사용자를 추가 한 후 상자를 선택하여 로컬 액세스와 원격 액세스를 모두 허용 (허용)하십시오.

초기 테스트 목적으로 Everyone in the Grant Access 목록이 포함됩니다. 서버가 클라이언트 시스템의 불 벽에 방화벽 예외 목록

에 OpcEnum.exe 추가되는 시스템에서

포트 135 들어오는 coneciton

참고 수 : 초기 테스트를 위해 모두에 방화벽을 해제 서버 및 클라이언트 .. :)

opc 서버가 실행되는 Windows 사용자 계정의 사용자 ID와 암호를 기록하고 원격 시스템에서 동일한 사용자 이름과 계정을 만듭니다 (이는 다음 사이의 신뢰를 설정하는 것입니다. 두 대의 컴퓨터)

+1

그는 OpenOPC를 사용하여 DCOM을 완전히 피할 수 있습니다. 이 대답은 부적절합니다. – ESala