OPC Foundation 서버의 OpcNetApi.dll
을 사용하여 OPC DA 서버와 통신합니다.닫기 OPC DA 연결
이 라이브러리 또는 유사한 라이브러리를 사용하는 서버에서 현재 활성화되어있는 특정 연결을 죽일 프로그램 방식이 있는지 궁금합니다.
OPC Foundation 서버의 OpcNetApi.dll
을 사용하여 OPC DA 서버와 통신합니다.닫기 OPC DA 연결
이 라이브러리 또는 유사한 라이브러리를 사용하는 서버에서 현재 활성화되어있는 특정 연결을 죽일 프로그램 방식이 있는지 궁금합니다.
나는 긍정적이지 않지만, 당신이 요구하는 것이 디버거없이 항상 가능하다고 생각하지 않습니다. 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
답장을 보내 주셔서 감사합니다. 우리가 in-proc에서 말하고 있다고 가정 해 봅시다. 또한 스레드를 제쳐 놓고 막 으면, 인터페이스에서 수 또는 활성 연결 목록을 어떻게 얻을 수 있습니까? –
가 OPC 서버에 이러한 연결의 가입 위치 :
는 여기에 몇 가지 자세한 내용입니까? 이 경우 프로그램 적으로 제거하려고 시도 할 수 있습니다. – jdecuyper
나는 그것이 구독이라고 생각하기 시작했다. 동료는 모든 연결을 종료 할 수 있다고했지만 서비스를 다시 시작하면 즉시 다시 연결되었습니다. 나는 내가 뭔가 잘못하고 있다고 생각한다. 그러나, 내 질문에 대한 대답은 여전히 배우기에 재미있을 것입니다. –
OPC DA 서버에서 데이터를 검색하는 데 사용하는 코드를 공유 할 수 있습니까? 그것은 우리가 무엇이 잘못되었는지 이해하는 데 도움이 될 수 있습니다. – jdecuyper