← 전체 글
네트워킹/약 12분 읽기/— 조회

DNP3에서 차단기 위치가 깜빡이는 이유 — 그리고 Double-Bit 입력이 해결하는 것

DNP3 double-bit input(group 3·4)은 52a/52b 접점을 네 상태로 인코딩해 동작 중 OPEN/CLOSED 깜빡임을 없앤다. 매핑·시운전·경보 설정.

네트워킹SCADA문제 해결시운전태그

닫을 때마다 "열리는" 차단기

운전원이 SCADA에서 피더 차단기를 닫는다. 약 40밀리초 동안 위치 표시가 OPEN으로 깜빡였다가 CLOSED로 안정된다. 몇 번 반복하면 누군가 티켓을 올린다. 차단기가 바운싱한다는 것이다. 아니다. 보조 접점이 기계식 접점이 원래 하는 일을 하고 있을 뿐이다 — 52a는 아직 붙지 않았고 52b는 이미 떨어졌으니, 잠깐 동안 outstation은 둘 다 보지 못한다. 그 틈을 single bit로 읽으면 거짓말이 나온다. 닫는 동작 한가운데에서 잠깐 OPEN.

그 깜빡임이 DNP3에 double-bit binary input이 있는 바로 그 이유다. 차단기나 전동 단로기 상태를 평범한 single-bit Binary Input(object group 1)으로 매핑했다면 깜빡임을 구조적으로 심어 넣은 것이고, 시운전 날 그것을 덮으려고 디바운스 타이머를 짜느라 시간을 쓰게 된다. 올바른 객체를 쓰면 문제는 대부분 사라진다.

접점 하나로는 차단기를 설명할 수 없다

차단기는 두 가지 상태가 아니다. 실제로 신경 써야 할 것은 네 가지다. 열려 있다, 닫혀 있다, 둘 사이를 이동 중이다, 아니면 혼란 상태다(고착되었거나 접점이 서로 모순됨). Single bit는 이 모두를 0 또는 1로 밀어 넣으므로, 문제가 생겼을 때 정확히 필요한 정보를 버린다.

기계적 실체는 보조 접점 두 개다. 52a는 주 접점을 따라간다 — 차단기가 닫히면 닫힌다. 52b는 거울상이다 — 차단기가 열리면 닫힌다. 둘 다 outstation으로 넣으면 네 상태를 구분할 수 있다:

  • 52a 열림, 52b 닫힘 → 차단기 OPEN.
  • 52a 닫힘, 52b 열림 → 차단기 CLOSED.
  • 둘 다 열림 → 메커니즘이 두 위치 사이에 있음 — 이동 중. 이것이 깜빡임 구간이다.
  • 둘 다 닫힘 → 고장. 접점이 동시에 붙어서는 안 된다. 보조 스위치 정렬 불량, 접점 용착, 또는 배선 문제.

DNP3는 그 두 비트를 직접 인코딩한다. IEEE 1815-2012에 따라 double-bit 점은 2비트 값을 갖는다:

  • 0b01 — Determined OFF(차단기 열림)
  • 0b10 — Determined ON(차단기 닫힘)
  • 0b00 — Intermediate(이동 중)
  • 0b11 — Indeterminate(비정상 — 둘 다 또는 둘 다 아님, 해소 불가)

비트 순서가 중요하고 사람들이 여기서 걸린다. "1 = on"이 아니다. 쌍이 값이다. 10이 ON, 01이 OFF다. 누군가 극성을 뒤바꾼 outstation 설정을 받으면 열린 차단기가 전부 닫힘으로 보고된다.

객체: group 3과 group 4

정적(현재 값) double-bit binary input은 object group 3이다. 변화 이벤트는 object group 4다. single-bit의 group 1(정적)/group 2(이벤트) 쌍과 정확히 대응하므로, binary input의 class 폴링을 이미 이해하고 있다면 이건 값 폭만 넓어진 같은 메커니즘이다.

실제로 만나게 될 variation:

  • g3v1 — 패킹 포맷, 플래그 없음. 바이트당 네 점. 품질이 필요 없는 대량 무결성 폴에는 괜찮다.
  • g3v2 — 플래그 포함. 점당 1옥텟: 2비트 상태에 표준 플래그 비트(ONLINE, RESTART, COMM_LOST, REMOTE_FORCED, LOCAL_FORCED, CHATTER_FILTER)가 붙는다. 이걸 써라. 플래그가 값의 절반이다 — COMM_LOST가 설정된 Intermediate 상태는 깨끗한 전환과는 의미가 다르다.
  • g4v1 — 이벤트, 시간 없음.
  • g4v2 — 절대 시간 포함 이벤트.
  • g4v3 — 상대 시간 포함 이벤트(공통 시간 기준으로부터 ms 오프셋).

차단기 상태라면 double-bit 점을 Class 1에 배정해 동작이 unsolicited 이벤트로 올라오게 하고(또는 빠른 Class 1 폴), 각 상태 변화가 타임스탬프를 갖도록 g4v2를 요청하라. 차단기가 트립되면, 그 Intermediate → Determined-OFF 시퀀스의 타임스탬프가 사고 시퀀스(SOE) 분석의 재료가 된다. 시간 없는 트립은 보호 계전기 자체 기록과 대조할 수 없는 트립이다.

SCADA에서 매핑하기

Outstation은 2비트 값을 준다. 마스터는 그것을 운전원 화면과 경보 엔진이 쓸 수 있는 무언가로 바꿔야 한다. 흔한 두 가지 방식:

4상태 파생 태그로 매핑. double-bit 점을 열거형 정수 상태 태그로 읽는다: 0 = Intermediate, 1 = Open, 2 = Closed, 3 = Indeterminate. 이걸로 차단기 심볼 색과 애니메이션을 구동한다 — 닫힘은 녹색, 열림은 적색, Intermediate는 깜빡임/해칭, Indeterminate는 별도의 고장색. 최신 SCADA 패키지 대부분(상당수가 드라이버 위의 DNP3 마스터)은 double-bit 점을 바로 이런 다중 상태 태그로 노출한다 — single-bit 태그 두 개와 표현식 로직으로 재발명하기 전에 당신 것이 그렇게 하는지 확인하라. group-1 점 두 개로 HMI에서 double-bit 디코드를 다시 짜는 것이 피해야 할 일이다. 없애려던 그 깜빡임을 다시 만들게 된다.

정상 상태가 아니라 비정상 상태에 경보를 걸어라. Open과 Closed는 지령된 상태다 — 모든 동작을 경보하지 마라, 그건 상태 변화 로그가 할 일이다. 다음에 경보를 걸어라:

  • Indeterminate(0b11) — 이건 실제 고장이다. 래치하고 우선순위 높음. 보조 접점 둘이 동시에 붙었다는 것은 위치가 정말로 알 수 없다는 뜻이고, "차단기 위치 불명"은 성가심이 아니라 안전 문제다.
  • 해소되지 않는 Intermediate. 40 ms 이동은 정상이다. 5초 이동은 차단기가 스트로크 중간에 고착됐다는 뜻이다. Intermediate 상태에 타이머를 걸어라 — 차단기 정격 동작 시간보다 수백 ms 길게 — 그리고 확정 상태로 해소되지 않으면 경보하라. 전동 단로기는 이동 시간이 길므로 장치별로 튜닝하라. 차단기에 맞는 2초 on-delay는 느린 전동 스위치에서는 오경보를 낸다.

시운전: 네 상태를 전부 증명하라

single-bit의 함정은 시험은 잘 통과한다는 것이다. 열림 되고, 닫힘 되고, 출하 — 그리고 Intermediate 깜빡임은 타이밍이 나쁠 때 현장에서만 튀어나온다. Double-bit 점은 네 상태를 벤치에서 전부 강제로 만들어봐야 한다. 비정상 두 상태가 바로 아무도 시험하지 않는 상태이기 때문이다.

  • Open과 Closed — 차단기를 동작시키고, 마스터가 Determined OFF / Determined ON을 읽고 열거값이 맞는지 확인하라. 극성을 보라. 뒤바뀐 쌍은 반대로 읽힌다.
  • Intermediate — 보통 실제 동작 중에 라이브로 잡힌다. 강제로 만들고 싶으면 (차단기를 안전하게 한 뒤) 보조선 둘을 순간적으로 들어 올려 상태가 확정 상태나 통신 고장이 아니라 0b00으로 가는지 확인하라.
  • Indeterminate — 보조 입력 둘을 점퍼로 닫아 0b11과 고장 경보를 확인하라. 이 상태가 나중에 실제 배선 오류를 잡아주는 상태이므로, 지금 경로가 작동하는지 증명하라.

온 김에 채터 필터를 확인하라. 보조 접점은 바운싱하고, 동작할 때마다 전환을 무더기로 보고하는 차단기는 이벤트 버퍼를 넘치게 하고 정상 이벤트를 밀어낼 수 있다. DNP3 outstation은 바이너리 점별로 채터 필터 설정을 노출한다. g3v2/g4v2의 CHATTER_FILTER 플래그가 억제가 실제로 동작 중인지 알려준다. 정상 동작 중에 그 플래그가 설정되는 게 보이면, 이 접점에는 디바운스가 너무 빡빡한 것이다 — 이미 이벤트 버퍼 비용을 치른 마스터에서 거르지 말고 outstation에서 완화하라.

Single-bit이 여전히 맞는 경우

모든 게 두 비트를 필요로 하지는 않는다. 펌프 기동/정지, 한쪽만 읽는 밸브 리밋 스위치, 일반 디지털 입력 — single-bit group 1/2가 맞고, 거기에 double-bit을 쓰면 점만 낭비하고 맵을 헷갈리게 한다. 내가 쓰는 규칙: 장치에 신경 쓰는 실제 전환 시간이 있거나, 서로 모순될 수 있는 독립 접점 두 개가 있으면 double-bit 점을 받을 자격이 있다. 차단기, 전동 단로기, 재폐로기가 여기에 해당한다. 계전기 출력 코일은 아니다.

점을 매핑한 뒤 확인할 다음 항목: 트립 상황에서 사고 시퀀스(SOE) 분해능이 실제로 살아남는가. Double-bit은 상태를 주고, g4v2는 타임스탬프를 준다 — 하지만 outstation의 시계가 동기화되어 있지 않으면 그 시간은 장식일 뿐이다. 그것은 별도의 시운전 단계이고, 차단기 이벤트 더미를 실제 사고 타임라인으로 바꿔주는 단계다.