MQTT 대시보드 값이 뒤로 튀는 이유: timestamp와 sequence number 설계
MQTT 도착 순서는 공정 순서가 아니다. DUP flag가 중복을 못 잡는 이유, Sparkplug seq의 8-bit wrap, MQTT 5.0 retained 만료 처리까지 실무 기준으로 정리한다.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
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로 실제로 막는 법까지.
MQTT client ID는 23바이트만 보장된다. 중복 ID, 너무 넓은 wildcard, retained command, 소리 없이 거부되는 publish까지 SCADA edge에서 실제로 터지는 것들.
SCADA edge MQTT 페이로드를 변경할 때 HMI, 히스토리언, MES connector, 분석 시스템이 조용히 깨지지 않도록 schema version을 관리하는 실무 노트.
SCADA edge에서 broker, client, CA 인증서를 단계적으로 교체해 publish, store-and-forward queue, Sparkplug birth 순서를 깨지 않는 절차.
WAN 장애 중 MQTT edge gateway가 데이터를 잃는 이유와, source timestamp·Sparkplug 방식 sequence number·replay 정책으로 historian의 공백을 막는 방법.
SCADA와 산업용 텔레메트리에서 MQTT QoS, retained message, 세션, 중복 메시지, 명령 토픽을 어떻게 나눠 볼지 정리한 현장 노트.
MQTT Last Will, Birth, retain 메시지로 SCADA 화면에서 오프라인·데이터 정지·정상을 서로 다른 상태로 표시하는 방법입니다.
group_id·edge_node_id·device_id를 어떻게 잡아야 이름 변경 하나로 모든 구독과 히스토리언 포인트가 깨지지 않는지, 그리고 birth 인증서·alias·STATE를 실무 기준으로 정리합니다.
OPC UA와 MQTT를 어느 쪽이 더 좋은가가 아니라, 현장 통합 목적에 따라 어떻게 나눠 쓸지 설명합니다.