티스토리 뷰

Argonne National Laboratory에서 개발한 EPICS(Experimental Physics and Industry Control System)은 오픈 소스로 구성된 라이브러리의 집합입니다. 이 통신은 응용프로그램 공동 개발 및 입자 가속기등의 과학 장비에 대한 실시간 제어 시스템을 소프트웨어 적으로 구성할 수 있는 기반을 마련하게 도와줍니다.





1) EPICS의 배경


대규모에 대한 과학 실험 네트워크 통신 프로토콜을 표준화 하기 위해서 2개의 국립 연구소에서 공동 개발을 하여 EPICS가 만들어지게 되었습니다. 다수의 과학계와 산업계 조직들은 EPCIS 조직을 구성하여` 글로벌하게 EPICS를 사용하고 있으며, EPICS의 견고성을 위해서 꾸준히 유지보수를 하고 있습니다. 


대규모의 과학계 어플리케이션은 수백대로 분산된 디바이스를 통해 구성되는 분산 제어 시스템을 형성하기 위해서 단일 네트워크를 통해서 통신을 요구합니다. EPICS는 이러한 통신을 가능하게 하는 표준과 툴을 제공하고 있습니다. 자세한 자료를 보기 원하신다면 아래의 링크를 참조하시기 바랍니다.



2) EPICS 구현 (EPICS Implementation)


EPICS는 일반적으로 다량의 네트워크 트랙픽을 만들기 때문에 높은 대역폭 네트워크의 프로토콜을 이용하여 표준 호출을 생성하게 됩니다. EPICS는 Channel Access(채널 접근, CA) 네트워크 프로토콜 기반의 TCP/IP를 이용하게 됩니다. Channel Access 프로토콜은 TCP/IP의 최상단에 위치한 Application Layer를 이용하기 때문에 같은 네트워크에서 높은 속도로 통신이 가능합니다. CA는 EPICS 애플리케이션에서 요구하는 속도, 대역폭, 신뢰성을 제공할 수 있습니다. 


EPICS는 서버/클라이언트 아키텍쳐를 구현합니다. CA 서버는 IOCs라 불리는 Input/Output Controllers를 사용하여 현실 세계의 IO 포인트를 구현합니다. CA 서버는 EPICS Process Variable(PV)를 이용하여 네트워크 상에 데이터를 쓰거나 읽습니다. 반대로 CA 클라이언트는 PV를 이용하여 데이터를 모니터링 합니다. CA 클라이언트는 HMI(Human Machine Interface)를 포함하고 있으며, LabVIEW와 같은 분석 프로그래밍도 포함됩니다. 




위의 그림은 표준 EPICS 네트워크의 블록 다이어그램을 나타냅니다. 이 네트워크는 네트워크 대역폭 및 사용 가능한 IP에 대한 제한을 받긴 하겠지만 네트워크로써 서버와 클라이언트는 무한하게 가질 수 있습니다. 


연결된 모든 디바이스는 CA 프로토콜을 통해서 고속으로 네트워크에서 돌아가며 데이터를 송수신할 수 있습니다. 


3) EPICS를 LabVIEW에서 사용하기


개발자들은 LabVIEW의 공유 변수 엔진(Shared Variable Engine, SVE)와 LabVIEW EPICS IO 서버를 이용하여 EPICS 시스템을 LabVIEW로 통합할 수 있습니다. 




위의 그림은 LabVIEW와 EPICS 네트워크 사이의 데이터 전달이 어떻게 되는지를 보여주고 있습니다. LabVIEW VI는 공유 변수를 통해서 네트워크에 데이터를 쓰고 읽습니다. Network에 배포된 공유 변수는 EPICS PV에 바운딩 됩니다. EPICS 클라이언트 IO 서버는 PV의 변화를 모니터링합니다. 마지막으로 EPICS 서버 IO 서버는 CA 프로토콜을 이용하여 PV를 EPICS 네트워크에 배포합니다. 


3-1) 공유 변수 엔진


공유 변수 엔진은 NI 소프트웨어와 함께 설치가 되며 PC와 RT OS를 지하고 있습니다. 이 변수 엔진은 NI-PSP(Publish Subscribe Protocol)이라 불리는 NI 독점 프로토콜을 기반으로 실행됩니다. NI-PSP를 이용하여 공유 변수 엔진은 공유 변수에 대한 모든 업데이트를 관리합니다. 공유 변수 엔진은 전용 엔진이기 때문에 LabVIEW가 실행이 되지 않은 상태에서도 활성화 상태로 되어 있어 이 값들을 사용할 수 있습니다. 


3-2) LabVIEW EPICS IO 서버


EPICS IO 서버는 공유 변수 엔진과 EPICS 네트워크 사이의 링크와 같은 역할을 하는 플러그인 입니다. IO 서버가 PV를 업데이트 하는 동안 공유 변수는 EPICS PV를 바인딩 합니다. IO 서버는 CA(채널 엑세스) 네트워크 프로토콜을 사용하여 PV를 퍼블리싱 합니다. EPICS 서버와 클라이언트 IO 서버는 LabVIEW Datalogging and Supervisory Control 모듈과 RT 모듈에 포함이 되어 있습니다. EPICS 클라이언트 IO 서버는 또한 NI 웹사이트에서 무료로 사용할 수 있습니다. 





댓글