WirelessHART 데이터를 SCADA로 가져올 때 멈춘 값에 속지 않는 법
WirelessHART 게이트웨이 데이터를 SCADA에 안전하게 올리는 법 — 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 상태 점검.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
WirelessHART 게이트웨이 데이터를 SCADA에 안전하게 올리는 법 — 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 상태 점검.
LTE 위의 SCADA에서 poll 주기·timeout·keepalive를 정하는 방법 — 바이트 계산, 통신사 NAT timeout, report-by-exception, 그리고 RTU로 접속해 들어가면 안 되는 이유.
IEC 62439-3 PRP와 HSR이 SCADA와 IEC 61850에 무손실 네트워크 이중화를 주는 원리, 한쪽 LAN 장애가 왜 아무도 모르게 지나가는지, 시운전 때 무엇을 감시해야 하는지 정리한다.
NTP는 대부분의 SCADA 시계를 몇 밀리초 안에 맞춰주고, 그 정도면 차고 넘친다 — 변전소 간 1 ms 이벤트 순서(SOE)가 필요해지기 전까지는. PTP가 값을 하는 곳과 과잉인 곳을 짚는다.
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의 차이, 그리고 제어를 조용히 망가뜨리는 불일치들.
OPC Classic(DA/HDA) 연결이 DCOM에서 깨지는 이유 — 포트 135의 RPC endpoint mapper, 동적 포트 범위, 서버 identity, 방화벽 — 과 레거시 서버를 SCADA에 가장 빨리 연결하는 방법.
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로 끌어오는 방법.
데드밴드는 아날로그 변화가 이벤트가 될지를 결정하고, Group 32 변형은 그 형식과 크기를 결정한다. 둘을 잘못 잡으면 이벤트 버퍼를 흘러넘치게 하거나 쓸모없는 타임스탬프를 보낸다. 튜닝하는 법을 정리한다.
Modbus RTU를 실어 나르는 serial-to-Ethernet 디바이스 서버를 시운전할 때 동작 모드, packing timer, TCP framing, idle timeout, half-duplex 제어를 정리한 실무 노트.
SCADA 드라이버가 Modbus 레지스터를 블록 읽기로 묶는 방식, gap tolerance와 블록 크기가 중요한 이유, 그리고 매핑 안 된 주소 하나가 어떻게 블록 안 모든 태그를 한꺼번에 무너뜨리는지.
OPC UA sequence number와 Republish 서비스는 놓친 notification을 데이터 손실 없이 되살릴 수 있다. 단, 클라이언트가 번호를 감시하고 재전송 큐 크기가 맞을 때만 그렇다. Gap을 감지하고 복구하는 법.
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 로그를 허구로 만드는 과정.
SCADA에서 report-by-exception과 change-of-state를 쓰는 법 — DNP3 이벤트, deadband, heartbeat, integrity poll로 짧은 이벤트와 stale 값을 놓치지 않기.
간헐적인 bad quality는 대개 스위치 포트에서 시작된다. 어떤 SNMP object를 polling할지, counter를 왜 증가율로 봐야 하는지, trap이 어디서 조용히 실패하는지 정리한다.
Modbus TCP-RTU 게이트웨이는 Ping이 되면서도 요청을 버릴 수 있다. Stale 값 뒤에 숨은 큐 포화를 찾고, 배선 탓 대신 SCADA 드라이버를 먼저 손보는 방법.
OPC UA PubSub(Part 14, UADP over UDP)을 시운전할 때 오래된 값을 Live처럼 내보내지 않으려면 — Dataset 계약, Multicast·VLAN 확인, Subscriber 진단, Timing, 그리고 Reboot 때만 드러나는 장애 모드.
느린 시리얼 장비가 응답할 기회를 갖도록 SCADA 링크에서 Modbus RTU baud rate, silent interval(t3.5), turnaround delay를 잡는 방법입니다.
MQTT 도착 순서는 공정 순서가 아니다. DUP flag가 중복을 못 잡는 이유, Sparkplug seq의 8-bit wrap, MQTT 5.0 retained 만료 처리까지 실무 기준으로 정리한다.
Shared Subscription은 MQTT Edge 스트림을 여러 Worker로 나눠 처리하게 해 준다. 하지만 같은 구조가 잘못된 Consumer를 향하면 Historian 피드가 조용히 반토막 나고 Trend 순서가 뒤섞인다. 어디에 쓰고 어디에 쓰면 안 되는지 정리했다.
site/# 구독의 부하를 승인 전에 계산하는 방법. MQTT 5.0 Retain Handling, Shared Subscription, Receive Maximum, SUBACK reason code로 실제로 막는 법까지.
RSTP, MRP, PRP 링 시운전에서 운전자가 실제로 겪는 것을 재는 순서. 복구 시간, 끊어진 OPC UA subscription, 반쯤 열린 Modbus socket, alternate path에서 빠진 VLAN까지.
Modbus TCP 장비의 동시 연결 수는 생각보다 적다. Client를 미리 세고, 실제 socket 동작을 확인하고, historian이 HMI를 밀어내지 않게 하는 법.
잘못 처리된 transaction ID 때문에 Modbus TCP 게이트웨이가 SCADA 드라이버에 엉뚱한 register 값을 넘겨주는 과정과, capture로 이를 증명하는 방법.
MQTT client ID는 23바이트만 보장된다. 중복 ID, 너무 넓은 wildcard, retained command, 소리 없이 거부되는 publish까지 SCADA edge에서 실제로 터지는 것들.
OPC UA에서는 secure channel, session, subscription이 각자의 시계로 만료된다. 어느 쪽이 죽었는지 알면 firewall, server 부하, keepalive count 중 무엇을 봐야 하는지 정해진다.
평평한 1초 scan이 PLC와 gateway를 왜 밀어붙이는지, 그리고 부하가 걸려도 operator가 실제로 판단에 쓰는 데이터는 빠르게 유지되도록 scan class와 load shedding을 설계하는 법.
ping도 되고 4840 port도 열려 있는데 OPC UA client가 접속에 실패한다면, 대개 tag가 아니라 endpoint URL, hostname SAN, ApplicationUri 불일치다. status code를 읽고 고치는 방법.
HMI, PLC, OPC UA, Modbus TCP 통신이 끊겼다가 아무도 못 보는 사이 복구될 때, 어디서 잡고 무엇을 필터하고 첫 30초를 어떻게 읽을 것인가.
한 scan만 켜지는 reject pulse는 20 ms 만에 사라진다. 250 ms로 폴링하면 rate를 아무리 올려도 SCADA는 그 pulse를 못 본다. 감으로 정하지 말고 PLC scan time, driver, historian에 맞춰 polling rate를 정하는 법.
Register map을 건드리기 전에 극성, 종단, bias, grounding부터 증명하는 Modbus RTU over RS-485 시운전 방법. 실제로 중요한 숫자까지 정리했다.
SCADA edge에서 broker, client, CA 인증서를 단계적으로 교체해 publish, store-and-forward queue, Sparkplug birth 순서를 깨지 않는 절차.
OPC UA가 인증서 신뢰, 사용자 identity, Part 18 role mapping을 어떻게 나누는지, 그리고 엉뚱한 session이 setpoint를 못 바꾸도록 write 권한을 시운전하는 방법.
Modbus unit identifier는 TCP에서는 '쓸모없다'고 하지만, gateway가 끼면 얘기가 달라진다. Serial gateway 뒤에서 unit ID routing이 어떻게 동작하는지, 그리고 내가 부른 slave가 아니라 다른 slave가 대답했을 때 원인을 찾는 법.
OPC UA reverse connect가 cell 방화벽을 통과하도록 TCP 방향을 뒤집는 원리와, 그 뒤에 여전히 발목을 잡는 certificate·endpoint·진단 함정.
사람이 외우지 않는 계정에 90일 주기는 맞는 트리거가 아니다. IEC 62443-3-3 SR 1.2가 service account를 어디로 넣는지, credential이 숨어 있는 위치, 교체가 조용히 깨지는 지점.
WAN 장애 중 MQTT edge gateway가 데이터를 잃는 이유와, source timestamp·Sparkplug 방식 sequence number·replay 정책으로 historian의 공백을 막는 방법.
IEC 62443-3-3 SR 5.2와 SR 1.13 기준으로 SCADA 원격 지원 경로를 설계하고, 시운전에서 막히는 쪽까지 시험하는 방법. 포트와 timeout 숫자 포함.
SCADA, PLC, HMI, 히스토리언, OPC UA, Modbus TCP, MQTT 방화벽 룰을 데이터 흐름에서 시작해 시운전하는 법 — 커트오버 때 터지는 보조 서비스 경로를 잡고, 각 룰을 실제 애플리케이션 시험으로 증명하는 방법.
OPC UA 이중화 서버 failover 시운전 절차: ServiceLevel, subscription 복구, 인증서, 그리고 운전자보다 먼저 stale 데이터를 잡아내는 방법.
보안을 끄면 browse가 되는데 secure channel을 켜면 끊기는 OPC UA 연결을, SCADA 현장에서 trust store와 인증서 이름, endpoint로 잡아나가는 방법.
SCADA 히스토리언 타임스탬프가 틀어지는 원인 — 클록 드리프트, NTP와 PTP, OPC UA 소스 시간, 지연 데이터, 서머타임 — 을 보고서 분쟁 전에 잡는 법.
장치 한 대가 멈추거나 RTU 게이트웨이가 포화돼도 SCADA 드라이버 전체가 같이 느려지지 않도록 Modbus TCP 폴링 주기, 타임아웃, 재시도, 스캔 그룹을 정하는 법.
SCADA와 산업용 텔레메트리에서 MQTT QoS, retained message, 세션, 중복 메시지, 명령 토픽을 어떻게 나눠 볼지 정리한 현장 노트.
Modbus 예외 응답을 프레임 단위로 읽고, 통신 불량과 요청 거절을 구분하며, 잘못된 주소·게이트웨이·폴링 부하 원인을 좁히는 방법.
MQTT Last Will, Birth, retain 메시지로 SCADA 화면에서 오프라인·데이터 정지·정상을 서로 다른 상태로 표시하는 방법입니다.
OPC UA 인증서 만료로 통신이 끊기지 않도록 갱신 절차와 확인 항목을 정리합니다.
SCADA 화면은 장비가 멈춘 뒤에도 그럴듯한 숫자를 태연히 보여준다. 하트비트, 와치독, stale-data 태그로 데이터의 신선도를 눈에 보이게 만드는 방법 — 실제 프로토콜 품질, 현실적인 타임아웃, 그리고 그걸 증명하는 시운전 절차까지.
SCADA 네트워크 장애를 장비, 케이블, IP, 포트, 프로토콜 순서로 좁혀 가는 점검 절차입니다.
산업용 이더넷 스위치 시운전에서 IP, 포트, VLAN, 링 이중화, 로그를 확인하는 순서입니다.
Modbus TCP를 처음 붙일 때 주소, 레지스터 타입, 워드 순서, 폴링 주기에서 자주 틀리는 지점을 정리합니다.