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