0~1000 °C 축에서 1 °C 헌팅은 0.4 픽셀이다
트렌드 창 높이가 400 px이고 축이 0~1000 °C라고 하자. 1 °C는 0.4 px이다. 한 픽셀도 안 된다.
제어기는 밸브를 계속 흔들고 있는데 화면에는 직선이 그려진다. 데이터는 맞다. 축이 틀렸다.
반대쪽 실패도 같은 빈도로 나온다. 펜마다 자동 스케일을 따로 걸어 두면 서로 관계없는 값이 같은 모양으로 올라간다. 화면이 없는 상관관계를 만들어 낸다.
여기서 하고 싶은 말은 하나다. 트렌드 축은 화면 담당자의 취향이 아니다. 필요한 숫자는 이미 태그 쪽에 정의되어 있는 경우가 대부분이고, 그걸 화면으로 안 옮겨와서 문제가 생긴다.
축 기본값은 EURange에서 가져온다
OPC UA Part 8 (Data Access)의 AnalogItemType은 값만 들고 있지 않다. 축을 잡는 데 필요한 property를 같이 들고 있다.
| Property | 내용 | 트렌드에서 쓰는 곳 |
|---|---|---|
EngineeringUnits (EUInformation) | 단위 | 축 라벨 |
EURange (Range: Low/High) | 정상 운전에서 나올 만한 범위 | 축 기본 범위 |
InstrumentRange | 계기가 물리적으로 낼 수 있는 전체 범위 | 축을 열어 둘 한계 |
Part 8이 EURange를 정의하면서 붙여 놓은 설명이 재미있다. bar graph 같은 표시를 자동으로 스케일하는 데 쓰라고 명시되어 있다. 규격이 직접 "이건 화면 스케일용"이라고 말해 주는 값을 두고 엔지니어가 화면마다 손으로 0~100을 다시 타이핑한다.
두 range를 구분하는 게 핵심이다. EURange는 축 기본값이고, InstrumentRange는 축 clamp 한계다. 이 둘을 같은 값으로 두면 다음 절의 문제가 생긴다.
EUInformation의 UnitId는 UN/CEFACT Recommendation 20의 common code를 ASCII 바이트로 읽은 정수다. 섭씨는 CEL, 즉 0x43 0x45 0x4C = 4408652다. 축 라벨 단위를 사람이 타이핑하지 말고 server에서 받아 오면 화면마다 degC / °C / C로 갈리는 일이 없어진다.
0~100%로 clamp하면 NE 43 고장 신호가 사라진다
420 mA를 0100%로 스케일한다고 하자. NAMUR NE 43은 계측기 고장 신호를 유효 측정 범위 바깥에 두도록 한다. 그래서 이렇게 된다.
| NE 43 신호 | 전류 | 0~100% 축에서 |
|---|---|---|
| 고장, downscale | ≤ 3.6 mA | −2.5% |
| 유효 측정 하한 | 3.8 mA | −1.25% |
| 유효 측정 상한 | 20.5 mA | 103.125% |
| 고장, upscale | ≥ 21.0 mA | +106.25% |
계산은 (I − 4) / 16이다. 직접 해 보면 된다. 계측기가 "나 죽었다"고 말하는 값이 전부 0~100 바깥에 있다.
축을 0~100에 고정하면 3.6 mA는 바닥에 붙은 0%로, 21 mA는 천장에 붙은 100%로 그려진다. 둘 다 정상 운전에서 충분히 나올 수 있는 값처럼 보인다. 운전자는 고장을 "레벨이 비었네" 또는 "가득 찼네"로 읽는다.
축을 −5110%로 열어 두면 선이 밴드 밖으로 나가는 게 바로 보인다. 나는 420 mA에서 올라오는 아날로그는 기본으로 이렇게 잡는다. 화면이 조금 못생겨지는 대신 고장이 고장처럼 보인다.
드라이버가 중간에서 0~100으로 잘라 버리는 제품도 있다. 그러면 화면에서 아무리 축을 열어도 소용없다. 시운전 때 3.6 mA를 실제로 주입해 보고 태그 값이 음수로 오는지 확인한다.
트렌드의 용도를 먼저 정한다
ISA-101.01-2015는 화면을 Level 1(공정 영역 개요)부터 Level 4(진단·지원)까지 계층으로 나누고, 이 기준을 프로젝트 HMI style guide에 문서로 남기라고 한다. 트렌드도 같은 계층을 탄다. 축 범위를 정하기 전에 이 트렌드가 몇 번 레벨에서 어떤 질문에 답하는지 정한다.
| 용도 | 대략의 레벨 | 맞는 스케일 방향 |
|---|---|---|
| 운전 개요 | 1~2 | EURange 그대로, 단위 명시 |
| 루프 튜닝 | 3~4 | 운전점 ±몇 % 짜리 좁은 범위 |
| 알람 분석 | 3 | 알람 한계선 + 이벤트 전후 시간 포함 |
| 기동 시퀀스 | 2~3 | 디지털 상태와 아날로그를 같은 시간축에 |
| 유틸리티 감시 | 1 | 긴 시간창, 일별 비교가 되는 고정 범위 |
한 가지 템플릿으로 전부 못 덮는다. 모양은 표준으로 두되 범위와 펜 구성은 나눈다.
알람선은 알람 시스템에서 가져온다
탱크 레벨 고알람이 82%면 축에서 그 관계가 바로 보여야 한다. 문제는 그 82를 어디서 가져오느냐다.
ISA-18.2-2016(그리고 같은 내용의 IEC 62682)은 alarm limit과 deadband를 alarm attribute로 관리하도록 한다. 화면에 82를 상수로 박아 넣으면 나중에 alarm rationalization에서 한계값이 78로 바뀌었을 때 트렌드만 옛날 값을 계속 그린다. 그 상태로 반년 간다. 알람선은 alarm attribute를 참조하거나, 최소한 어느 화면이 상수를 박아 뒀는지 목록으로 남긴다.
운전 화면 트렌드에서 기본으로 확인할 것:
- 축 라벨에 단위가 보인다. %, °C, bar, kPa, A, rpm, m³/h.
- 알람선이 보이지만 펜을 가릴 만큼 두껍지 않다.
- 정상 운전 밴드가 몇 픽셀로 눌려 있지 않다.
- 같은 태그는 관련 화면에서 같은 스케일을 쓴다. 다르면 이유가 있다.
ISA-101.01은 색을 장식이 아니라 상태 표시로 쓰라고 한다. 정상 펜에 알람 빨강을 쓰면 그 화면에서 빨강의 의미가 사라진다.
다중 축은 두세 개까지
압력, 유량, 밸브 출력처럼 같이 봐야 하는 값에는 다중 축이 맞다. 각 펜이 자기 자동 스케일을 가지는 순간 위험해진다.
써도 되는 조건:
- 공정상 같이 봐야 하는 관계가 분명하다.
- 펜 범례 옆에 단위가 있다.
- 펜 색과 축 색이 맞는다.
- 기본 범위가 고정이라 다시 열어도 같은 감각으로 읽힌다.
일반 운전 화면에 숫자 축 세 개를 넘기지 않는 편이 낫다. 다섯 개가 필요하면 그건 운전 화면이 아니라 진단 화면이다.
정규화는 의도를 화면에 쓴다
범위 대비 퍼센트로 바꾸면 밸브 출력, 레벨, 속도를 한 화면에서 비교하기 쉽다. 실제 위험도는 가려진다.
70%가 어떤 계기에서는 70 °C이고 다른 계기에서는 700 °C다. 정규화 트렌드는 시운전이나 엔지니어 진단용으로는 쓸 만하다. 대신 화면에 정규화 상태임을 쓰고, 실제 EU 값을 바로 볼 수 있게 한다.
알람 분석 화면에서는 쓰지 않는다. 알람 한계선까지 같은 방식으로 정규화해서 라벨을 붙이지 않으면 오해만 만든다.
0점을 보일지 말지
모터 전류, 유량, 진동, 밸브 출력은 0이 보여야 정지·무부하·닫힘을 바로 읽는다. 반응기 온도처럼 설정값 주변 편차가 질문인 값은 0을 안 넣은 좁은 범위가 낫다.
기준은 간단하다. 유량 없음, 출력 없음, 전류 없음이 운전상 의미를 가지면 0을 보인다. "정상 운전점에서 얼마나 벗어났나"가 질문이면 좁게 간다.
자주 생기는 문제
자동 스케일이 이상 상황을 작게 만든다
값이 20에서 60으로 뛰었는데 축도 같이 커지면 선은 적당히 움직인 것처럼 보인다. 운전자는 변화는 보고 심각도는 놓친다.
알람에 가까운 값은 고정 스케일이나 상·하한을 건 자동 스케일을 쓴다. 자동 스케일을 허용하면 현재 min/max를 눈에 띄게 표시한다.
축이 달라서 같이 움직이는 것처럼 보인다
유량 펜과 압력 펜이 둘 다 올라가는데 하나는 010 축, 하나는 05000 축이다. 모양만 보고 인과를 판단하면 안 된다.
원인 분석할 때는 관련 펜의 단위를 맞추거나 커서 값으로 실제 수치를 비교한다. 타임스탬프도 본다. 비슷한 선 모양은 증거가 아니다.
변환이 두 번 걸린다
Siemens S7 아날로그 입력은 4~20 mA를 raw 0~27648로 준다. 1 mA가 1728 counts다(27648 / 16). 그 위 27649~32511이 overrange, 32767이 overflow다. 앞에서 본 3.6 mA는 −691 counts로 온다. 음수다. 이것도 0에서 잘리면 안 된다.
트렌드에는 라이브 HMI 태그, 히스토리언 태그, 계산 태그가 섞인다. PLC block이 이미 EU로 바꿔 놓은 값을 HMI 태그에서 27648로 한 번 더 나누면, 선 모양은 그럴듯한데 faceplate 값과 안 맞는다. 비율이 제곱으로 들어가서 작은 값에서는 티가 잘 안 난다.
펜마다 태그 소스, 단위, 변환 경로를 확인한다. 범례에 표시 이름만 넣지 말고 소스를 구분할 정보를 넣는다.
시운전 확인 항목
- 같은 태그를 개요 화면, faceplate, 알람 상세, 히스토리언 트렌드에서 열어 단위와 스케일을 비교한다.
- 저점, 정상점, 고점, 알람 근처 값을 강제하거나 시뮬레이션한다.
- 3.6 mA와 21.0 mA를 실제로 주입해 축 밖으로 나가는지 본다. 여기서 대부분 걸린다.
- 기본 줌에서 알람 한계선과 설정값이 읽히는지 확인한다.
- 다크 모드나 고대비 모드가 있으면 펜 색이 사라지지 않는지 본다.
- 커서 readout에 실제 값, 단위, quality, 타임스탬프가 나오는지 확인한다.
- 통신 끊김이나 quality 불량일 때 선이 정상 평탄값처럼 보이지 않는지 확인한다.
마지막
트렌드는 운전 질문 하나에 빠르게 답해야 한다. 안정성을 보는 화면이면 작은 움직임이 보여야 하고, 심각도를 보는 화면이면 한계선과 고정 스케일이 중요하고, 관계를 보는 화면이면 단위와 축이 정직해야 한다.
다음에 화면 하나 열게 되면 이것부터 해 보면 된다. 아날로그 펜 하나 골라서 축 상한이 EURange.High와 같은지 본다. 다르면 왜 다른지 아는 사람이 프로젝트에 남아 있는지 본다.