2016-08-22 2 views
0

OPC Foundation 서버의 OpcNetApi.dll을 사용하여 OPC DA 서버와 통신합니다.닫기 OPC DA 연결

이 라이브러리 또는 유사한 라이브러리를 사용하는 서버에서 현재 활성화되어있는 특정 연결을 죽일 프로그램 방식이 있는지 궁금합니다.

+0

가 OPC 서버에 이러한 연결의 가입 위치 :

는 여기에 몇 가지 자세한 내용입니까? 이 경우 프로그램 적으로 제거하려고 시도 할 수 있습니다. – jdecuyper

+0

나는 그것이 구독이라고 생각하기 시작했다. 동료는 모든 연결을 종료 할 수 있다고했지만 서비스를 다시 시작하면 즉시 다시 연결되었습니다. 나는 내가 뭔가 잘못하고 있다고 생각한다. 그러나, 내 질문에 대한 대답은 여전히 ​​배우기에 재미있을 것입니다. –

+0

OPC DA 서버에서 데이터를 검색하는 데 사용하는 코드를 공유 할 수 있습니까? 그것은 우리가 무엇이 잘못되었는지 이해하는 데 도움이 될 수 있습니다. – jdecuyper

답변

0

나는 긍정적이지 않지만, 당신이 요구하는 것이 디버거없이 항상 가능하다고 생각하지 않습니다. OPC는 Microsoft COM을 기반으로합니다. COM을 구현할 수있는 두 가지 방법이 있습니다 : in-proc 및 out-of-proc. 선택은 OPC 서버 공급 업체에 따라 다릅니다.

in-proc 구현을 사용하면 OPC 서버와 동일한 시스템에서 OPC 클라이언트를 실행하는 경우 OPC 서버는 OPC 클라이언트의 메모리 공간에 직접로드되는 dll입니다. 이 dll은 CreateGroup, ReadAllItems 등과 같은 OPC 인터페이스를 노출합니다. 이제는 다른 메커니즘 (명명 된 파이프, TCP/IP 등)을 통해 실제 데이터를 얻고 있지만 OPC 서버 구현에 따라 달라집니다. 이 OPC 서버를 실제로 강제 종료하는 유일한 방법은 OPC 클라이언트를 종료하거나 OPC 클라이언트 프로그램을 얻는 것입니다. 물론 OPC 클라이언트 또는 OPC 서버는 이미 종료 메커니즘을 구현했을 수도 있지만 보증 할 수는 없습니다.

out-of-proc OPC 구현 인 경우 OPC 서버는 별도의 실행 파일로 실행되므로 실행 파일의 이름을 찾아 종료 할 수 있습니다. (regedit에서 OPC 서버의 이름을 검색하여 해당 실행 파일 이름을 찾을 수 있습니다). 올바르게 기억하면 OPC 서버를 설계하여 모든 클라이언트가 하나의 실행 파일을 공유하도록하거나 각 OPC 클라이언트가 자체 실행 파일 인스턴스를 얻도록 할 수 있습니다.

OPC 서버를 원격으로 실행하는 경우 in-proc 구현에서 RPC로 연결되는 경우 스텁 프로그램 내부에로드 될 수 있습니다. RPC가 통신하는 포트를 차단하면 잠시 후에 대부분의 클라이언트가 연결을 끊을 것이라고 생각하지만, 나중에는 다시 연결하려고 시도하지 않습니다. https://www.opcsupport.com/link/portal/4164/4590/Article/711/May-I-get-a-In-Proc-and-Out-Of-Proc-explanation

+0

답장을 보내 주셔서 감사합니다. 우리가 in-proc에서 말하고 있다고 가정 해 봅시다. 또한 스레드를 제쳐 놓고 막 으면, 인터페이스에서 수 또는 활성 연결 목록을 어떻게 얻을 수 있습니까? –