새벽 2시에 실제로 사람을 깨우는 SCADA 알람 콜아웃 설계
원격 알람 통보는 전달 경로일 뿐 알람 시스템이 아니다. 무엇을 호출로 내보낼지, 사람의 반응 속도에 맞는 에스컬레이션 시간, 그리고 전달 여부를 증명하는 방법.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
원격 알람 통보는 전달 경로일 뿐 알람 시스템이 아니다. 무엇을 호출로 내보낼지, 사람의 반응 속도에 맞는 에스컬레이션 시간, 그리고 전달 여부를 증명하는 방법.
센서와 SCADA 태그 사이 어디에서 온도 선형화와 냉접점 보상이 실제로 일어나는지, 그리고 엉뚱한 곳에서 처리하면 왜 믿고 쓰는 값이 조용히 편향되는지.
떨리는 4-20 mA 값을 1차 필터와 이동 평균으로 다듬는 법, 필터를 어디에 둘지, 그리고 엉뚱한 태그를 필터링하면 왜 정작 필요한 알람이 늦어지는지.
Rate-of-rise, rate-of-fall 알람 설계: window 길이, 노이즈 필터, 공학 단위, comms 복구 때 알람 폭주를 막는 quality gating.
SCADA에서 lead/lag/standby 펌프 순환 구성: 듀티 분배, standby failover, 역할 교체가 예측 가능하고 운전자 눈에 보이게.
Hot-standby PLC는 전환이 증명되고 동기화 상실에 알람이 있어야 값을 한다. CPU 이중화가 막는 것과 못 막는 것, 양방향 전환 시험.
현장 계기에서 PLC를 거쳐 SCADA까지 모든 4-20 mA 포인트를 처음부터 끝까지 검증하고, 뒤바뀐 두 트랜스미터를 시운전 후가 아니라 전에 잡아내는 방법.
OPC UA Republish는 놓친 notification을 되살린다. 단, 클라이언트가 sequence number를 감시하고 재전송 큐가 맞을 때만 그렇다.
단선, 포화, 얼어붙은 입력도 그럴듯한 숫자가 된다. 과범위·저범위·정지된 4-20 mA 신호를 운전원과 제어 루프 전에 감지하는 법.
PLC나 HMI가 재시작된 뒤 오래된 명령이 다시 실행되지 않도록 command bit, 응답, startup 복구를 설계하고 시험하는 방법.
Alarm help text는 한 번 쓰이고 안 읽힌다. 야간 운전원이 바로 행동할 cause/consequence/response 쓰는 법과 빠지기 쉬운 ISA-18.2 항목.
최신순 정렬과 숨은 Area Filter가 Alarm Summary에서 알람을 지운다. ISA-18.2 상태와 flood 기준으로 정렬, 필터, 숨김 개수 정하기.
HMI 화면에서 색상, 형태, 텍스트, 상태 우선순위를 정해 비정상 상태를 현장에서 잘 보이게 만드는 실무 기준.
마지막 값 유지, 버려진 quality code, 도착 시간에 찍힌 지연 샘플. 장애 후 트렌드가 거짓말하는 세 가지 원인과 어느 쪽인지 가려내는 방법.
운전원이 지금 어느 설비를 조작하는지 화면이 스스로 밝히게 만드는 방법. ISA-101.01 display hierarchy, 범위가 보이는 버튼 label, 복사 화면 검증까지.
시퀀스 화면에 step number만 있으면 운전원은 화면 네 개를 뒤진다. State, step, hold reason을 나누고 hold reason을 latch한다.
쓰기 가능해 보이는 setpoint가 BadUserAccessDenied로 거부되는 이유. UserAccessLevel, WriteMask, 운영 계정 시험.
정비 Bypass는 Comment가 아니라 운전 상태다. Tag 이름, ISA-18.2 Out of Service, 만료 규칙, 임시 우회가 영구가 되지 않게 막는 Audit.
혼 정지를 ack 태그에 묶으면 이벤트 로그가 첫날부터 틀린다. 혼 정지, ack, 리셋, shelve를 ISA-18.2 상태로 나누고 시험하는 법.
HMI 버튼 조건을 권한, 모드, 퍼미시브, 인터록, 품질로 나누고 실제 차단 사유를 운전원에게 보여주는 설계 방법.
재사용 페이스플레이트 팝업의 컨텍스트 전달 설계. 설비 키, 명령 바인딩 검증, OPC UA StatusCode로 본 품질 처리, ISA-101 화면 계층 기준으로 정리했다.
NodeId는 재생성되고 browse path는 깨지고 DisplayName은 라벨이다. 펌웨어 업데이트에도 버티는 참조를 HMI·히스토리언에 고르는 기준.
트렌드 축을 0~100%로 clamp하면 NAMUR NE 43 고장 전류(−2.5%, 106.25%)가 사라진다. EURange, 알람선, 다중 축, 시운전 확인.
Calibration, manual 전환, bypass를 sampled stream과 분리된 event record로 남기고 asset ID와 시간 구간으로 잇는 법.
RSTP, MRP, PRP 링 시운전: 복구 시간, 끊어진 OPC UA subscription, 반쯤 열린 Modbus socket, alternate path의 빠진 VLAN.
OPC UA channel, session, subscription은 각자 만료된다. 죽은 쪽을 알면 firewall, 서버 부하, keepalive 중 볼 곳이 나온다.
알람 priority를 결과 영향과 운전자 대응 시간으로 매기는 법. High priority를 드물게 지키는 EEMUA 191, ISA-18.2 목표치까지.
Standing alarm은 ack됐지만 아직 active인 알람이다. ISA-18.2 stale alarm 기준으로 검토해 alarm summary의 소음을 없애는 법.
20 ms reject pulse는 250 ms 폴링으로 못 잡는다. PLC scan time, driver, historian에 맞춰 polling rate를 정하는 법.
HMI, historian, PLC log, alarm list는 같은 사건을 몇 초씩 다르게 찍는다. Source/ServerTimestamp, NTP·PTP, UTC 확인법.
녹색 redundancy 아이콘은 heartbeat만 증명한다. 서버 전환 때 client, alarm, historian, background job에서 확인할 것.
HMI setpoint는 입력이 아니라 응답 경로에서 깨진다. 표시 범위와 PLC hard limit 분리, 조용한 반올림과 무시된 write 잡는 시험 10가지.
Valve 강제 개방과 유량값 대체는 다른 override인데 `Manual` bit 하나로 못 가른다. 표시, 권한, 시간 제한, 로그를 설계하는 법.
OPC DA quality, OPC UA StatusCode, DNP3 flag가 실제로 하는 일과, 죽은 신호가 정상 값처럼 보이지 않게 표시·알람·저장하는 법.
레시피 다운로드에서 선택값·다운로드값·운전값을 태그로 나누고, PLC가 인정한 값을 echo로 대조하는 방법. 거부 사유를 파라미터 단위로 남기는 설계까지.
HMI/SCADA 복원 리허설: 백업에서 빠지는 항목, OPC UA 인증서와 service account 함정, 항목별 RPO, 합격 기준, 실측 RTO.
OPC UA monitored item queue, discard policy, Overflow 비트가 클라이언트가 모든 변화를 받을지 최신 값만 받을지 정한다.
ack와 reset이 비트 하나를 쓰면 고장이 남아도 알람이 사라진다. active, latch, ack, return-to-normal, reset을 나누는 법.
faceplate가 5초 걸려 열리는 화면. first-load와 update 지연을 나눠 재고 태그 수·scan class·trend 조회·PLC 부하 순으로 좁힌다.
Modbus write 응답은 접수일 뿐 설비 동작이 아니다. Function code, permissive, readback, retry 함정으로 write를 명령답게 다룬다.
OPC UA method call은 Good을 돌려주고도 장비가 안 움직일 수 있다. HMI에 접수, 실행, 실패 사유를 보여주는 method call 설계.
Alarm banner filter는 suppression이 아니다. ISA-18.2가 둘을 나누는 이유, 기본 view, hidden alarm count, flood 시험.
IEC 62443-3-3 SR 5.2와 SR 1.13 기준으로 SCADA 원격 지원 경로를 설계하고, 시운전에서 막히는 쪽까지 시험하는 방법. 포트와 timeout 숫자 포함.
한 화면은 stopped, 다른 리포트는 faulted라고 한다. Raw signal을 하나의 derived status tag로 정리하고 판정 순서를 문서에 남기는 방법.
알람 on-delay, off-delay, debounce, deadband를 공정 시간과 ISA-18.2로 정한다. 첫 실제 경고는 살리고 nuisance alarm만 거른다.
알람 flood는 시작 원인을 묻어 버린다. First-out을 지키고, SOE timestamp를 신뢰하고, 통신 장애가 nuisance flood로 번지지 않게 하는 방법.
화면 상태를 command bit가 아닌 feedback으로 몰고, timeout을 실제 actuator 행정으로 잡고, 왜 reject됐는지 운전자에게 보여주는 방법.
범위, 공학 단위, word order, NAMUR 고장 임계값, quality를 확인해 PLC·SCADA·히스토리언이 같은 값을 보게 하는 스케일링 시운전.
HMI에서 퍼미시브, 인터록, inhibit, bypass, 명령 가능 상태, first-out 원인을 현장 운전에 맞게 보여주는 방법입니다.
알람 합리화 워크숍에서 알람을 줄이는 기준, 우선순위 조정, 조치 문구 정리 방법을 다룹니다.
MES 비가동 사유 코드를 현장에서 제대로 선택되게 만드는 법. 입력 프롬프트 타이밍, PackML 상태 기반 자동 분류, 리포트에 실제로 필요한 필드까지 정리했습니다.
모드는 누가 명령할 수 있는가, 상태는 지금 뭘 하고 있는가다. SEMI E30 GEM 제어 상태 모델에 맞춰 HMI 표시 칸을 나누는 방법과 커미셔닝 확인 항목.
태그 이름, 알람 개수, 화면 계층, 단선 처리, 재시작 후 명령 상태. 프로젝트 후반에 고치면 비싼 다섯 가지 결정과 ISA-18.2, ISA-101.01, NAMUR NE 43이 정해 놓은 기준.
이상 상황의 운전자 질문에 답하는 트렌드 화면. 루프 단위 묶기, 스케일 선택, 통신 끊김을 매끄러운 선으로 덮지 않기.
개별 태그 값을 작업자가 이해할 수 있는 설비 운영 상태로 묶는 방법을 설명합니다.
모터, 밸브, 인버터 같은 반복 장비를 일관된 방식으로 조작하기 위한 페이스플레이트 설계 기준입니다.
ISA-18.2가 나누는 보류·설계 억제·운영 제외·인터록 바이패스의 차이와, 숨긴 알람마다 담당자와 기록이 남게 설정하는 방법.
SCADA 시운전에서 태그, 화면, 알람, 트렌드, 권한, 장애 상황을 확인하는 실무 체크리스트입니다.
태그 값이 화면의 운영 상태로 바뀌는 과정을 직접 따라가며 확인하는 튜토리얼입니다.
알람을 많이 만드는 것보다 작업자가 조치할 수 있는 알람만 남기는 것이 왜 중요한지 설명합니다.
SCADA 태그가 단순 변수명이 아니라 통신 주소, 단위, 품질, 알람, 이력 설정을 연결하는 기준점임을 설명합니다.
HMI, SCADA, MES, 히스토리언을 역할 기준으로 구분하고 현장 아키텍처에서 어디까지 책임져야 하는지 정리합니다.
SCADA를 PLC 위의 단순 화면이 아니라, 설비 상태를 모으고 작업자가 판단할 수 있게 만드는 운영 계층으로 설명합니다.