질문하신 RCB(Report Control Block)의 RptEnable 동작 매커니즘은 Client-Server 통신 설계에서 가장 핵심적인 부분 중 하나입니다.
결론부터 말씀드리면, Client가 Server의 RCB.RptEnable 값을 TRUE로 변경(Write)하는 요청을 보내고, 이를 수신한 Server가 그때부터 이벤트를 감지하여 Client에게 리포트를 전송하는 방식입니다.
Server가 무조건 리포트를 보내고 Client가 필터링하는 방식이 아닙니다. 만약 후자처럼 동작한다면 네트워크 대역폭(Bandwidth)에 심각한 낭비가 발생하기 때문에, IEC 61850 표준은 Client의 요청에 의해 Server가 리포팅을 시작하도록 정의하고 있습니다.
동작하는 상세 과정과 메커니즘을 단계별로 설명해 드리겠습니다.
1. RCB.RptEnable 처리 프로세스
① Client의 제어권 점유 및 활성화 요청 (MMS Write)
- Client(SCADA 등)가 Server(IED)에 접속하면, 먼저 자신이 사용할 RCB의 상태를 확인합니다.
- Client는 Server에 있는 특정 RCB의 RptEnable 속성에 TRUE 값을 쓰는(MMS Write Request) 명령을 보냅니다.
- 이때 인덱싱된 RCB(Indexed RCB)를 사용하는 경우, Client가 RptEnable을 TRUE로 바꾸는 순간 해당 RCB는 그 Client에게 점유(Reservation)되어 다른 Client가 접근하지 못하게 인터락이 걸립니다.
② Server의 데이터 모니터링 시작
- Server는 RptEnable이 TRUE로 세팅된 것을 확인하면, 해당 RCB가 가리키고 있는 DataSet 내의 데이터들을 본격적으로 모니터링하기 시작합니다.
- RptEnable이 FALSE일 때는 데이터에 변화가 생겨도(예: 전류치 변경, 차단기 상태 변경 등) Server는 Client에게 리포트를 보내지 않습니다.
③ 이벤트 발생 및 리포트 전송 (Server -> Client)
- RptEnable = TRUE 상태에서 RCB에 설정된 Trigger Options(데이터 변경: dchg, 품질 변경: qchg, 주기적 전송: dupd 등) 조건이 충족되면, Server가 리포트 패킷(MMS Information Report)을 생성하여 해당 Client에게만 1:1(Unicast)로 전송합니다.
2. BRCB와 URCB에 따른 RptEnable 동작의 차이점
개발하실 때 버퍼형(BRCB)과 비버퍼형(URCB) 리포트의 특성을 고려하셔야 합니다. RptEnable이 FALSE에서 TRUE로 바뀔 때 두 블록의 동작이 다릅니다.
| 구분 | RptEnable = FALSE 일 때의 동작 | RptEnable = TRUE 로 바뀌는 순간의 동작 |
| URCB (Unbuffered) |
데이터가 변경되어도 이벤트를 저장하지 않고 모두 버립니다(Drop). | 활성화된 이후에 발생하는 이벤트부터 실시간으로 전송합니다. |
| BRCB (Buffered) |
통신이 끊기거나 고장 등으로 FALSE가 되어도, Server 내부 버퍼에 이벤트를 차곡차곡 저장합니다. | TRUE가 되는 순간, 버퍼에 쌓여있던 과거의 이벤트들을 순서대로(Sequence) Client에게 모두 전송한 뒤 실시간 모니터링으로 전환됩니다. |
💡 개발자를 위한 팁 (구현 시 주의점)
- Server(IED) 개발 시: Client로부터 RptEnable = TRUE Write 요청을 받으면, 정상적으로 처리되었다는 Response를 보내기 전에 해당 RCB를 요청한 Client의 IP/Association에 매핑(Lock)해야 합니다. 다른 Client가 동일한 RCB를 동시에 켜지 못하도록 방어 코드가 필요합니다.
- Client(SCADA/SA Gateway) 개발 시: 동작을 시작할 때 반드시 RptEnable을 TRUE로 바꾸는 시퀀스를 포함해야 합니다. 또한, 통신이 정상적으로 종료되거나 무효화될 때는 RptEnable을 다시 FALSE로 되돌려주어야 Server의 리소스(버퍼 등)가 낭비되거나 락(Lock)이 걸리는 현상을 방지할 수 있습니다.
LIST