WirelessHART 데이터를 SCADA로 가져올 때 멈춘 값에 속지 않는 법
WirelessHART 게이트웨이 데이터를 SCADA에 안전하게 올리는 법 — 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 상태 점검.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
WirelessHART 게이트웨이 데이터를 SCADA에 안전하게 올리는 법 — 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 상태 점검.
SCADA에서 가스 유량의 압력·온도 보정을 다룹니다. 어떤 유량계에 필요한지, 절대압 함정, 계산을 어디에 둘지, 압력 트랜스미터가 죽으면 어떻게 할지.
strapping table을 SCADA에 넣는 실무 — 원형 세그먼트 기하, 보간 간격, 계산을 어느 계층에 둘지, 그리고 정수압 레벨이 재고를 속이는 밀도 함정까지.
리밋 스위치 두 개와 이송 타이머로 SCADA에서 정직한 밸브 상태를 만드는 법 — 이동 중 처리, 불일치 알람, 그리고 느려지는 액추에이터를 몇 달 먼저 잡아내는 방법.
LTE 위의 SCADA에서 poll 주기·timeout·keepalive를 정하는 방법 — 바이트 계산, 통신사 NAT timeout, report-by-exception, 그리고 RTU로 접속해 들어가면 안 되는 이유.
비율 제어에서는 한 스트림이 속도를 정하고 나머지 하나를 거기에 맞춰 조정한다. 곱셈기를 어디에 둘지, 실제 비율이 설정값에서 벗어나는 이유, 규격 이탈 제품을 쏟지 않고 기동하는 방법.
하나의 PID로 가열 밸브와 냉각 밸브를 함께 구동하는 건 단순해 보이지만, 전환 지점 근처에서 루프가 멈추거나 헌팅한다. 스플릿 지점 설정, 오버랩 제거, 두 구간 사이의 게인 점프를 다루는 방법.
캐스케이드 제어는 두 루프를 잘못된 순서로 튜닝하거나 슬레이브의 한계를 마스터로 되먹임하지 않으면 실패한다. 마스터/슬레이브 PID 루프가 서로 싸우지 않고 외란을 제거하도록 시운전하는 방법.
오리피스 DP는 유량의 제곱에 비례하므로 누군가는 제곱근을 취해야 한다 — 트랜스미터, PLC, 아니면 SCADA. 두 번 취하거나 저유량 컷오프를 빼먹으면 값이 거짓말을 한다.
NTP는 대부분의 SCADA 시계를 몇 밀리초 안에 맞춰주고, 그 정도면 차고 넘친다 — 변전소 간 1 ms 이벤트 순서(SOE)가 필요해지기 전까지는. PTP가 값을 하는 곳과 과잉인 곳을 짚는다.
센서와 SCADA 태그 사이 어디에서 온도 선형화와 냉접점 보상이 실제로 일어나는지, 그리고 엉뚱한 곳에서 처리하면 왜 믿고 쓰는 값이 조용히 편향되는지.
떨리는 4-20 mA 값을 1차 필터와 이동 평균으로 다듬는 법, 필터를 어디에 둘지, 그리고 엉뚱한 태그를 필터링하면 왜 정작 필요한 알람이 늦어지는지.
가동 중인 PLC의 래더 로직을 안전하게 바꾸는 법. 온라인 편집과 다운로드의 차이, 스캔 순서 함정, 실인(seal-in) 글리치, 포스, 출력이 떨어지지 않게 하는 사전 점검표를 정리한다.
SCADA 드라이버가 BACnet 장치를 검색하고 present-value를 읽고 명령 가능 객체에 쓰는 방법 — 객체 식별자, 16슬롯 우선순위 배열, COV 대 폴링, BBMD 라우팅.
GOOSE의 stNum/sqNum 카운터, allowedToLive 타임아웃, VLAN 우선순위, ConfRev가 차단기 트립을 SCADA가 밀리초 만에 볼지 영영 못 볼지를 결정한다 — 그리고 구독이 정말 살아 있는지 증명하는 법.
BRCB와 URCB 리포트 컨트롤 블록이 변전소 데이터를 SCADA로 보내는 방식 — 데이터셋, 트리거 옵션, 버퍼 시간, ConfRev, 그리고 클라이언트를 조용히 굶기는 예약(reservation) 다툼까지.
DNP3 double-bit binary input(object group 3·4)은 52a/52b 차단기 접점을 네 가지 상태로 인코딩해, single-bit 상태가 동작 중에 보여주는 OPEN/CLOSED 깜빡임을 없앤다 — 매핑·시운전·경보 설정법.
DNP3 보안 인증(SAv5, IEEE 1815-2012) 시운전: 어떤 기능을 critical로 지정하나, 느린 회선에서의 challenge-response 대 aggressive mode, update key와 session key의 차이, 그리고 제어를 조용히 망가뜨리는 불일치들.
포화, 수동→자동 전환, 기동 램프 뒤에 잘 튜닝된 루프가 오버슈트하는 원인이 reset windup이다. anti-windup, external reset, bumpless transfer가 PLC에서 실제로 이 문제를 어떻게 잡는가.
PLC가 UDT를 OPC UA로 노출했는데 SCADA 클라이언트에는 ByteString으로 보인다. ExtensionObject 안에 실제로 무엇이 들어 있고 구조화 DataType을 어떻게 디코딩하는지 정리한다.
SCADA 드라이버가 EtherNet/IP로 ControlLogix·CompactLogix 태그를 읽는 방식 — connected와 unconnected CIP, RPI, 연결 예산, 그리고 원자 태그보다 배열 읽기가 나은 이유.
포트 2404로 TCP가 붙었고 RTU도 살아 있는데 SCADA의 모든 포인트가 여전히 정지 상태다. 해답은 대개 보내지 않은 STARTDT와 총괄 심문(GI)이다.
모든 DNP3 응답에 붙는 두 옥텟의 IIN은 재시작, 잃어버린 이벤트, 없는 시간, 로컬 제어를 알려준다. 이 비트를 읽는 법과 사라지지 않는 비트를 지우는 법을 정리한다.
멀티플렉서, HART 지원 I/O, WirelessHART 게이트웨이로 4-20 mA 루프 너머의 HART 보조 변수와 진단 정보를 SCADA로 끌어오는 방법.
인버터(VFD)는 packed control word로 명령을 받고 status word로 상태를 보고한다. 둘 중 하나만 잘못 매핑해도 드라이브가 기동하지 않거나, HMI가 계속 latch하는 고장을 만든다. 둘 다 bit 단위로 해석하고 모든 전이를 증명하는 법.
데드밴드는 아날로그 변화가 이벤트가 될지를 결정하고, Group 32 변형은 그 형식과 크기를 결정한다. 둘을 잘못 잡으면 이벤트 버퍼를 흘러넘치게 하거나 쓸모없는 타임스탬프를 보낸다. 튜닝하는 법을 정리한다.
이중화 hot-standby PLC 쌍은 전환이 증명되고 동기화 상실에 알람이 걸려야 값을 한다. CPU 이중화가 커버하는 것과 못 하는 것, 그리고 양방향 전환을 시운전에서 시험하는 법.
현장 계기에서 PLC를 거쳐 SCADA까지 모든 4-20 mA 포인트를 처음부터 끝까지 검증하고, 뒤바뀐 두 트랜스미터를 시운전 후가 아니라 전에 잡아내는 방법.
단선, 포화된 루프, 얼어붙은 입력도 그럴듯한 숫자를 만들어 믿을 만한 값으로 스케일된다. 잘못된 값이 운전원이나 제어 루프에 닿기 전에 과범위·저범위·정지된 4-20 mA 신호를 SCADA에서 감지하는 방법.
Class 0/1/2/3 배정, 아날로그 데드밴드, 비요청 응답, 이벤트 버퍼, 그리고 통신 두절 중에 마스터가 outstation 상태를 계속 유지할지 결정하는 IIN 비트까지 정리한다.
회선이 멈추거나 프레임을 흘리거나 CRC 오류를 남기는 DNP3 문제는 한 계층 아래에서 잡는다. 소스·목적지 주소, 확인/비확인 서비스, 재시도와 타임아웃 튜닝, keep-alive, 느린 무선·시리얼 회선의 프레이밍 오류.
DNP3 제어 시운전: select-before-operate와 direct operate를 언제 쓰나, CROB의 trip/close 코드·on/off 시간·count 읽기, 느린 회선에서 물어뜯는 select 타임아웃, 그리고 Operate 응답을 믿는 대신 피드백을 검증하는 법.
DNP3 outstation이 이벤트에 스스로 타임스탬프를 찍는 이유, Need Time(IIN1.4) 비트와 지연 보정 시각 쓰기가 동작하는 방식, 그리고 시각 동기화 불량이 SOE 로그를 허구로 만드는 과정.
OPC UA HistoryRead로 SCADA·히스토리언 누락 구간을 복구하는 법. 구간을 정확히 잡고, returnBounds로 경계 샘플을 처리하고, Bad 품질을 보존하며, continuation point로 서버 부하 없이 페이징한다.
SCADA와 HMI 프로젝트에서 알람 priority를 결과 영향과 운전자 대응 시간으로 등급 매기는 방법. High priority를 드물게 유지하는 EEMUA 191, ISA-18.2 목표치까지 정리한다.
Exception과 periodic 수집은 서로 다른 사실을 저장한다. Tag별로 어떻게 고르면 300 ms interlock을 잃지 않는지, 그리고 시운전 때 어떻게 증명하는지 정리했다.
Modbus는 32-bit 값의 endianness를 표준으로 정하지 않는다. 그래서 16-bit register 두 개가 엉뚱한 값으로 디코딩된다. Driver에서 추측하지 말고 현장에서 byte/word order를 증명하는 방법.
ping도 되고 4840 port도 열려 있는데 OPC UA client가 접속에 실패한다면, 대개 tag가 아니라 endpoint URL, hostname SAN, ApplicationUri 불일치다. status code를 읽고 고치는 방법.
SCADA 시운전에서 태그, 화면, 알람, 트렌드, 권한, 장애 상황을 확인하는 실무 체크리스트입니다.