WirelessHART 데이터를 SCADA로 가져올 때 멈춘 값에 속지 않는 법
WirelessHART 게이트웨이 데이터를 SCADA에 올리는 법. 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 점검.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
WirelessHART 게이트웨이 데이터를 SCADA에 올리는 법. 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 점검.
LTE 위 SCADA의 poll 주기·timeout·keepalive 정하기. 바이트 계산, 통신사 NAT timeout, report-by-exception.
IEC 62439-3 PRP와 HSR이 무손실 이중화를 주는 원리, 한쪽 LAN 장애가 조용히 지나가는 이유, 시운전 때 감시할 것.
NTP는 SCADA 시계를 몇 ms 안에 맞추고 대개 그걸로 충분하다. 변전소 간 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 input(group 3·4)은 52a/52b 접점을 네 상태로 인코딩해 동작 중 OPEN/CLOSED 깜빡임을 없앤다. 매핑·시운전·경보 설정.
DNP3 SAv5 시운전: critical 기능 지정, 느린 회선의 challenge-response와 aggressive mode, update·session key.
OPC Classic(DA/HDA)이 DCOM에서 깨지는 이유. 포트 135 endpoint mapper, 동적 포트, 서버 identity, 방화벽, 가장 빠른 연결법.
SCADA 드라이버가 EtherNet/IP로 Logix 태그를 읽는 방식. 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용 디바이스 서버 시운전: 동작 모드, packing timer, TCP framing, idle timeout, half-duplex 제어.
SCADA 드라이버가 Modbus 레지스터를 블록으로 묶는 방식, gap tolerance와 블록 크기, 매핑 안 된 주소 하나가 블록 전체를 무너뜨리는 이유.
OPC UA Republish는 놓친 notification을 되살린다. 단, 클라이언트가 sequence number를 감시하고 재전송 큐가 맞을 때만 그렇다.
DNP3 Class 0/1/2/3 배정, 아날로그 데드밴드, 비요청 응답, 이벤트 버퍼, 통신 두절 때 마스터 판단을 바꾸는 IIN 비트까지.
멈추는 DNP3 회선, 흘린 프레임, CRC 오류는 데이터 링크 계층에서 잡는다. 주소, 확인 서비스, 재시도·타임아웃, keep-alive 튜닝.
DNP3 제어 시운전: SBO와 direct operate 선택, CROB 코드 읽기, 느린 회선의 select 타임아웃, 피드백으로 검증하는 법.
DNP3 outstation이 이벤트에 직접 타임스탬프를 찍는 이유, Need Time(IIN1.4)과 지연 보정 시각 쓰기, 시각 동기 불량이 SOE를 망치는 과정.
Report-by-exception 쓰는 법: DNP3 이벤트, deadband, heartbeat, integrity poll로 짧은 이벤트와 stale 값을 잡는다.
간헐적 bad quality는 대개 스위치 포트에서 시작된다. polling할 SNMP object, counter를 증가율로 보는 이유, trap이 조용히 실패하는 곳.
Modbus TCP-RTU 게이트웨이는 Ping이 되면서도 요청을 버릴 수 있다. Stale 값 뒤에 숨은 큐 포화를 찾고, 배선 탓 대신 SCADA 드라이버를 먼저 손보는 방법.
OPC UA PubSub(UADP/UDP) 시운전: Dataset 계약, Multicast·VLAN, Subscriber 진단, Timing, Reboot 때만 보이는 장애.
느린 시리얼 장비가 응답할 수 있게 Modbus RTU baud rate, silent interval(t3.5), turnaround delay를 잡는 법.
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으로 막기.
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까지.
OPC UA channel, session, subscription은 각자 만료된다. 죽은 쪽을 알면 firewall, 서버 부하, keepalive 중 볼 곳이 나온다.
일괄 1초 scan이 PLC와 gateway를 누르는 이유. 부하 때도 판단에 쓰는 데이터는 빠르게 두는 scan class와 load shedding 설계.
ping도 되고 4840도 열렸는데 OPC UA 접속이 실패하면 대개 endpoint URL, SAN, ApplicationUri 불일치다. status code로 고친다.
HMI, PLC, OPC UA, Modbus TCP 통신이 끊겼다가 아무도 못 보는 사이 복구될 때, 어디서 잡고 무엇을 필터하고 첫 30초를 어떻게 읽을 것인가.
20 ms reject pulse는 250 ms 폴링으로 못 잡는다. 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, Sparkplug birth를 지키는 절차.
OPC UA 인증서 신뢰, 사용자 identity, Part 18 role mapping을 나누고 엉뚱한 session의 setpoint write를 막는 시운전.
TCP에서 쓸모없다는 unit ID가 gateway 뒤에서는 routing을 정한다. Serial gateway의 unit ID 동작과, 엉뚱한 slave가 대답할 때 원인 찾기.
OPC UA reverse connect가 cell 방화벽을 통과하도록 TCP 방향을 뒤집는 원리와, 그 뒤에 여전히 발목을 잡는 certificate·endpoint·진단 함정.
사람이 안 외우는 계정에 90일 주기는 맞지 않다. IEC 62443-3-3 SR 1.2의 service account 위치, 숨은 credential, 교체가 깨지는 곳.
WAN 장애 때 MQTT edge가 데이터를 잃는 이유. source timestamp, sequence number, replay 정책으로 historian 공백을 막는다.
IEC 62443-3-3 SR 5.2와 SR 1.13 기준으로 SCADA 원격 지원 경로를 설계하고, 시운전에서 막히는 쪽까지 시험하는 방법. 포트와 timeout 숫자 포함.
SCADA 방화벽 룰을 데이터 흐름에서 시작해 시운전하는 법. 커트오버 때 터지는 보조 서비스 경로를 잡고 룰마다 실제 앱으로 시험한다.
OPC UA 이중화 서버 failover 시운전 절차: ServiceLevel, subscription 복구, 인증서, 그리고 운전자보다 먼저 stale 데이터를 잡아내는 방법.
보안을 끄면 되고 켜면 끊기는 OPC UA 연결을 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, 포트, 프로토콜 순서로 좁혀 가는 점검 절차입니다.
산업용 이더넷 스위치 시운전에서 숫자로 확인할 것. IGMP querier와 260초, auto-negotiation 반이중 함정, RSTP 20초와 IEC 62439-2 링 복구 등급, 프로토콜별 실제 포트 번호.
Modbus TCP를 처음 붙일 때 주소, 레지스터 타입, 워드 순서, 폴링 주기에서 자주 틀리는 지점을 정리합니다.