티스토리 뷰
PLC에서 DNP3 프로토콜을 지원한다는 옵션을 보기는 했지만 프로토콜을 어느 정도 알아야겠다는 생각을 하게 되었다. DNP3 프로토콜의 사용자 그룹 사이트의 주소는 https://www.dnp.org/이다. 처음에는 전력 산업에서 발전소와 변전소 컴퓨터 및 RTU(Remote Terminal Units), IED(Intelligent Electronic Devices)와 같은 장치들 간의 통신을 위해서 만들어졌으나 현재는 상하수도, 가스를 비롯한 여러 산업에서도 사용되고 있다. 공개된 프로토콜로 IEEE Standard 1815 표준이 있다.
위의 그림은 4 계층의 DNP3 프로토콜 구조로 EPA(Enhanced Performance Architecture)에서 메시지 분할을 위해 Pseudo-Transport 계층이 추가되면서 4 계층이 되었다고 한다. 프로그래머가 주로 접하게 될 응용 레이어에서 통신에 참여하는 두 주체를 마스터와 아웃스테이션(outstation)으로로 부르고 마스터에서 데이터를 요청하면 아웃스테이션이 이에 응답하는 방식이다. 모드버스 프로토콜의 마스터-슬레이브 구조와 유사하다. 특이한 점이라면 서버 역할을 하는 아웃스테이션에서는 마스터에게 요청 없는 응답을 보낼 수도 있다. 하위 레베에서는 RS-232C, RS-485와 같은 시리얼 통신뿐만 아니라 TCP/IP의 TCP 및 UDP도 지원한다.
DNP3에서는 사용하는 아웃스테이션이라는 용어 대신에 슬레이브나 리모트라고 하는 사람도 있다. 마스터와 아웃 스테이션이 1:1로 통신하지만 1:N(Multi-drop) 방식으로 통신할 수도 있고 아웃 스테이션이 동시에 마스터가 되어서 다른 아웃 스테이션을 중계할 수도 있다.
응용 레이어의 헤더에는 기능 코드 항목이 있는데 대표적인 기능들을 보면 DNP3 프로토콜을 통한 작업들을 예상해 볼 수 있다. 다음은 대표적인 기능들이다. 이러한 기본적인 기능 외에도 시간 동기화, 브로드캐스트 메시징 기능도 있다.
확인, 읽기, 쓰기, 조작 전 선택(SBO, select-before-operate), 직접 조작(no SBO), 고정 및 초기화(카운터), 재시작(Cold/Warm), 요청 없는 응답 활성화/비활성화, 자료 클래스 지정
프로토콜에서 지원하는 자료 유형은 다음과 같다.
binary inputs, binary outputs, analog inputs, analog outputs, counters, time/date, files
위의 그림은 소스포지에서 "dnp3"로 검색한 결과로 DNP3 프로토콜을 구현한 라이브러리와 더불어 개발에 활용할 수 있는 마스트 시뮬레이터, 아웃스테이션 시뮬레이터를 볼 수 있어서 반갑다.
위의 그림은 깃허브에서 "dnp3"로 검색한 결과로 다양한 프로그래밍 언어를 적용한 다양한 DNP3 연관 프로젝트들을 확인할 수 있었다. 일반 사용자라면 장치 또는 스카다 시스템에서 DNP3를 지원하는지 여부를 확인하고 매뉴얼에 따라 사용하면 그만이지만, 프로그래머 입장에서는 안정된 연관 라이브러리와 실제 장비를 대신할 수 있는 시뮬레이터를 확보하는 것이 무엇보다 중요한데 개방된 프로토콜인 만큼 라이브러리도, 연관 도구들도 넉넉해서 다행이다.
"Modbus RTU or DNP3 RTU over RS485 or Module TCP or DNP3 TCP/UDP over Ethernet RJ45"
위의 문구는 인터넷에 올라와 있는 한 변압기 계전기의 상품 광고로 통상 장비들이 모드버스와 DNP3를 함께 지원하고 있음을 알 수 있다.
DNP3를 스터디하면서 마지막으로 언급할 부분은 MESA(Modular Energy System Architecture, http://mesastandards.org/)로 DNP3를 확장 및 개선한 것으로 이해할 수 있다. MESA DER(Distributed Energy Resources) 또는 MESA ESS(Energy Storage Systems)이라는 용어를 만날 수 있다.
'IT 일반' 카테고리의 다른 글
시계열 DBMS 인플럭스디비(Influxdb) 맛보기 (0) | 2023.08.22 |
---|---|
크레이트 DBMS(CrateDB)와 DBaaS 그리고 SaaS (0) | 2023.08.22 |
BACnet에 대한 고찰 (0) | 2023.08.15 |
제로 MQ와 래빗 MQ에 대한 고찰 (0) | 2023.06.19 |
PDF 문서와 악성코드 문제 (0) | 2023.03.03 |