OPC DA (OPC Classic) 데이터 수집을 위한 프로그램을 개발할때 인터넷 상에 여러가지 버젼의 라이브러리가 오픈되어 있지만 OPC Foundation에서 공식 지원하고 있는 opcdaauto.dll 을 사용해 보았다.
과거엔 업체가 제공해준 유료라이브러리를 사용했었던 적이 있긴했지만 워낙 오래전이라 기억도 안나는 상황이라 다시 보니 여러가지로 새롭다.
얼마전 OPC UA 클라이언트 개발을 위해 관련 문서를 다시 읽어 두었던 것이 나름 유용했고 코드프로젝트의 OPC래퍼 프로젝트와 하디 스카다라는 블러그의 My OPC Client라는 VB.net 프로젝트가 도움이 되었다.
AB PLC를 사용할때 OPC외의 방법을 지원하지 않아서 오랫만에 다시 사용하게 되었다.
자세한 것들은 링크된 블러그를 참고하면 알수 있기때문에 중요한 포인트만 간단히 정리해둔다.
OPC SERVER 객체와 GROUP 객체가 분리되어 관리된다.
대상 연결은 SERVER 객체를 사용하지만 Subscribe 관리는 Group단위로 Active 여부를 결정한다.
클라이언트 쪽에서 데이터를 수신할때는 ClientHandle을 사용하고 서버쪽에서 데이트를 수신할때는 ServerHandle을 사용하며 두 핸들값은 서로 다르기때문에 별도 관리해야 한다.
읽고 쓰기할때 Array 클래스를 참조형으로 사용하는데 배열의 크기가 0부터가 아니라 1부터 사용되므로 2개의 데이터를 Read/Write 한다면 배열의 크기는 3이 되어야 한다.
지금 프로젝트가 끝나면 테스트 프로그램을 링크해두도록 하겠다.
* 코드 프로젝트에서 래퍼 프로젝트
OPC DA 기본 구조를 이해하기 좋다.
https://www.codeproject.com/Articles/490072/DA-1-OPC-Wrapper-DLL-and-Client-Example
* Hadi SCADA
VB.NET으로 구성된 프로젝트라서 C# 문법과 약간의 차이가 있지만 설계나 전반적인 내용을 이해하기 좋다.
http://hadiscada.blogspot.com/2013/07/my-opc-client.html
* OPCDAAuto.dll 사용방법 소개
중국어로 주석이 달린 C#코드 사용법 소개로 코드만 보면서 이해할수있다.
https://www.icode9.com/content-1-53365.html
'C#' 카테고리의 다른 글
log4net 엔진 설정을 실행 중 코드로 작성해서 동적으로 사용하기 (0) | 2021.01.27 |
---|---|
C# RTSP 관련 오픈소스 (0) | 2020.04.20 |
Tray Icon(트레이 아이콘) 등록 간단 정리 (0) | 2016.07.18 |
자동실행 레지스트리 등록 (1) | 2016.07.15 |
널(null) 초기화 (연산자 ??) (0) | 2016.03.22 |