표준 m³, 실제 m³, 그리고 아무도 합의하지 못하는 가스 적산값
SCADA에서 가스 유량의 압력·온도 보정을 다룹니다. 어떤 유량계에 필요한지, 절대압 함정, 계산을 어디에 둘지, 압력 트랜스미터가 죽으면 어떻게 할지.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
SCADA에서 가스 유량의 압력·온도 보정을 다룹니다. 어떤 유량계에 필요한지, 절대압 함정, 계산을 어디에 둘지, 압력 트랜스미터가 죽으면 어떻게 할지.
strapping table을 SCADA에 넣는 실무 — 원형 세그먼트 기하, 보간 간격, 계산을 어느 계층에 둘지, 그리고 정수압 레벨이 재고를 속이는 밀도 함정까지.
두 번 재튜닝하고도 계속 사이클링하는 레벨 루프는 대개 튜닝이 아니라 밸브 문제다. PV/OP 트렌드에서 스틱션을 읽어내고, 스텝 테스트로 증명하고, SCADA에서 감시하는 방법.
오리피스 DP는 유량의 제곱에 비례하므로 누군가는 제곱근을 취해야 한다 — 트랜스미터, PLC, 아니면 SCADA. 두 번 취하거나 저유량 컷오프를 빼먹으면 값이 거짓말을 한다.
랩어라운드 카운터에서 가짜 유량 없이 사용량을 계산하는 법. 레지스터 폭, 델타 보정 한 곳에 두기, 롤오버와 리셋 구분, 음수 적산 막기.
Report-by-exception 쓰는 법: DNP3 이벤트, deadband, heartbeat, integrity poll로 짧은 이벤트와 stale 값을 잡는다.
마지막 값 유지, 버려진 quality code, 도착 시간에 찍힌 지연 샘플. 장애 후 트렌드가 거짓말하는 세 가지 원인과 어느 쪽인지 가려내는 방법.
MQTT 도착 순서는 공정 순서가 아니다. DUP flag의 한계, Sparkplug seq의 8-bit wrap, MQTT 5.0 retained 만료 처리.
Shared Subscription은 스트림을 Worker로 나눈다. Historian에 걸면 피드가 반토막 나고 Trend 순서가 섞인다. 쓸 곳과 피할 곳.
site/# 구독 부하를 승인 전에 계산하는 법. Retain Handling, Shared Subscription, Receive Maximum, SUBACK으로 막기.
SCADA 히스토리언이 통신 공백을 보간선과 마지막 값으로 감추는 방식, 그리고 bad 데이터가 교대조 리포트까지 흘러가지 않게 막는 품질 규칙.
NodeId는 재생성되고 browse path는 깨지고 DisplayName은 라벨이다. 펌웨어 업데이트에도 버티는 참조를 HMI·히스토리언에 고르는 기준.
OPC UA DataChangeFilter 정하기: 절대와 퍼센트 데드밴드, DataChangeTrigger, 큐 크기로 노이즈만 거르고 공정 변화는 남긴다.
OPC UA HistoryRead로 누락 구간 복구: 구간 지정, returnBounds 경계 샘플, Bad 품질 보존, continuation point 페이징.
Calibration, manual 전환, bypass를 sampled stream과 분리된 event record로 남기고 asset ID와 시간 구간으로 잇는 법.
Exception과 periodic 수집은 서로 다른 사실을 저장한다. 300 ms interlock을 잃지 않게 tag별로 고르고 시운전에서 증명하는 법.
MQTT 페이로드를 바꿀 때 HMI, 히스토리언, MES connector가 조용히 깨지지 않게 schema version을 관리하는 법.
히스토리언이 point ID와 이름 중 무엇으로 이력을 잡는지, rename 한 번에 이력이 쪼개지는 이유, cutover에서 확인할 것.
계기 고장으로 태그가 11시간 full scale에 붙었다. 품질 검토를 통과하는 audit trail로 구간을 보정하는 법과 raw sample을 남기는 이유.
HMI, historian, PLC log, alarm list는 같은 사건을 몇 초씩 다르게 찍는다. Source/ServerTimestamp, NTP·PTP, UTC 확인법.
야간 교대 report의 good count가 4개 어긋난다. PLC counter, historian delta, S6F11 시각, spool drain 중 먼저 볼 곳.
오래된 데이터를 평균 내면 trip이 사라지고 peak와 적산값이 틀어진다. 태그 분류, 종류별 다운샘플, 품질 보존, purge 전 시험.
WAN 장애 때 MQTT edge가 데이터를 잃는 이유. source timestamp, sequence number, replay 정책으로 historian 공백을 막는다.
Event frame과 batch segment는 경계가 맞아야 쓸모 있다. 시작·종료 트리거 위치, 캡처할 속성, 닫히지 않은 frame 처리.
설비 event로 lot 이력을 만들 때 깨지는 곳: lot context, GEM clock, spool replay 순서, split/merge, correction.
Calculated tag는 어느 순간 공식 숫자가 된다. 리포트와 MES가 쓰기 전에 수식, quality, 기간 경계, counter reset을 실제 sample로 확인한다.
범위, 공학 단위, word order, NAMUR 고장 임계값, quality를 확인해 PLC·SCADA·히스토리언이 같은 값을 보게 하는 스케일링 시운전.
SCADA 히스토리언 타임스탬프가 틀어지는 원인 — 클록 드리프트, NTP와 PTP, OPC UA 소스 시간, 지연 데이터, 서머타임 — 을 보고서 분쟁 전에 잡는 법.
OPC UA 샘플링·퍼블리싱 주기, 큐 크기, deadband, KeepAlive/Lifetime이 SCADA와 히스토리언이 공정을 제대로 보는지 정한다.
회선이 살아나면 store-and-forward 버퍼가 몇 시간 전 값을 밀어 넣는다. 기준 타임스탬프, 덮어쓰기 규칙, 표시, 배포한 숫자의 수정 여부.
OPC UA 인증서 만료로 통신이 끊기지 않도록 갱신 절차와 확인 항목을 정리합니다.
히스토리언 데드밴드와 압축을 HMI 소수점이 아니라 계기 정확도와 공정 기준으로 정해, 노이즈는 저장하지 않으면서 실제 움직임은 트렌드에 남기는 방법.
이름 변경 하나로 구독과 히스토리언 포인트가 깨지지 않게 group_id·edge_node_id·device_id를 잡는 법. birth, alias, STATE까지.
히스토리언을 단순 저장소가 아니라 문제 추적과 운전 개선을 위한 시간 데이터 기반으로 설명합니다.
OPC UA 클라이언트 시운전에서 엔드포인트, 보안 정책, 인증서, 구독 품질을 확인하는 절차입니다.
이상 상황의 운전자 질문에 답하는 트렌드 화면. 루프 단위 묶기, 스케일 선택, 통신 끊김을 매끄러운 선으로 덮지 않기.
SCADA 태그가 단순 변수명이 아니라 통신 주소, 단위, 품질, 알람, 이력 설정을 연결하는 기준점임을 설명합니다.
HMI, SCADA, MES, 히스토리언을 역할 기준으로 구분하고 현장 아키텍처에서 어디까지 책임져야 하는지 정리합니다.
SCADA를 PLC 위의 단순 화면이 아니라, 설비 상태를 모으고 작업자가 판단할 수 있게 만드는 운영 계층으로 설명합니다.