← 전체 글
태그/약 17분 읽기/ 조회

표준 m³, 실제 m³, 그리고 아무도 합의하지 못하는 가스 적산값

SCADA에서 가스 유량의 압력·온도 보정을 다룹니다. 어떤 유량계에 필요한지, 절대압 함정, 계산을 어디에 둘지, 압력 트랜스미터가 죽으면 어떻게 할지.

태그SCADA시운전문제 해결히스토리언

보전팀은 도장동에 지난 분기 압축공기 190만 m³를 청구했습니다. 도장동 자체 서브미터는 160만 m³라고 찍혀 있었습니다. 같은 공기, 같은 배관, 40미터쯤 떨어진 두 대의 유량계, 그리고 19% 차이. 어느 계기가 고장인지를 두고 3주를 다퉜습니다. 둘 다 멀쩡했습니다. 헤더 유량계는 라인 조건 — 7 barg, 애프터쿨러가 내보낸 그대로의 온도 — 에서의 유량을 보고했고, 서브미터는 기준 조건으로 환산한 값을 보고했을 뿐입니다. 둘 다 정확히 읽고 있었습니다. 같은 단위 라벨을 붙인 채 서로 다른 양을 보고하고 있었던 것뿐입니다.

SCADA에서 가스 유량 문제는 결국 이겁니다. "m³"는 어느 압력, 어느 온도에서를 말하기 전까지 측정값이 아닙니다. 그리고 공학 단위 필드에 m3/h라고만 적힌 FT_1201_FLOW 태그는 그 얘기를 하나도 해주지 않습니다.

유량계가 실제로 건네주는 값

보정 수식을 쓰기 전에, 1차 요소가 무엇을 측정하는지부터 확인해야 합니다. 보정을 할지 말지, 그리고 어떤 지수를 쓸지가 여기서 갈립니다.

  • 터빈, 볼텍스, 초음파, 로터리/다이어프램라인 조건에서 지나간 부피를 셉니다. 실제 m³/h(am³/h)입니다. 표준 조건까지 가려면 온전한 밀도 보정이 필요하고, 압력과 절대온도에 대해 선형입니다.
  • 오리피스, 벤투리, 노즐, 애버리징 피토 — 차압식입니다. 질량유량이 √(ΔP·ρ)로 가기 때문에 밀도가 이미 제곱근 안에 들어가 있습니다. 설계 밀도에서 실제 밀도로의 보정은 선형이 아니라 제곱근 항입니다. 이 지수를 틀리는 것이 현장에서 제일 자주 보는 보정 버그입니다.
  • 코리올리, 열식 질량유량계 — 질량(또는 질량에서 유도한 표준 부피)을 직접 측정합니다. 압력·온도 보정이 필요 없습니다. 굳이 씌우면 이중 보정이 됩니다. 질소 퍼지 적산에 물려 있던 열식 질량유량계에서 정확히 그 일을 봤습니다. 누군가 이미 표준화된 출력에 PT 보정 블록을 한 겹 더 감아서, 겨울철 온도에서 적산이 30% 높게 나왔습니다. 열식 질량유량계는 다른 데 민감합니다. 교정 가스입니다. 공기로 K-factor를 잡은 계기가 아르곤을 읽으면, 어떤 보정으로도 못 고치는 배수만큼 틀립니다.

즉 공장 유량계의 절반은 이 계산이 필요하고, 나머지 절반은 이 계산 때문에 망가집니다. 유량계 종류를 루프 시트에 적어 두세요.

수식, 그리고 아무도 안 적어 두는 기준 조건

체적식 유량계를 표준 조건으로 환산할 때:

Q_std = Q_actual · (P_abs / P_base) · (T_base / T_abs) · (Z_base / Z)

차압식에서 사이징 당시 밀도와 달라진 만큼 보정할 때:

Q_corrected = Q_design · √( (P_abs · T_design · Z_design) / (P_design · T_abs · Z) )

여기 나오는 모든 기호는 절대값입니다. 하나도 빠짐없이.

그리고 수식보다 더 많은 분쟁을 만드는 부분. P_baseT_base가 대체 뭐냐는 것입니다. 정답이 하나가 아니고, 약자는 거짓말을 합니다.

  • 101.325 kPa, 0 °C — "normal", Nm³. 유럽 산업가스 관행에서 흔합니다(DIN 1343).
  • 101.325 kPa, 15 °C — 천연가스 업계와 ISO 관행 상당수가 씁니다.
  • 100 kPa, 20 °C, 상대습도 0% — 압축공기에 대한 ISO 8778 기준 조건. 컴프레서 데이터시트도 대개 여기 있습니다.
  • 14.696 psia, 60 °F — 미국 거래 계량.

기준이 0 °C냐 20 °C냐에 따라 같은 실제 유량이 약 7% 차이 납니다. 누군가는 압축공기 20 °C 관행을 뜻하면서 P&ID에 "Nm³/h"라고 적고, 다른 누군가는 그걸 0 °C로 읽습니다. 그러면 두 적산값은 고정된 비율만큼 영원히 어긋나고, 그 모습은 계기 오차처럼 보입니다. 기준 조건은 아무도 열지 않는 설계 문서가 아니라 태그 설명에 넣으세요. 천연가스 유량, std m3/h @ 101.325 kPa, 15 C처럼요.

현장이 틀리는 지점은 절대압입니다

라인에 붙어 있는 트랜스미터는 십중팔구 게이지압 트랜스미터입니다. 수식이 원하는 건 절대압입니다. 그래서:

P_abs = P_gauge + P_atm

이게 망가지는 경로가 셋 있습니다.

  1. 덧셈이 빠진 경우. 게이지 값을 그대로 P_abs에 넣습니다. 6 barg면 올바른 절대압은 약 7.01 bara이므로, 적산이 대략 14% 낮게 나옵니다. 안정적이고, 그럴듯하고, 눈에 안 띕니다. 그냥 공장 효율이 실제보다 14% 좋아 보일 뿐입니다.
  2. 해수면이 아닌 사이트에서 P_atm을 101.325 kPa로 박아 둔 경우. 대기압은 고도 1000 m당 약 12 kPa씩 떨어집니다. 해발 1,500 m 사이트의 실제 기압은 85 kPa 부근입니다. 저압 라인 — 0.3 barg 플레어 헤더, 보일러 가스 트레인 — 에서는 그 16 kPa 오차가 절대압의 10%를 넘습니다. 40 barg 라인이었다면 아무도 눈치채지 못했겠지요. 사이트의 실제 기압 상수를 쓰고, 기압계가 있으면 읽으세요.
  3. 단위와 영점. 한 수식 안에서 kPa와 bar를 섞거나, 흡입 라인에서 트랜스미터가 약간 음의 게이지압을 읽는 경우입니다. 후자는 대기압 이하의 절대압을 만들어 내는데, 완전히 정상인 값이면서 레인지 체크를 짜 둔 사람 눈에는 고장처럼 보입니다.

온도는 무조건 켈빈입니다. T_abs = T_C + 273.15. 섭씨를 비율에 넣으면 일반적으로는 헛소리가 나오고, 정확히 0 °C에서는 0으로 나누게 됩니다. 여기 붙어 있는 또 하나의 함정은 비율의 방향입니다. 온도는 압력과 반대로 들어갑니다(T_base / T_abs). 뜨거운 가스가 더 희박하기 때문입니다. 제가 검토한 수제 보정 블록의 절반은 온도 비율이 뒤집혀 있었고, 이건 한 가지 온도에서만 시험하면 그대로 통과합니다.

압축계수: Z가 1이 아니게 되는 순간

Z는 압축계수, 즉 가스가 이상기체가 아니라는 사실에 대한 보정입니다. 몇 barg의 상온 공기나 천연가스라면 Z는 1에 충분히 가까워서 빼도 오차가 1%에 한참 못 미칩니다. 유틸리티 계량에서는 저도 뺍니다. 반면 수십 bar의 수송압 천연가스에서는 Z가 1보다 유의미하게 떨어지고, 무시하면 돈을 지불하는 스트림에서 수 % 오차가 납니다. 그때부터는 PLC에서 수식을 손으로 짜는 걸 멈추고, 조성·압력·온도로부터 Z를 계산하는 AGA Report No. 8(또는 ISO 12213)을 구현한 장비를 씁니다. 유량계 쪽은 AGA 3AGA 7입니다.

선은 여기에 긋습니다. 그 숫자가 청구서에 올라간다면, 해당 표준을 구현하고 API MPMS Chapter 21.1 수준의 감사 기록을 남기는 플로우 컴퓨터에 있어야 합니다. 래더 로직이 아니라요. 에너지 대시보드나 공장 물질수지용이라면 PLC 계산으로 충분하고, 나중에 누가 그 숫자를 계약 분쟁에 인용하지 않도록 설계서에 그 사실을 명시해 두세요.

순시값을 보정한 다음 적분합니다, 순서를 바꾸지 말고

적산기는 매 스캔 이미 보정된 유량을 누적해야 합니다:

Total += Q_std(이번 스캔) · Δt

절대 하면 안 되는 것은 보정하지 않은 부피를 누적해 두고 누적된 합계에 현재 압력비를 곱하는 방식입니다. 그건 지금 이 순간의 조건을 서로 다른 조건에서 흘러간 여덟 시간치 가스에 소급 적용하는 짓입니다. 이미 돌고 있는 무보정 적산기에 보정을 덧붙일 때 솔깃한 지름길인데, 결과는 라인 압력이 움직일 때마다 눈에 띄게 점프하는 적산값입니다. 최소한 트렌드에서 발견하기는 쉽습니다.

계산을 어디에 둘지도 같은 원칙입니다. 원시 샘플에 최대한 가까이 두세요. 압축된 유량 태그와 압축된 압력 태그를 곱하는 히스토리언 계산 태그는 데드밴드 압축이 둘 사이의 상관관계를 이미 버린 뒤에 샘플링하는 것이라, PLC 적산기와 값이 같아지지 않습니다. 비슷하기는 할 겁니다. 하루를 조사에 태울 만큼 애매하게 비슷하겠지요.

그리고 P, T, 유량은 같은 스캔에서, 같은 스캔 클래스로 읽으세요. 유량이 1초 주기이고 압력이 10초 주기면, 압력 계단이 생길 때마다 그 값이 자기 것이 아닌 최대 10초치 유량에 적용됩니다. 몇 분마다 언로드하는 컴프레서에서는 이 오차가 평균으로 상쇄되지 않습니다. 사이클과 상관되어 버립니다.

압력 트랜스미터가 죽었을 때

보정 블록이 불량 입력에서 무엇을 하든, 그건 의도적으로 정해야 합니다. 기본 동작은 보통 파국적이니까요. 고장 난 아날로그 채널이 0을 주면 P_abs = P_atm이 되고, 7 barg 라인이 갑자기 실제 표준 유량의 8분의 1쯤을 계산합니다. 상향 페일이면 반대입니다. 어느 쪽도 알람을 울리지 않습니다. 유량 값 자체는 레인지 안에 있으니까요.

제가 쓰는 방식은 이렇습니다.

  • P나 T가 불량 품질이거나 레인지를 벗어나면 설계값으로 치환하고 유지합니다. 0도 아니고, 마지막 정상값을 영원히 붙드는 것도 아닙니다.
  • 구분되는 알람을 올립니다. "FT-1201 유량 보정이 대체값으로 동작 중". 목록에 묻히는 일반 계기 고장 알람 말고요.
  • FlowCompDegraded 불리언을 두고, 유량과 함께 히스토리언에 남기고, 페이스플레이트에 보이는 배지로 띄웁니다. 나중에 누가 월간 적산값에 이의를 제기할 때, 어느 시간대가 대체값으로 계산됐는지를 그 태그가 정확히 알려줍니다.
  • 적산은 계속합니다. 센서 고장에서 적산기를 멈추면, 표시된 추정값보다 훨씬 맞추기 어려운 구멍이 생깁니다.

설계값 대체는 추정이고 추정이라고 라벨을 붙여야 하지만, 적어도 경계가 있는 추정입니다. 4 mA 값을 압력비에 그대로 넣는 건 경계가 없는 추정입니다.

한 번은 손으로 증명하세요

시운전 때 운전점 하나를 잡아서 스프레드시트로 계산해 보세요. 유량계 원시 출력, 측정된 P와 T, 기압, 기준 조건, 비율, 결과. 그걸 PLC 태그, SCADA 태그와 비교합니다. 1% 안쪽으로 충분히 맞아야 합니다. 안 맞으면 여분의 제곱근이나 빠진 273.15, 아니면 해수면 기압을 찾아낸 겁니다.

그리고 다른 압력에서 한 번 더 하세요. 한 점으로는 뒤집힌 비율을 못 잡습니다. 조건이 다른 두 점이면 잡힙니다. 스프레드시트는 루프 폴더에 같이 두세요. 다음에 이걸 만질 사람은 어느 관행이 채택됐는지 알아야 합니다.

들어간 김에 확인할 것 하나 더. 유량계가 애초에 유효한 유동 영역에 있는지입니다. 지금까지의 계산은 전부 1차 요소가 정격 범위 안에 있고, 사양대로의 상류 직관부를 확보하고 있다는 전제 위에 있습니다. 최소 레이놀즈수 아래에서 도는 볼텍스 유량계를 보정해 봐야, 정밀하게 보정된 틀린 숫자가 나올 뿐입니다.