← 전체 글
HMI/약 15분 읽기/— 조회

HMI에 Step 40만 뜬다면, 무엇을 기다리는지도 같이 띄워라

시퀀스 화면에 step number만 있으면 운전원은 화면 네 개를 뒤진다. State, step, hold reason을 나누고 hold reason을 latch한다.

HMISCADA문제 해결프로젝트 노트체크리스트

운전원 전화는 대체로 같은 문장으로 시작한다. "설비가 안 움직여요." 화면을 열어 보면 Auto Running, 아니면 Step 40. 그게 전부다.

멈춘 건 운전원도 안다. 알고 싶은 건 무엇을 기다리느냐다. 밸브 feedback인지, 온도 permissive인지, 후단 설비 ready인지, 아니면 자기가 눌러야 할 확인 버튼인지. 시퀀스 화면 설계는 거의 이 한 가지로 수렴한다. State, step, hold reason은 서로 다른 정보이고, holding일 때 hold reason이 어디서 나오는지가 화면의 핵심이다.

시퀀스 state 진행: IDLE, STARTING, RUNNING, COMPLETING. RUNNING에서 HOLDING으로 빠졌다가 다시 돌아온다. HOLDING일 때 화면에 나눠 보여 줄 세 항목은 State(Holding), Step(40 - Tank A Fill), Hold reason(FV-102)이다. 시퀀스 STATE와 화면에 나누는 세 항목 IDLE STARTING RUNNING COMPLETING HOLDING State Step Hold reason Holding 40 - Tank A Fill FV-102

화면에 최소한 있어야 하는 것

좋은 시퀀스 화면은 PLC 프로그램 전체를 보여 주는 화면이 아니다. 지금 상태, 현재 step, 다음에 일어날 동작, 그리고 왜 hold 중인지를 보여 주는 화면이다. 그 이상은 유지보수 화면이 받으면 된다.

  • unit 또는 설비 이름.
  • mode: manual, auto, semi-auto, maintenance, simulation.
  • sequence state: idle, starting, running, holding, completing, aborting, faulted.
  • 현재 step number와 step name.
  • active hold reason 또는 첫 번째 blocking condition.
  • 현재 step에서 경과한 시간.
  • 안전한 recovery action.

Raw integer step만 보여 주면 운전원은 여전히 PLC 출력물이나 제어 엔지니어를 찾아야 한다. 운전 화면으로는 부족하다.

이 목록을 어디에 놓느냐도 정해져 있다. ANSI/ISA-101.01-2015가 말하는 display hierarchy에서 시퀀스 상세는 Level 3, unit 상세 화면 쪽이다. Level 1 overview까지 hold reason 문구를 끌어올리면 그 화면은 더 이상 overview가 아니다. 반대로 hold reason을 Level 4 진단 화면에만 두면 운전원은 절대 못 본다.

Step number와 이름을 같이 보여 준다

Step number는 엔지니어에게 필요하다. PLC logic, commissioning 기록, alarm 이력과 맞춰 보기 쉽다. Step name은 운전원에게 필요하다. 지금 공정이 무엇을 하는지 바로 알 수 있기 때문이다.

둘을 같이 보여 주는 편이 좋다.

Step 40 - Fill Valve Open Feedback 대기

아래처럼 숫자만 보이면 현장 대응이 느려진다.

Step = 40

반대로 숫자를 완전히 숨기는 것도 좋지 않다. 장애 대응 중 제어 엔지니어가 "몇 step에서 멈췄나요?"라고 물을 때 HMI에서 바로 답이 나와야 한다.

Step name은 자주 바꾸지 않는다. Heat Soak를 Temperature Stabilization으로 바꾸는 일이 화면상으로는 작아 보여도, 절차서, 교육 자료, 교대 인수인계 표현과 어긋날 수 있다. 이름을 바꿔야 한다면 alarm text, SOP, historian event label도 같이 정리한다. 한 군데만 바꾸면 6개월 뒤 아무도 두 이름이 같은 step인 줄 모른다.

State, step, hold reason을 분리한다

현장 화면에서 아래 세 가지가 한 문장으로 뭉쳐 있는 경우가 많다.

항목예용도
StateHolding시퀀스 controller가 지금 어떤 상태인지
StepStep 40 - Fillrecipe나 cycle에서 어느 위치인지
Hold reasonFV-102 open feedback 미검출왜 다음으로 못 가는지

이 셋을 섞으면 Sequence Fault, Waiting 같은 애매한 문구만 남는다. 아래처럼 나눠 보이면 훨씬 낫다.

State: Holding
Step: 40 - Tank A Fill
Hold: FV-102 open feedback 8.0초 이내 미검출
Next: air supply와 valve limit switch 확인 후 hold reset

State 이름을 직접 지었다면 ISA-TR88.00.02, 흔히 PackML이라 부르는 machine state model에 한 번 매핑해 보길 권한다. 거기서 HOLDING과 HELD는 다른 state다. HOLDING은 hold로 넘어가는 중이고 HELD는 이미 멈춰 서 있는 상태다. 이 둘을 한 단어로 합쳐 놓으면 "지금 세우는 중"과 "이미 서 있음"이 화면에서 구분되지 않는다. 운전원이 더 기다릴지 개입할지 결정하는 지점이 정확히 거기다.

HMI가 alarm system을 대신할 필요는 없다. 다만 sequence control 근처에서 현재 원인을 바로 볼 수 있어야 한다. 운전원이 overview, alarm summary, valve faceplate를 계속 왕복하게 만들면 대응이 늦어진다.

첫 번째 blocking condition은 PLC 기준으로 잡는다

시퀀스에는 permissive가 많다. 전부 한 번에 펼치면 정상적으로 꺼져 있는 조건까지 섞여서 화면이 지저분해진다. 그렇다고 Hold 한 단어만 보이면 원인을 알 수 없다.

실무에서는 아래 방식이 다루기 쉽다.

  1. PLC가 시퀀스 진행에 사용하는 첫 번째 blocking condition을 크게 표시한다.
  2. blocker가 여러 개면 나머지는 짧은 목록으로 보여 준다.
  3. 전체 조건은 detail 버튼으로 permissive 또는 interlock 화면에서 확인하게 한다.

여기서 "첫 번째"는 SCADA tag가 먼저 들어온 순서가 아니다. PLC logic에서 정한 우선순위여야 한다. SCADA에서 tag update 순서로 계산하면 scan timing이나 network delay에 따라 원인이 바뀌어 보인다. 같은 고장을 두 번 보는데 원인이 다르게 뜨는 화면은 안 보느니만 못하다.

Package 장비라면 vendor에게 controller 내부 우선순위를 확인한다. 없다면 commissioning 중에 현장 기준으로 우선순위를 정하고 문서에 남긴다.

Timer는 의미가 있어야 한다

Timer는 장식이 아니다. 운전원이 정상 진행인지 판단하는 기준이다. 시퀀스 화면에서 유용한 timer는 다음과 같다.

  • 현재 step elapsed time.
  • 설정된 timeout.
  • soak, purge, drain, cool-down step의 remaining time.
  • timeout alarm 기준.
  • 가능하면 직전 정상 cycle time.

예시는 이런 형태가 좋다.

Step elapsed: 00:01:18
Fill timeout: 00:02:00
Expected fill time: 00:00:55 to 00:01:20

Timer에는 단위와 의미가 있어야 한다. 78 같은 숫자만 던져 주면 초인지, scan count인지, 내부 preset인지 알 수 없다. Step 전환 때 timer가 reset된다면, 이전 step 값이 화면에 남아 있을 때 previous step임을 표시한다.

세 번째 줄, 직전 정상 cycle time이 실제로는 제일 많이 쓰인다. Timeout까지 40초 남았다는 사실보다 평소보다 이미 두 배 걸렸다는 사실이 먼저 판단을 만든다.

현장에서 자주 보는 문제

HMI가 다음 step을 너무 빨리 보여 준다

일부 PLC program은 동작이 끝나기 전에 다음 step number를 미리 load한다. HMI에는 Step 50 - Agitate가 보이는데 실제 설비는 아직 fill 중일 수 있다. Startup이나 fault recovery 때 혼란이 생긴다.

Dry cycle에서 display step, 실제 output, sequence state를 같이 확인한다. Step number가 active step이 아니라 commanded next step이라면 label을 바꾸거나 active step tag를 별도로 만든다.

Hold reason이 너무 빨리 사라진다

Feedback이 한 번 튀고 hold reason이 한 scan만 보였다가 사라지는 경우가 있다. 나중에 시퀀스가 다시 실패해도 중요한 단서는 이미 없어졌다.

Last hold reason과 timestamp를 다음 sequence start, reset, operator clear 전까지 latch한다. 셋 중 어느 것으로 지워지는지는 화면과 절차에 명시한다. 조건 없이 영구 latch하면 이번엔 지난주 hold reason이 계속 붙어 있는 화면이 된다.

Manual recovery 화면에서 context가 끊긴다

Fault 후에는 밸브 jog, vessel drain, actuator home 복귀 같은 조작이 필요할 수 있다. Recovery control이 sequence 화면과 떨어져 있으면 운전원이 다른 unit을 조작하거나 필요한 permissive를 놓친다.

Recovery faceplate에도 같은 unit name, current step, hold reason, command target을 보여 준다. 같은 설비가 여러 대 늘어선 line에서는 이게 화면 설계가 아니라 안전장치다.

Simulation과 bypass가 ready처럼 보인다

Commissioning bypass나 simulation bit를 화면에서 숨기는 경우가 있다. 화면은 깔끔해지지만 test 후 bypass가 남아 있으면 위험하다.

시퀀스 진행에 영향을 주는 bypass, force, simulation, maintenance permissive는 hold reason 옆에 표시한다. 교대 인수인계 항목에도 넣는다.

Historian과 event log도 같은 언어를 쓴다

시퀀스 문제는 화면과 이력이 같은 표현을 쓸 때 빨리 풀린다. 최소한 아래 event는 남긴다.

  • sequence start, complete, abort, reset.
  • step change와 step number/name.
  • hold reason change.
  • timeout alarm.
  • operator recovery command.
  • bypass enable/disable.

가능하면 controller source timestamp를 쓴다. 빠르게 지나가는 step은 historian deadband나 느린 scan class 때문에 사라진다. Step number, state, hold reason은 느린 analog trend가 아니라 event 성격의 값으로 다룬다.

Commissioning 때 꼭 해 볼 것

인수인계 전에 정상 cycle 한 번과 의도적인 abnormal case 두 개 이상은 확인한다.

  1. Feedback 하나를 막고 hold reason이 실제 blocker와 맞는지 본다.
  2. Timeout을 발생시키고 alarm text, sequence display, event log가 같은 내용을 말하는지 확인한다.
  3. Step이 빠르게 넘어갈 때 진단에 필요한 중간 step이 빠지지 않는지 본다.
  4. Auto에서 manual로, 다시 auto로 갈 때 승인된 recovery path만 사용하는지 확인한다.
  5. HMI, alarm text, historian event, 절차서의 step name이 같은지 맞춘다.
  6. 다국어 화면이라면 설비 이름과 hold reason이 잘리지 않는지 실제 panel 해상도에서 본다.

마지막으로 하나 더. Hold reason 문구는 화면 폭보다 PLC 쪽 string 길이에 먼저 걸린다. Logix 계열 기본 STRING은 82자다. FV-102 open feedback not made after 8.0 s 정도까지는 들어가지만 unit prefix와 다국어를 붙이면 금방 넘어가고, 넘어간 부분은 조용히 잘린다. 문구를 확정하기 전에 그 길이부터 재 본다.