래치와 리셋과 인지는 같은 동작이 아니다
운전자가 Acknowledge를 누르자 빨간 배너가 사라지고 화면은 조용해졌다. 그런데 컨베이어는 여전히 trip 상태로 막혀 있고, 아무도 누르지 않은 reset을 기다리고 있다. 열에 아홉은 원인이 같다. 비트 하나가 acknowledge와 reset을 겸하게 되어 있어서, ack가 조용히 latch를 지운 것이다. 알람 조건, 래치 메모리, 운전자의 인지, 리셋 명령은 서로 다른 네 개의 신호이고, 이 중 두 개가 비트를 공유하는 순간 이런 부류의 사고가 난다.
ISA-18.2(그 전의 EEMUA 191도)가 이걸 상태 머신으로 모델링하는 데는 이유가 있다. Normal, Unacknowledged, Acknowledged, Return-to-Normal-Unacknowledged가 별개 상태인 것은 acknowledge와 return-to-normal이 서로 독립된 축이기 때문이다. 표준을 전부 구현할 필요는 없지만, 알람은 "정상 복귀됐지만 아직 미인지" 상태로 머물 수 있어야 하고 그게 Normal로 무너지면 안 된다.
일반적인 흐름은 다음과 같다.
- 공정 조건이 비정상으로 들어온다.
- 알람 active bit가 켜진다.
- 입력이 사라져도 보이도록 알람을 래치할 수 있다.
- 운전자가 알람을 봤다는 의미로 acknowledge를 한다.
- 공정 조건이 정상으로 돌아온다.
- 리셋 조건이 맞으면 latch가 해제된다.
- 알람 이력에는 active, acknowledge, return-to-normal, reset 시간이 남는다.
Acknowledge를 몰래 reset처럼 쓰면 안 된다. 운전자는 고장이 아직 남아 있어도 알람을 확인할 수 있다. 확인 버튼을 눌렀다는 이유로 배너에서 사라지면 화면은 조용한데 설비는 계속 막혀 있는 상태가 된다.
화면을 만들기 전에 상태 모델부터 정한다
알람 서버 설정이나 PLC 로직을 만들기 전에 상태를 말로 먼저 정리한다.
| 상태 항목 | 의미 | 보통의 출처 |
|---|---|---|
| Active | 비정상 조건이 지금 참이다. | PLC 비교 로직, 안전 릴레이, 장치 진단 |
| Latched | 리셋 조건이 맞을 때까지 알람을 기억한다. | PLC 로직 또는 알람 시스템 설정 |
| Acknowledged | 운전자나 관리자가 알람을 봤다고 확인했다. | HMI/SCADA 알람 서버 |
| Returned to normal | 비정상 조건이 해제됐다. | Active bit로부터 알람 서버가 만든 이벤트 |
| Reset requested | 누군가 리셋을 눌렀거나 시퀀스가 리셋을 요청했다. | HMI 명령, PLC 명령, 보전 작업 |
중요한 설비 trip은 보통 제어 로직 가까이에서 래치하는 편이 낫다. 단순 경고성 알람은 알람 서버의 래치 기능으로 충분할 수 있다. 중요한 것은 어디에 둘지 프로젝트가 먼저 결정하는 것이다. 운전자가 "알람이 너무 빨리 사라진다"고 말한 뒤에 정하면 늦다.
래치를 어디에 둘지 결정한다
알람 래치는 보통 두 위치 중 하나에 둔다.
PLC나 컨트롤러에서 래치하는 경우
래치 상태가 설비 복구, 시퀀스 퍼미시브, 안전 관련 운전 조치에 영향을 주면 PLC 쪽이 맞다. 모터 과부하 trip, 비상정지 체인 이상, 버너 trip, 유압 압력 이상, 로봇 셀 인터록 같은 항목이 여기에 들어간다.
시운전 때는 다음을 본다.
- 전원 재투입 후 래치 상태가 어떻게 되는지 정해져 있다.
- 통신이 끊겨도 필요한 경우 래치가 유지된다.
- Active 조건이 남아 있으면 reset이 막힌다.
- 보전용 bypass가 latch를 조용히 지우지 않는다.
- HMI에 보이는 latch 상태와 시퀀스가 보는 latch 상태가 같다.
SCADA 알람 서버에서 래치하는 경우
주 목적이 가시성과 이벤트 이력이라면 알람 서버 래치가 맞을 수 있다. 짧은 통신 끊김, 공정 편차, 계기 진단 알람처럼 운전자가 확인할 때까지 목록에 남겨야 하는 알람이 예다.
확인할 내용은 다음과 같다.
- 알람 서버가 active, acknowledge, return-to-normal 이벤트를 남긴다.
- 알람 summary filter가 return됐지만 미인지 상태인 알람을 숨기지 않는다.
- 이중화 서버 failover 뒤에도 latch 상태가 어긋나지 않는다.
- 리포트에서 배너에 머문 시간뿐 아니라 실제 active 시간이 보인다.
리셋에는 조건이 있어야 한다
Reset 버튼은 지우개가 아니다. 눌렀을 때 무엇이 허용 조건인지 분명해야 한다.
자주 쓰는 reset permissive는 다음과 같다.
- 실제 fault 입력이 꺼져 있다.
- 관련 설비가 정지 또는 안전 상태다.
- 대기 중인 자동 시작 명령이 없다.
- Local maintenance mode가 remote reset을 막고 있지 않다.
- 필요한 현장 장치 feedback이 돌아왔다.
- 영향이 큰 reset이면 필요한 권한을 가진 사용자다.
Reset 버튼 근처에는 막힌 이유를 보여준다. 설명 없이 회색으로만 비활성화하면 운전자는 계속 버튼을 누르고 보전팀에는 "리셋이 안 된다"는 연락이 간다.
여기서 사람들이 자주 걸리는 구현 문제가 하나 있다. reset을 HMI에서 나가는 맨 momentary pulse가 아니라, PLC 안에서 정해진 시간 동안 유지되는 level 명령으로 만드는 게 낫다. 한 scan짜리 HMI 펄스는 500 ms짜리 OPC 갱신 주기나 느린 gateway를 건너다 삼켜지고, 그러면 운전자는 reset이 "안 먹힌다"고 확신하게 된다. 나는 reset 요청을 PLC scan 두어 번(대략 500 ms) 동안 참으로 잡아두고 컨트롤러가 소비하게 하지, SCADA 계층을 한 번 왕복하는 것을 믿지 않는다.
표시는 구체적일수록 좋다.
| 부족한 표시 | 더 나은 표시 |
|---|---|
RESET DISABLED | Reset blocked: 토출 압력이 아직 높음 |
FAULT | Drive fault active. Drive ready feedback 복귀 후 reset 가능 |
NOT READY | Reset blocked: 방호문 입력 열림 |
Acknowledge는 수리가 아니라 증거다
Acknowledge가 답해야 하는 질문은 하나다. 누가 언제 알람을 봤는가.
알람 등급별로 acknowledge가 reset 전에 필요한지, reset 뒤에 필요한지, reset과 독립인지 정한다. 모든 설비에 맞는 하나의 규칙은 없다.
예를 들면 다음과 같다.
- 압축기 trip은 fault가 사라지고 알람도 acknowledge되어야 재기동을 허용할 수 있다.
- 탱크 high-high 알람은 운전자가 확인해도 수위가 reset threshold 아래로 내려가기 전까지 latch를 유지할 수 있다.
- 통신 알람은 자동으로 정상 복귀되지만 운전자가 검토할 때까지 미인지 항목으로 남길 수 있다.
Global acknowledge 버튼은 조심해서 써야 한다. 허용하더라도 누가 눌렀는지 이력에 남기고, 아직 active인 알람은 계속 눈에 띄게 보여야 한다.
Return-to-normal은 reset이 아니다
Return-to-normal은 active 조건이 더 이상 참이 아니라는 뜻이다. 래치가 해제됐다는 뜻은 아니다.
다음 상황을 놓치기 쉽다.
- 진동 알람이 사라졌는데 실제로는 센서가 낮은 값으로 고장났다.
- 압력 알람이 사라졌는데 transmitter quality가 bad로 바뀌었다.
- 정전 뒤 motor overload bit는 꺼졌지만 starter는 현장 reset을 요구한다.
- 네트워크 알람은 복귀됐지만 끊긴 동안의 buffered data가 빠져 있다.
Quality 정보를 쓸 수 있으면 알람 조건에 포함한다. 아날로그 high alarm이 input quality bad 때문에 조용히 정상 처리되면 안 된다. 별도의 bad quality alarm을 두거나 quality-aware expression으로 만든다.
시운전 때는 상태표로 시험한다
비트 하나만 강제해서 끝내지 말고 작은 상태표로 시험한다.
| 시험 | 기대 결과 |
|---|---|
| Active가 켜짐 | 알람이 active, unacknowledged로 표시된다. |
| Active 상태에서 acknowledge | 알람은 active로 남고 acknowledge 시간이 기록된다. |
| Acknowledge 전에 active 해제 | 정책에 따라 returned-to-normal이지만 unacknowledged로 남는다. |
| Active 상태에서 reset | Latch가 해제되지 않고 막힌 이유가 보인다. |
| Active 해제 뒤 reset | Latch가 해제되고 reset 이벤트가 기록된다. |
| 알람 중 HMI 재접속 | 컨트롤러와 알람 서버 이력의 상태가 화면과 맞는다. |
FAT에서는 배너, 상세 화면, 이벤트 로그를 단계별로 캡처한다. SAT에서는 적어도 한 항목은 소프트웨어 강제가 아니라 실제 현장 장치 신호로 반복한다.
현장에서 자주 나는 문제
- Ack bit가 reset 로직에 물려 있어서 fault가 남아 있는데 알람이 사라진다.
- PLC latch는 warm restart 때 사라졌는데 알람 서버에는 예전 active 상태가 남아 있다.
- Reset 명령이 순간 펄스라서 scan, gateway, OPC update rate 때문에 누락된다.
- 알람 목록 filter가 return됐지만 미인지인 알람을 숨겨 짧은 trip을 검토하지 못한다.
- 여러 알람이 reset bit 하나를 공유해 관계없는 fault까지 같이 지워진다.
- 알람 문구는 reset 필요라고 나오지만 어떤 장치나 interlock이 막는지 알려주지 않는다.
래치 알람마다 네 줄
누가 HMI를 손대기 전에, 래치 알람마다 네 가지를 적는다. 무엇이 set하는지, 무엇 때문에 유지되는지, 무엇이 reset을 허용하는지, 막혀 있는 동안 운전자가 무엇을 봐야 하는지다. 스프레드시트 한 줄이면 된다. 이걸 건너뛰면 시운전팀은 알람 동작을 걸려 넘어지면서 배우게 되는데, 보통 SAT 때, 보통 발주처가 지켜보는 앞에서 그렇게 된다.