PQN 깊게 보기

"한 사이클을 위상 슬롯으로 잘게 쪼개서 슬롯마다 PD 크기 기록한 것" — 이 한 줄이 무슨 뜻인지를 그림과 수식으로.

먼저 분명히 해두기: PQN은 FFT 결과가 아니다. FFT는 이 시스템의 다른 데이터(TF)에 쓰인다. PQN은 시간(=위상) 도메인의 phase-binned PD 펄스 히스토그램이다.

1단계 — 한 사이클

전력선 AC 신호의 한 주기. 60 Hz면 16.67 ms. 이 한 주기를 각도로 보면 0° 부터 360°까지가 한 바퀴.

voltage ▲ │ ╱‾‾‾╲ ╱‾‾ │ ╱ ╲ ╱ │ ╱ ╲ ╱ ───┼────────────╲───────────────────────────────╱────▶ time │ ╲ ╱ │ ╲ ╱ │ ╲___ ___╱ │ ╲________________╱ └───┬──────┬──────┬──────┬──────┬──────┬───── 0° 60° 120° 180° 240° 300° 360° └────────── 한 사이클 (16.67 ms @ 60 Hz) ──────────┘

phase 0° = 사이클 시작점. 이걸 알아야 "어느 위상에서 PD가 떴다" 가 의미를 가진다. 장비는 sync 신호로 0° 시점을 항상 추적한다.

2단계 — 한 사이클을 256 슬롯으로 자른다

한 사이클을 256등분: |slot 0|slot 1|slot 2|slot 3|...|slot 254|slot 255| │ │ │ │ │ │ 0° 1.4° 2.8° 4.2° 357.2° 358.6° 0µs 65µs 130µs ... 16.6ms

수식

슬롯 폭 (각도) = 360° / 256       ≈ 1.40625°
슬롯 폭 (시간) = 16.67ms / 256    ≈ 65.1 µs   (60Hz 기준)
슬롯 i 의 위상 = i × 360° / 256   = i × 1.40625°
슬롯 i 의 시간 = i × T_cycle / 256
    where T_cycle = 1 / sync_freq

sync 주파수가 다르면 슬롯의 시간 폭도 달라진다. 60 Hz면 65 µs, 120 Hz면 32.5 µs. 슬롯 개수(=256)와 위상 폭(=1.4°)은 sync 주파수와 무관하게 항상 같다.

3단계 — PD 펄스가 어디서 떴는지 본다

PD는 ns ~ µs 단위의 짧고 뾰족한 펄스. AC 사인파 위에 가끔 얹혀서 들어옴.

신호 = AC 사인파 + 가끔 튀는 PD 펄스 ↓ PD 펄스 ↓ │ │ ╱‾‾‾╲ ╱ ╱╲ ╱ ╲ ╱ ╲ ─────────╲──────────────────────────────╱────╲────────▶ time ╲ ╱ ╲ ╲___ ___╱ ╲__________________╱ slot 17 위치 (사이클 중간부) slot 145 위치

각 PD 펄스가 발생한 시각 → 그 사이클 내 위상 → 슬롯 인덱스 변환. sync 가 0° 시점을 알려주기 때문에 가능한 계산.

4단계 — 슬롯마다 PD 크기를 기록 → bin

각 슬롯에 그 슬롯에서 검출된 PD 크기를 적어넣는다. 펄스가 안 뜬 슬롯은 0.

bin[  0] = 0
bin[  1] = 0
...
bin[ 17] = 850        ← 17번 슬롯에서 PD 펄스 (크기 850)
bin[ 18] = 0
...
bin[145] = 1240       ← 145번 슬롯에서 PD 펄스 (크기 1240)
bin[146] = 0
...
bin[255] = 0

이 256개 정수(uint16) 배열이 한 채널·한 사이클의 PQN bin. 이걸 한 사이클이 끝날 때마다 채널마다 한 개씩 PQN_DATA_PACKET 로 보낸다.

5단계 — 수식으로

PQN_bin[i] = 슬롯 i 에서 검출된 PD 펄스의 대표 크기

  슬롯 i = 위상 구간 [ i × 360°/256, (i+1) × 360°/256 )
        = 시간 구간 [ i × T_cycle / 256, (i+1) × T_cycle / 256 )
  i ∈ {0, 1, ..., 255}
  T_cycle = 1 / sync_freq

대표 크기는 보통 max{|PD_pulse(t)|: t ∈ slot_i} (펌웨어 구현에 따라 합일 수도)

6단계 — 왜 위상 정렬이 중요한가

PD 펄스는 절연 결함의 종류에 따라 사인파의 특정 위상에서 반복적으로 발생하는 경향이 있음 (예: 코로나는 양/음 정점 부근, 표면방전은 영교차 부근 등). 그래서 같은 위상에서 반복 발생하는 패턴 자체가 결함 종류를 식별하는 단서.

사이클  1  PQN: bin[ 17]=850,  bin[145]=1240, 나머지 0
사이클  2  PQN: bin[ 18]=920,  bin[143]=1100, 나머지 0
사이클  3  PQN: bin[ 17]=780,  bin[146]=1300, 나머지 0
사이클  4  PQN: bin[ 16]=900,  bin[145]=1190, 나머지 0
   ...                                       ← 비슷한 위상에 또, 또 떴다

이 반복성을 보려면 각 사이클의 0°가 같은 위치여야 한다. sync 가 그 기준.

7단계 — 여러 사이클을 겹쳐서 PRPS / PRPD

한 사이클의 PQN bin 배열은 점 256개의 line 한 줄. 이걸 N 사이클 누적해서 그리면:

PRPS = Phase-Resolved Pulse Sequence

여러 사이클의 bin 점들을 같은 phase 축에 겹쳐 그린 것.

amplitude ▲ │ ╳ ╳ ← 여러 사이클의 bin[145] 부근 점들 │ ╳ ╳╳ │ ╳ ╳ ╳ ╳ │ ╳ ╳ ╳ ╳ ╳ ← 여러 사이클의 bin[17] 부근 점들 │ ╳╳ ╳ ╳ ╳ ╳ └──────────────────────────────▶ phase (slot 0..255) 17 145

PRPD = Phase-Resolved Partial Discharge (heatmap)

위상 × 크기 격자에 누적 발생 횟수를 색으로.

amplitude ▲ │ ░ ▓░ │ ▓▓ ▓▓▓░ │ ▓░ ▓▓▓ │ ▓▓░░ ░▓░ │ ░ ░░ └──────────────────────────────▶ phase 진한 색 = 발생 빈도 높음, 옅은 색 = 드뭄

한 줄 요약

PQN bin[i] = 한 전기 사이클을 256등분 했을 때, i번째 위상 슬롯(폭 ≈ 1.4° = 65 µs @ 60 Hz)에서 검출된 PD 펄스의 크기. 256개를 모은 배열이 한 채널·한 사이클 분량의 PQN 데이터. sync 신호가 사이클 0°를 알려주기 때문에 슬롯 인덱스가 의미를 가진다.

FAQ

Q. FFT를 쓰는 거 아닌가?

아니다. 이 시스템에서 FFT는 TF 데이터를 만들 때 SCOPE 원파형에 적용된다. PQN은 phase-binning(시간 도메인 분류) 결과. 코드로도 internal/prpsdata/ 에는 fft import 가 없다.

Q. bin 값이 max 인지 sum 인지?

PDF에 명시 없음. 펌웨어 구현에 따라 다를 수 있으나, PRPS 누적 알고리즘이 bin 값을 그대로 amplitude 로 쓰는 것을 보면 슬롯 대표값(보통 max)일 가능성이 높다. 정확한 답은 펌웨어 명세나 캡처 분석으로 확인 필요.

Q. ch_number = 8(sync) 채널은 뭔가?

입력 채널(0~7) 외에 sync 신호 자체도 PQN으로 보낸다. 8번 채널의 PQN bin은 sync 펄스 위치/품질을 담은 특수 워드(SyncWord: pulse flag 1bit + cycle_index 6bit + graph 9bit). 입력 채널 모두 ch_on=0 이어도 8번은 항상 보내짐.

Q. SCOPE 와 어떻게 매칭하나?

두 패킷 모두 cycle_index 를 가지고 있다. 같은 인덱스끼리 짝짓기. 단 PQN 이 SCOPE 보다 buffer_size/256 주기만큼 늦게 도착한다 (PQN 은 sync 정렬 후 묶음 전송).

추가 도메인 지식이 필요하면 → 용어 사전, 장비 구조가 궁금하면 → 장비 구성.