[Corporation] DNP 3.0 (2)

에이블·2022년 2월 24일
0

Corporation

목록 보기
3/8

❔ 프로토콜 구성

DNP 3.0 프로토콜은 전기 관련 업계에서 RTU(remote terminal unit)들, IED(Intelligent Electronic Device)들과 마스터 스테이션들 간에 공개된 표준을 기반으로 상호 운용성을 확보하려는 노력의 결과로 만들어진 프로토콜이다.

DNP 3.0은 원래 OSI 7 계층 모델에서 3가지 계층을 기반으로 하며 설계 되었다.(물리, 데이터링크, 응용)

❔ 데이터 교환

응용 계층에서는 가장 일반적인 데이터 형태를 지원하기 위하여 객체를 기반으로 한다.

데이터 링크 계층에서는 클래스 및 객체의 변화를 폴링하는 몇 가지 데이터 수집 방법을 제공한다.

물리 계층에서는 가장 일반적으로 사용되는 단순한 RS - 232 또는 RS - 485 인터페이스를 정의한다.

또한 Advanced RTU function 들과 기본적으로 IEC document 8702-5-1에 의해 정의된 프레임 크기(최대 16bytes) 보다 더 큰 메시지를 전송할 수 있도록 가상 트랜스포트 계층을 사용할 수 있다.

LAN 환경에서의 프로토콜 스택도 고려되어 있다.

📋 DNP 3.0 응용 계층

응용계층에서는 사용자 데이터를 받아 ASDU(Application Service Data Unit)을 생성하는데, 하나의 사용자 데이터는 여러개의 ASDU로 분리도 가능하다. 각각의 ASDU는 헤더에 해당하는 APCI(Application Protocol Data Unit)와 결합하여 APDU(Application Protocol Data Unit)를 생성한다.

수신측 응용 계층에서는 하나의 ASDU를 수신했을 경우, 앞의 APCI를 제거하고 ASDU를 어셈블하여 완벽한 데이터를 생성한다.

메시지 형식은 다음과 같다.

여기서 Object Header는 DUI(Data Unit Identifier)로서 뒤따라오는 데이터 객체를 식별하기 위한 헤더이며, 데이터에는 객체 헤더에서 규정된 형태의 IO(Information Object)들이 포함된다.

Request Header는 AC(Application control)와 FC(Function control)로 구성되고, Response Header에는 INN(Internal Indication)이 추가된 형태이다.

AC

  • 첫 번째로 분할된 ASDU나 마지막 ASDU를 지칭한 FIR
  • FIN과 확인을 요청하는 CON
  • 순서번호 포함

FC

  • 메세지의 목적을 나타냄
  • 마스터의 요청과 슬레이브의 응답에서 이용되는 코드

INN

  • 응답시 처리결과를 나타내기 위한 목적

FC CODE

FC = 0x00
# 메시지는 단일 분할 메시지에 대한 확인 응답과 요청된 메시지 수신에 대한 확인 메시지로 이용된다.

FC = 0x01(READ)
# Outstation으로부터 Data Object의 정보를 얻어내는데 이용되고 
다양한 경우에 대해 요청과 응답이 정의되어 있다.

FC = 0x02(WRITE)
# Master Station이 Out station으로 Object를 전송할 때 이용된다.

FC = 0x03(SELECT)
# 메시지는 제어 장치를 선택할 때 사용된다. 
이것은 특정 장치를 선정하여 대기상태로 만들고 그 결과를 보고 받는다. 
이를 받은 OutStation은 타이머를 개시하는데 
타임아웃전에 메시지가 수신되어야 정상적으로 활성화 된다. 

FC = 0x04(OPERATE)
# 하나 이상의 제어장치를 활성화 시키는데 이용된다.

FC = 0x05(DIRECT OPERATE)
# 제어장치가 SELECT 메시지를 미리 수신할 필요 없이 바로 활성화 시키는데 이용된다.

FC= 0x06(DIRECT OPERATE. No Ack)
# OutStation이 응답할 필요가 없는 직접 제어 메시지

FC = 0x07 / 0x08(IMMEDIATE FREEZE)
# 메시지는 버퍼에 특정 객체의 값을 복사하는데 이용되고 응답의 필요여부에 따라 구별

FC = 0x09 / 0x0A(FREEZE AND CLEAR)
# FC = 0x07 / 0x08과 동일하지만 복사 후 객체 값을 0으로 설정하는 점이 다르다.

FC = 0x0B / 0x0C(FREEZE AND TIME)
# 특정 시간이나 주기적으로 객체 값을 얻는데 이용된다.

FC = 0x0D(COLD START)
# OutStation에서 전원 차단과 연결을 통해 응용을 다시 시작하도록 하는 것

FC = 0x0E(WARM START)
# 전원 차단 없이 응용만 재시작 시키는데 이용

FC = 0x0F(INITIALIZE DATA)
# 설정 가능한 데이터를 초기화 하거나 기본 값으로 설정하는데 이용되며

FC = 0x11(INITIALIZE APPLICATION START) / 0x12(APPLICATION STOP)
# 특정 응용의 시작과 종료에 이용 outstation은 이러한 동작의 성공 여부를 응답으로 보내야 한다.

FC = 0x13(SAVE CONFIG)
# 특정 구성정보를 비휘발성 저장공간에 저장

FC = 0x14(Enable Unsolicited Messages) / FC = 0x15(Disable Unsolicited Messages)
# 객체들에 대한 정보를 자동으로 보고하는 기능을 활성화 하거나 비활성화

FC = 0x16(ASSIGN CLASS)
# 클래스에 객체를 할당하는데 이용

FC = 0x17(DELAY MEASUREMENT)
# 통신 지연 측정에 이용

FC = 0x18(RECORD CURRENT TIME)
# 현재 시작의 저장에 이용

객체 헤더 DUI의 구성은 다음과 같다.

  • 객체 그룹 (Object Group) : 일반적인 데이터 클래스, 1byte

  • 객체 변화 (Object Variation) : 요청을 보낼 때는 0으로 설정, 응답시 특정한 타입에 따라 표현, 1byte

  • 한정값 (Qualifer) : 뒤에 나오는 범위 값의 의미를 구분, 뒤의 Range field를 어떻게 해석할 것인가를 나타냄, 1byte

  • 범위 (Range) : 인덱스의 시작값과 종료값을 가지고 있음, object의 수와 읽어야 할 포인트의 시작과 끝 등을 나타냄, 0~8byte

profile
꺾이지 않는 마음

0개의 댓글