결론부터 씁니다. SMR 여러 모듈을 한 제어실에서 운전할 때 가장 먼저 막아야 할 오류는 조작 실수 자체가 아니라 의도한 모듈이 아닌 다른 모듈에 지령이 들어가는 것입니다. HMI 화면에서 모듈을 선택하는 방식만으로는 이 오류를 막지 못합니다. 지령 패킷 안에 대상 모듈 식별자와 조작 권한 토큰을 함께 싣고, 모듈 측 제어기가 자기 식별자와 토큰을 대조해 불일치하면 지령을 버리는 종단 간 검증이 인터락의 기본 구조가 되어야 합니다.

안전 인터락 조건을 먼저 정리합니다
다중 모듈 제어실의 인터락은 두 층으로 나뉩니다. 하나는 모듈마다 독립된 원자로 보호계통으로, 이것은 모듈 간에 공유되지 않으며 제어실 운전 로직의 영향을 받지 않아야 합니다. 다른 하나는 이 글이 다루는 운전 제어 층의 인터락입니다. 운전 제어 층에서 지켜야 할 조건은 아래와 같습니다.
- □ 모듈별 원자로 보호계통과 수동 원자로 정지 수단은 모듈마다 하드와이어로 독립되어 있어야 하며, 공용 HMI나 공용 네트워크를 거치지 않습니다.
- □ 조작 권한 단일화: 한 모듈의 한 계통에 대해 동시에 두 워크스테이션이 조작 권한을 갖지 못합니다. 권한 이양은 명시적 요청·수락 절차로만 이뤄집니다.
- □ 대상 모듈 검증: 모든 조작 지령은 대상 모듈 식별자를 포함하고, 모듈 측 제어기가 이를 대조합니다. 식별자 불일치 지령은 폐기하고 기록합니다.
- □ 공용 계통 동시 사용 제한: 공용 계통을 크게 쓰는 운전 단계(기동, 정지 냉각 전환 등)는 동시에 진행할 수 있는 모듈 수를 제한합니다.
- □ 네트워크 두절 시 각 모듈은 마지막 지령 추종이 아니라 모듈 자체의 안정 상태 유지로 수렴합니다.
- □ EMO 계열 회로는 모듈별 하드와이어로 구성하며, 공용 운전 로직은 상태를 감시만 합니다.
잘못된 모듈 지령을 막는 방식 비교
다중 모듈 운전에서 오조작 방지 수단은 어디서 검증하느냐에 따라 효과가 크게 다릅니다. 화면 설계로 막는 방법, 네트워크 경로로 막는 방법, 모듈 측 제어기에서 막는 방법을 비교하면 아래와 같습니다.
| 검증 위치 | 방법 | 막는 오류 | 못 막는 오류 |
|---|---|---|---|
| HMI | 모듈별 색상·화면 분리, 선택 확인 창 | 운전원 인지 착오 | HMI 소프트웨어 결함, 화면 매핑 오류 |
| 네트워크 | 모듈별 분리 VLAN, 게이트웨이 필터 | 경로 혼선 | 게이트웨이 설정 오류, 주소 중복 |
| 모듈 제어기 | 지령 내 식별자·토큰 대조 | 상위 전 구간의 식별 오류 | 식별자 자체의 설정 오류(시운전 검증 필요) |
| 현장 확인 | 운전원 이중 확인·호출 응답 | 절차 누락 | 인적 확인 누락 |
표의 시사점은 분명합니다. HMI와 네트워크 검증은 오류 확률을 낮추지만, 마지막 판정은 지령을 실제로 실행하는 모듈 제어기에서 해야 상위 구간 전체의 결함을 한 번에 걸러낼 수 있습니다. 이때 모듈 제어기의 식별자는 소프트웨어 설정값이 아니라 캐비닛 하드웨어 점퍼나 고정 입력으로 읽도록 해, 설정 파일 복사 실수로 두 모듈이 같은 식별자를 갖는 상황을 막습니다.
조작 권한과 공용 계통 배분 순서도
- 권한 요청: 워크스테이션이 모듈 번호와 계통 이름으로 조작 권한을 요청.
- 권한 판정: 해당 모듈·계통에 다른 권한 보유자가 없으면 토큰 발급. 있으면 보유자 측 수락 대기.
- 지령 생성: 지령에 모듈 식별자, 계통 이름, 토큰, 순번을 포함.
- 모듈 측 검증: 하드웨어 식별자, 유효 토큰, 순번 연속성 확인. 불일치 시 폐기·경보·기록.
- 공용 계통 배분: 기동·정지 냉각 전환 같은 운전 단계 진입 요청 시, 현재 해당 단계에 있는 모듈 수가 허용값 미만인지 확인.
- 권한 반납: 조작 종료 또는 일정 시간 무조작 시 토큰 회수.
ST 의사코드 — 모듈 측 지령 검증
(* I/O MAP - 모듈 3 운전 제어기, 보호계통과 분리 *)
(* %I5.0-%I5.3 DI_MODULE_ID_BIT0..3 : 캐비닛 하드웨어 점퍼 식별자 *)
(* %I5.4 DI_NET_A_OK : 제어 네트워크 A 정상 *)
(* %I5.5 DI_NET_B_OK : 제어 네트워크 B 정상 *)
(* %I5.6 DI_LOCAL_CTRL_SEL : 모듈 현장 제어 선택 - 원격 지령 차단 *)
(* %I5.7 DI_RPS_TRIP_STATUS : 모듈 원자로 트립 상태 - 감시 전용 *)
(* %IW500 AI_CMD_MODULE_ID : 수신 지령의 대상 모듈 식별자 *)
(* %IW501 AI_CMD_TOKEN : 수신 지령의 권한 토큰 *)
(* %IW502 AI_CMD_SEQ : 수신 지령 순번 *)
(* %IW503 AI_SHARED_STARTUP_CNT : 공용 계통 사용 중인 기동 단계 모듈 수 *)
(* %Q5.0 DO_CMD_ACCEPT : 지령 수용 *)
(* %Q5.1 DO_WRONG_MODULE_ALM : 대상 모듈 불일치 경보 *)
(* %Q5.2 DO_HOLD_STABLE_STATE : 안정 상태 유지 모드 *)
(* 1. 하드웨어 식별자 조립 *)
MY_MODULE_ID := BOOL_TO_INT(DI_MODULE_ID_BIT0)
+ BOOL_TO_INT(DI_MODULE_ID_BIT1) * 2
+ BOOL_TO_INT(DI_MODULE_ID_BIT2) * 4
+ BOOL_TO_INT(DI_MODULE_ID_BIT3) * 8;
(* 2. 트립 상태 또는 현장 제어 선택 시 원격 지령 불수용 *)
REMOTE_ALLOWED := NOT DI_RPS_TRIP_STATUS AND NOT DI_LOCAL_CTRL_SEL;
(* 3. 네트워크 양쪽 두절 - 마지막 지령 추종 금지, 안정 상태 유지 *)
IF NOT DI_NET_A_OK AND NOT DI_NET_B_OK THEN
DO_HOLD_STABLE_STATE := TRUE;
REMOTE_ALLOWED := FALSE;
END_IF;
(* 4. 새 지령 수신 시 종단 검증 *)
IF NEW_CMD_RX AND REMOTE_ALLOWED THEN
IF AI_CMD_MODULE_ID <> MY_MODULE_ID THEN
DO_CMD_ACCEPT := FALSE;
DO_WRONG_MODULE_ALM := TRUE; (* 폐기 후 상위에 불일치 보고 *)
ELSIF AI_CMD_TOKEN <> ACTIVE_TOKEN THEN
DO_CMD_ACCEPT := FALSE; (* 권한 없는 워크스테이션 *)
ELSIF AI_CMD_SEQ <> LAST_SEQ + 1 THEN
DO_CMD_ACCEPT := FALSE; (* 순번 불연속 - 재전송·중복 의심 *)
ELSIF IS_STARTUP_CMD AND (AI_SHARED_STARTUP_CNT >= R_MAX_CONCURRENT_STARTUP) THEN
DO_CMD_ACCEPT := FALSE; (* 공용 계통 동시 사용 제한 *)
ELSE
DO_CMD_ACCEPT := TRUE;
LAST_SEQ := AI_CMD_SEQ;
END_IF;
END_IF;
R_MAX_CONCURRENT_STARTUP은 공용 계통 용량과 운전 인원 배치로 정해야 하는 값이며 설계마다 다릅니다. 순번 검증은 통신 재전송으로 같은 지령이 두 번 실행되는 것을 막기 위한 것인데, 제어기 재기동 후 순번 동기화 절차를 따로 정의하지 않으면 정상 지령까지 거부됩니다. 통신 프로토콜의 지연·재전송 특성은 실측 요망 항목입니다.
시운전 체크리스트
- □ 모듈마다 하드웨어 식별자 점퍼 설정을 사진과 함께 기록하고, 식별자 중복이 없는지 확인합니다.
- □ 의도적으로 다른 모듈 식별자를 실은 시험 지령을 보내 폐기·경보·기록이 되는지 확인합니다.
- □ 두 워크스테이션이 같은 계통에 동시에 권한을 요청할 때 한쪽만 토큰을 받는지 확인합니다.
- □ 네트워크 A·B를 순차 및 동시에 분리해 안정 상태 유지 모드 진입을 확인합니다.
- □ 공용 계통 동시 기동 제한값을 넘는 요청이 거부되고, 거부 사유가 HMI에 표시되는지 확인합니다.
- □ 모듈별 수동 원자로 정지 수단이 공용 네트워크 전원 차단 상태에서도 동작하는지 확인합니다.
경계 조건 — 이 설계가 틀리게 되는 조건
첫째, 모듈마다 독립 제어실을 두는 구성입니다. 제어실이 분리되면 잘못된 모듈 지령의 위험이 물리적으로 줄어들므로, 종단 검증은 필수가 아니라 추가 방어가 됩니다. 대신 제어실 간 공용 계통 배분 인터락이 더 중요해집니다.
둘째, 공용 계통이 사실상 없는 설계입니다. 모듈마다 보조계통을 독립으로 갖추면 동시 사용 제한은 필요 없고, 인터락은 조작 권한과 식별자 검증만 남습니다.
셋째, 운전원 한 명이 여러 모듈을 동시에 감시하는 인원 배치입니다. 이 경우 오조작보다 경보 폭주 시 우선순위 판단이 먼저 제약이 되므로, 경보 우선순위 체계를 인터락과 같은 무게로 설계해야 합니다.
단일 판단 기준은 이렇습니다. 지령을 실행하는 모듈 제어기가 하드웨어로 고정된 자기 식별자와 지령의 대상 식별자를 직접 대조하지 않는다면, 다중 모듈 공용 제어실의 오조작 방지 구조는 완성된 것이 아닙니다.


