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

HMI Breadcrumb는 프로젝트 폴더가 아니라 공정 계층을 따라야 한다

운전원이 지금 어느 설비를 조작하는지 화면이 스스로 밝히게 만드는 방법. ISA-101.01 display hierarchy, 범위가 보이는 버튼 label, 복사 화면 검증까지.

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

야간 교대에 chilled water pump popup 두 개가 나란히 열려 있었다. 둘 다 제목은 Pump Detail, 둘 다 정지 상태, 둘 다 Start 버튼. 운전원은 duty pump를 올린다고 생각했고, 실제로 돈 것은 standby였다.

화면에 틀린 값은 하나도 없었다. 어느 화면이 어느 pump인지만 안 적혀 있었다.

이런 건 graphic 문제로 잡으면 안 고쳐진다. Navigation 문제로 잡아야 고쳐진다.

화면 이동은 운전 기능이다

HMI navigation은 운전원이 지금 어디에 있다고 믿는지, 어느 장비에 명령을 보낸다고 믿는지, 이상 상황에서 몇 초 만에 overview로 돌아오는지를 결정한다. Breadcrumb와 area label은 그 믿음을 화면에 적어 두는 장치다.

항상 세 가지에 답이 되어 있어야 한다.

  • 지금 보는 곳이 어느 site, area, line, cell인가.
  • 선택된 장비가 무엇인가.
  • 이 버튼이 어디로 가고, 이 명령이 어느 범위에 걸리는가.

세 번째를 빼먹는 프로젝트가 제일 많다.

ISA-101의 4단계가 breadcrumb의 뼈대다

ISA-101.01-2015 Human Machine Interfaces for Process Automation Systems는 운전 화면을 네 단계로 나눈다. Level 1 area overview, Level 2 unit control, Level 3 unit detail, Level 4 진단·지원 화면이다. Breadcrumb는 결국 이 hierarchy 안에서 운전원의 현재 좌표를 적는 한 줄이다.

ISA-101이 같이 요구하는 것이 HMI Style Guide다. 화면을 어떻게 그리고 어떻게 이동할지 프로젝트 문서로 남기라는 것인데, 거기에 navigation 규칙까지 적는 프로젝트는 드물다. 안 적으면 화면마다 back button 동작이 달라진다. 그 차이를 결국 운전원이 외우게 된다.

폴더 구조가 아니라 공정 계층을 따른다

운전원은 HMI 프로젝트 폴더로 생각하지 않는다. 공정 area와 설비 이름으로 생각한다.

Plant 1 > Utilities > Chilled Water > CHW Pump 02

아래는 같은 화면인데 도움이 안 된다.

Main Menu > Pumps > Detail Screen > Object 17

첫 번째는 공정 위치를 알려 준다. 두 번째는 HMI 내부 구현을 보여 준다.

이름은 tag, alarm message, 작업 절차서, 현장 명판과 맞춘다. Alarm에는 UTIL-CHW-P02 Trip으로 뜨는데 detail 화면 제목이 Pump B면, 새벽에 부른 정비원이 두 번 묻는다.

길이도 관리한다. 나는 화면에 보이는 path를 40자 안쪽으로 자르고, 줄일 때는 상위 계층부터 줄인다. Area와 asset 이름은 안 자른다. 길어서 안 읽히는 breadcrumb는 없는 것과 같다.

Detail 화면은 자기 정체를 스스로 밝혀야 한다

Faceplate와 popup에서 context가 가장 자주 사라진다. 명령을 보낼 수 있는 화면이라면 최소한 이것들이 보여야 한다.

  • equipment tag 또는 asset name
  • area 또는 line name
  • 현재 mode와 running state
  • 명령이 걸리는 범위
  • 원래 overview로 돌아가는 길
  • 필요하면 active trip 요약이나 alarm count

제목에 식별자를 넣는다. CHW Pump 02 - Detail이 Pump Detail보다 안전하다. Popup이 parameter를 받아 자기 target을 확인하는 방법은 재사용 faceplate의 context 전달에 따로 정리해 뒀다.

응답 속도도 여기 걸린다. Detail 화면이 1초 안에 안 열리면 운전원은 한 번 더 누른다. Popup 두 개가 겹쳐 뜨고, 위에 있는 게 어느 asset인지 다시 알 수 없게 된다.

넓은 범위의 명령은 label에 범위를 적는다

Reset, Start, Acknowledge는 그 자체로 범위가 없는 단어다. Motor 하나인지 line 전체인지 화면이 말해 주지 않으면 운전원이 추측한다.

적용 범위더 나은 label
Motor 하나Reset CHW-P02
Skid 하나Reset Skid A Faults
Area 하나Acknowledge Utilities Alarms
Line 하나Start Line 3 Conveyor Sequence

Area 단위 명령은 label만으로 부족하다. 누를 수 있는 사람도 제한한다. IEC 62443-3-3 SR 2.1 Authorization enforcement가 요구하는 것이 그것이고, HMI에서는 보통 버튼 단위 권한으로 내려온다. Confirmation dialog도 계속하시겠습니까?로 끝내지 말고 실제 target을 다시 적는다.

Alarm에서 화면까지 안 이어지면 대응 절차는 종이에만 있다

ISA-18.2-2016은 모든 alarm에 정의된 운전원 대응이 있다는 전제 위에 서 있다. Alarm banner를 눌렀는데 parameter가 안 넘어가서 default asset이 뜨는 HMI에서는, 그 대응 절차가 실제로 실행되지 않는다. 운전원은 엉뚱한 trend를 보고 판단한다.

그래서 시운전 때 alarm-to-detail 이동은 asset 하나만 보고 넘기면 안 된다. 복사해서 만든 장비, 다른 area의 장비, 이름이 긴 장비를 섞어서 본다.

막다른 화면을 만들지 않는다

Dead-end screen은 상세 정보는 많은데 운전 화면으로 빨리 돌아갈 길이 없는 화면이다. 프로젝트 후반에 diagnostic page를 급히 얹을 때 자주 생긴다. Level 4 화면을 engineering folder 아래에 만들고 back button을 그 folder 기준으로 걸어 두면, 운전원이 configuration menu로 튕겨 나간다. Return target은 폴더 위치가 아니라 공정 위치로 정한다.

확인할 것은 다섯 가지다.

  1. 모든 detail 화면에서 해당 area overview로 바로 돌아간다.
  2. Alarm이나 trend에서 점프해도 선택된 장비 context가 유지된다.
  3. Popup에서 popup을 열어도 최종 장비 식별자가 보인다.
  4. 어떤 운전 화면에서도 alarm summary로 갈 수 있다.
  5. Platform이 지원한다면 refresh나 client 재접속 후에도 navigation state가 남는다.

시운전 시나리오로 이렇게 시킨다. Alarm에서 시작해서 관련 trend를 보고, 장비 detail을 열고, 다시 area overview로 돌아온다. 도중에 "지금 어느 area입니까"라고 물었을 때 2초 안에 답이 안 나오면 breadcrumb가 일을 안 하는 것이다. 경로를 머리로 외워야 한다면 더 나쁘다.

복사한 화면은 link와 label을 따로 본다

대부분의 HMI 프로젝트는 화면을 복사해서 만든다. 효율적이지만 parameter 처리가 빠지면 navigation defect가 그대로 복사된다.

  • Breadcrumb에 이전 area 이름이 남는다.
  • Back button이 다른 line overview로 간다.
  • Popup 제목에 static equipment name이 박혀 있다.
  • Alarm jump가 맞는 template을 열지만 parameter가 틀리다.
  • Trend button이 선택된 asset이 아니라 default pen group을 연다.
  • Command confirmation에 generic object name이 나온다.

같은 template을 서로 다른 asset 두 개로 동시에 띄워 보는 게 제일 빠른 시험이다. 두 화면이 한눈에 구분 안 되면 label이 부족한 것이다. 화면 요소 자체를 어떻게 읽히게 만드는지는 faceplate 설계 체크리스트에 있다.

인수 전에

  • 운전원이 2초 안에 현재 area를 말할 수 있는가.
  • 명령 가능한 모든 화면에 정확한 target asset이 보이는가.
  • Alarm, trend, faceplate jump가 context를 유지하는가.
  • 복사한 화면에 오래된 label과 잘못된 return link가 없는가.
  • 넓은 범위의 command가 실제 범위로 표시되는가.
  • Browser history나 숨은 menu 없이 process overview로 돌아올 수 있는가.

FAT에서 화면 목록만 넘겨 보면 navigation 품질은 안 드러난다. 실제로 움직이는 경로를 punch list에 일찍 넣어야 한다.

다음에 HMI 앞에 앉으면 값은 보지 말고 제목과 breadcrumb만 읽어 보자. 지금 어느 area의 어느 asset인지 두 줄 안에서 안 나오면, 그 부분은 지금 운전원이 기억으로 메우고 있다는 뜻이다.