계기와 수집

계측과 수집

에너지 시스템의 품질은 화면이 아니라 계측에서 갈립니다. 계기가 잘못 매핑되면 그 위에 쌓는 집계, 기준선, 요금, 보고서는 전부 틀린 숫자가 됩니다.

이 페이지는 에너지원, 조직-계기 매핑, 수집 통신, 원시 계측 테이블을 현장 개발 기준으로 정리합니다.


1. 에너지원

에너지원은 단위와 환산계수가 다릅니다. 전력만 있다고 가정하고 스키마를 짜면 가스, 스팀, 압축공기가 들어올 때 테이블을 다시 쪼개게 됩니다.

energy_source (에너지원)

컬럼명설명
energy_source_id (PK)에너지원 ID
code코드 (ELECTRIC, GAS, STEAM, AIR, WATER)
name이름
unit기본 단위 (kWh, N㎥, ton, ㎥)
co2_factor탄소 환산계수
toe_factor석유환산톤 계수
  • 전력: kWh, 한전 요금과 직결
  • 가스: N㎥ 또는 ㎥, 압력/온도 보정이 붙는 경우가 많음
  • 스팀: ton, 엔탈피로 열량 환산
  • 압축공기: ㎥ 또는 N㎥, 비전력(kWh/㎥)이 핵심 지표
  • 용수/냉각수: ㎥, 유량계 중심

2. 마스터 데이터

제조업 ERP처럼 거래 데이터가 먼저가 아닙니다. 에너지는 마스터가 먼저입니다. 회사-공장-구역-자산-설비-계기 순으로 등록해야 값이 붙습니다.

company / plant / plant_area

테이블핵심 컬럼설명
companycompany_id, company_code, company_name법인, 보고 단위
plantplant_id, company_id, plant_code, plant_name사업장, 수전 계약
plant_areaarea_id, plant_id, parent_id, area_code동/라인, 계층

asset / equipment

테이블핵심 컬럼설명
assetasset_id, plant_id, asset_code, asset_type_id공정 또는 유틸리티
processasset_id, process_type_id생산 공정
utilityasset_id, utility_type_id압축기실, 보일러실
equipmentequipment_id, plant_id, area_id, asset_id, equipment_code, status_id실제 설비

meter / equipment_meter

컬럼명설명
meter_id (PK)계기 ID
plant_id사업장
meter_code현장 태그/자산번호. unique
meter_name표시명
meter_type_id전력, 유량, 가스, 압력, 소음 등
energy_source_id에너지원
ratio배율. 기본 1.0

설비와 계기는 N:N입니다. 한 전력량계가 여러 설비를 물거나, 한 설비에 전력+유량이 같이 붙습니다. equipment_meter에 설비-계기-비율을 둡니다.

3. 계기 서브타입

계기 공통 속성과 물리 속성을 한 테이블에 다 넣으면 NULL이 많아집니다. 공통 meter + 타입별 확장 테이블이 실무에서 잘 맞습니다.

power / flow / gas / pressure / air

테이블주요 컬럼용도
전력 계기상전압, 전류, 역률, 펄스 상수kWh, kW, 수요전력
유량 계기관경, 유체 종류순시유량, 적산유량
가스 계기환산계수, 압력보정부피 → 표준상태
압력 계기범위 min/max, 단위이상 압력 감시
공기 계기유량 범위, 펄스 상수압축공기
  • 필자 생각: 계기 타입을 화면 enum으로만 관리하지 말고, 공통코드 테이블로 두는 편이 낫습니다. 현장에 "소음계", "분진계"가 갑자기 추가됩니다.

4. 수집기

수집기는 계기의 값을 가져오는 통신 주체입니다. 현장마다 장비가 다릅니다.

collector

컬럼명설명
collector_id (PK)수집기 ID
plant_id사업장
collector_code장비 코드
collector_type_idRTU, RAW_TCP, CONVERTER, GEMS 등
communication_type_idModbus, MQTT, TCP
polling_interval_sec폴링 주기

타입별 확장

타입핵심 설정특징
RTU / MQTTltid, broker_url현장 게이트웨이가 브로커로 publish
Raw TCPip_address, port장비가 소켓으로 패킷을 밀어줌
Converterip, port, memorymapModbus 맵을 읽어 변환
GEMSmemorymap, ip, port한전/사설 전력 수집 장비

meter_collector

컬럼명설명
collector_id수집기
meter_id계기
port_no채널/슬롯
is_active활성 여부

통신이 끊겨도 마스터는 남아 있어야 합니다. 수집 실패는 계측 공백이지 계기 삭제가 아닙니다.

5. 원시 계측

원시 테이블은 빨리 쌓이고 잘 안 지웁니다. 컬럼을 과하게 정규화하기보다, 도메인별로 측정 테이블을 나누는 편이 조회가 쉽습니다.

power_measurement (전력 원시값)

컬럼명설명
measurement_id (PK)계측 ID
company_id회사. 파티션/권한용
meter_id계기
kwh유효전력량
kVARh무효전력량
kVAh피상전력량
voltage / current전압, 전류
measured_at계측 시각 (KST)

flow_measurement (유량 원시값)

컬럼명설명
measurement_id (PK)계측 ID
company_id회사
meter_id계기
c_flow_rate보정 유량 또는 적산
measured_at계측 시각

공통 규칙:

  1. measured_at은 타임존을 고정합니다. 한국 현장은 Asia/Seoul.
  2. 적산값(누적)과 순시값을 섞지 않습니다. 적산이면 차분해서 사용량을 만듭니다.
  3. 중복 수집을 대비해 (meter_id, measured_at) unique를 거는 경우가 많습니다.
  4. 원시 테이블에 요금, 탄소를 바로 넣지 않습니다. 집계 단계에서 계산합니다.

6. 통신 기술

현장에서 실제로 많이 만나는 프로토콜입니다.

  • Modbus TCP / RTU: 전력량계, 인버터, 컨버터. 주소(맵) 관리가 핵심
  • MQTT: 게이트웨이가 토픽으로 값 publish. 유실/재전송 정책 필요
  • Raw TCP: 벤더 패킷. 길이, 체크섬, 리틀엔디안을 문서화해야 함
  • OPC-UA: 상위 SCADA 연동
  • REST 폴링: 클라우드 로거, 최근 장비

수집 주기:

  • 실시간 감시: 1~10초. 화면용, 알람용
  • 과금/절감: 1분 또는 15분. 한전 수요와 맞출 때 15분
  • 일 마감: 하루 한 번 집계 잡

7. 프로세스 흐름

  1. 조직 등록: 회사, 공장, 구역
  2. 에너지원 등록: 단위, 탄소/TOE 계수
  3. 자산/설비 등록: 공정, 유틸리티, 설비
  4. 계기 등록: 타입, 에너지원, 배율
  5. 수집기 등록: IP, 맵, 토픽, 폴링 주기
  6. 매핑: 수집기-계기, 설비-계기
  7. 수집 시작: 원시 계측 insert
  8. 결측 처리: 통신 끊김, 음수 차분, 급증 스파이크 검증

결측이 있으면 일 집계를 그냥 더하면 안 됩니다. 보간할지, 결측 표시를 남길지 먼저 정하세요.

8. 현장에서 자주 터지는 이슈

  • 변성기 배율을 안 곱해서 사용량이 1/60로 나옴
  • 적산 리셋(계기 교체) 후 차분이 음수가 됨
  • 상위 모선 계기와 하위 분기 계기를 같이 더해서 2배
  • MQTT는 살아 있는데 특정 port만 멈춤
  • 서버는 UTC, 현장은 KST라 하루 경계가 한 시간 밀림
Previous
공통코드 체계