HSMS Select에 응답이 없을 때, 세 가지 원인을 실제 캡처로 가르는 법
Select 타임아웃 한 줄 뒤에는 진짜 무응답, SystemBytes 불일치, SessionID 불일치가 섞여 있다. 2026-09-17에 소켓에서 직접 잡은 패킷과 SEMI E37의 T5·T6·T7로 셋을 구분한다.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
Select 타임아웃 한 줄 뒤에는 진짜 무응답, SystemBytes 불일치, SessionID 불일치가 섞여 있다. 2026-09-17에 소켓에서 직접 잡은 패킷과 SEMI E37의 T5·T6·T7로 셋을 구분한다.
IEC 62439-3 PRP와 HSR이 SCADA와 IEC 61850에 무손실 네트워크 이중화를 주는 원리, 한쪽 LAN 장애가 왜 아무도 모르게 지나가는지, 시운전 때 무엇을 감시해야 하는지 정리한다.
가동 중인 PLC의 래더 로직을 안전하게 바꾸는 법. 온라인 편집과 다운로드의 차이, 스캔 순서 함정, 실인(seal-in) 글리치, 포스, 출력이 떨어지지 않게 하는 사전 점검표를 정리한다.
Modbus RTU를 실어 나르는 serial-to-Ethernet 디바이스 서버를 시운전할 때 동작 모드, packing timer, TCP framing, idle timeout, half-duplex 제어를 정리한 실무 노트.
Modbus TCP-RTU 게이트웨이는 Ping이 되면서도 요청을 버릴 수 있다. Stale 값 뒤에 숨은 큐 포화를 찾고, 배선 탓 대신 SCADA 드라이버를 먼저 손보는 방법.
운전원이 지금 어느 설비를 조작하는지 화면이 스스로 밝히게 만드는 방법. ISA-101.01 display hierarchy, 범위가 보이는 버튼 label, 복사 화면 검증까지.
시퀀스 화면에 step number만 있으면 운전원은 화면을 네 개 뒤진다. State, step, hold reason을 나눠 보여 주고 hold reason은 latch해 두는 방법.
재사용 페이스플레이트 팝업의 컨텍스트 전달 설계. 설비 키, 명령 바인딩 검증, OPC UA StatusCode로 본 품질 처리, ISA-101 화면 계층 기준으로 정리했다.
히스토리언에서 calibration, manual 전환, bypass를 sampled stream과 분리된 event record로 남기고 asset ID와 시간 구간으로 다시 붙이는 방법. 21 CFR 11, Annex 11, OPC UA Part 11 기준.
Modbus TCP 장비의 동시 연결 수는 생각보다 적다. Client를 미리 세고, 실제 socket 동작을 확인하고, historian이 HMI를 밀어내지 않게 하는 법.
잘못 처리된 transaction ID 때문에 Modbus TCP 게이트웨이가 SCADA 드라이버에 엉뚱한 register 값을 넘겨주는 과정과, capture로 이를 증명하는 방법.
값만 보는 HMI가 숨기는 frozen data, gateway cache 값, clock drift를 OPC UA StatusCode severity 비트와 SourceTimestamp, ServerTimestamp로 잡아내는 방법.
평평한 1초 scan이 PLC와 gateway를 왜 밀어붙이는지, 그리고 부하가 걸려도 operator가 실제로 판단에 쓰는 데이터는 빠르게 유지되도록 scan class와 load shedding을 설계하는 법.
MES route에 rework loop가 들어가면 WIP와 수율이 조용히 틀어진다. Visit number, disposition, 설비 event를 올바른 route step instance에 묶는 방법.
히스토리언이 archive 데이터를 point ID로 잡는지 이름 문자열로 잡는지, rename 한 번에 이력이 왜 둘로 쪼개지는지, cutover에서 무엇을 확인해야 operator보다 먼저 구멍을 찾는지.
Host가 EC를 썼고 장비는 EAC = 0을 돌려줬는데도 아홉 lot이 이전 값으로 돌았다. SEMI E5 EAC code, 실제 socket에서 뜬 S2F13 readback byte, S2F29 namelist, SAT에서 돌릴 EC test matrix.
계기 고장으로 태그가 11시간 동안 full scale에 붙어 있었다. 품질 검토를 견디는 audit trail을 남기면서 이 구간을 보정하는 방법과, raw sample을 반드시 남겨야 하는 이유.
야간 교대 report에서 good count가 4개 어긋난다. PLC counter, historian delta, S6F11 event time, spool drain 중 어디를 먼저 봐야 하는지 정리한다.
Register map을 건드리기 전에 극성, 종단, bias, grounding부터 증명하는 Modbus RTU over RS-485 시운전 방법. 실제로 중요한 숫자까지 정리했다.
SCADA에서 OPC UA Alarm & Condition subscription을 시운전할 때 event filter, Retain flag, ConditionRefresh method, acknowledge 경로, timestamp, 그리고 reconnect 뒤에야 드러나는 문제를 짚는다.
녹색 redundancy 아이콘은 heartbeat가 살아 있다는 것만 증명한다. SCADA server를 실제로 전환할 때 client, alarm, historian, background job에서 무엇을 확인해야 하는지 정리했다.
오래된 공정 데이터를 평균 내면 trip이 사라지고 peak가 낮아지고 적산값이 틀어진다. 태그를 분류하고, 종류별 다운샘플 방법을 고르고, 값과 함께 품질을 남기고, purge를 운영에 걸기 전에 시험하는 법.
HMI setpoint 입력이 깨지는 지점은 입력이 아니라 응답 경로다. 표시 범위와 PLC hard limit을 나누는 방법, 조용한 반올림과 무시된 write를 잡아내는 시운전 시험 10가지.
SCADA edge에서 broker, client, CA 인증서를 단계적으로 교체해 publish, store-and-forward queue, Sparkplug birth 순서를 깨지 않는 절차.
OPC UA가 인증서 신뢰, 사용자 identity, Part 18 role mapping을 어떻게 나누는지, 그리고 엉뚱한 session이 setpoint를 못 바꾸도록 write 권한을 시운전하는 방법.
Valve를 강제로 여는 것과 유량값을 대체하는 것은 다른 override인데 `Manual` bit 하나로는 구분이 안 된다. HMI override의 표시, 권한, 시간 제한, 로그를 서버 재기동 후에도 남게 설계하는 방법.
Modbus unit identifier는 TCP에서는 '쓸모없다'고 하지만, gateway가 끼면 얘기가 달라진다. Serial gateway 뒤에서 unit ID routing이 어떻게 동작하는지, 그리고 내가 부른 slave가 아니라 다른 slave가 대답했을 때 원인을 찾는 법.
OPC UA reverse connect가 cell 방화벽을 통과하도록 TCP 방향을 뒤집는 원리와, 그 뒤에 여전히 발목을 잡는 certificate·endpoint·진단 함정.
복원 리허설 설계법. 백업 세트에서 빠지는 항목, OPC UA 인증서와 service account 함정, 항목별 RPO와 보관 개수, 합격 기준이 붙은 검증표, 구간별 실측 RTO와 목표 대비 여유.
사람이 외우지 않는 계정에 90일 주기는 맞는 트리거가 아니다. IEC 62443-3-3 SR 1.2가 service account를 어디로 넣는지, credential이 숨어 있는 위치, 교체가 조용히 깨지는 지점.
event frame과 batch segment는 경계가 버텨줘야 값어치를 한다. 시작과 종료 트리거를 어디서 잡을지, 무엇을 속성으로 캡처할지, 닫히지 않은 frame을 어떻게 처리할지 정리했다.
설비 event로 MES lot traceability를 만들 때 실제로 깨지는 지점 — event에 빠진 lot context, GEM clock과 event time, spool replay 순서, split/merge genealogy, 그리고 정직한 correction 설계.
Store-and-forward 버퍼는 회선이 살아나는 순간 몇 시간 지난 값을 한꺼번에 밀어 넣습니다. 어떤 타임스탬프를 기준으로 할지, 늦게 온 값이 무엇을 덮어써도 되는지, 어떻게 표시할지, 이미 배포한 숫자를 바꿔도 되는지를 정하는 이야기.
PLC 다운로드나 서버 교체 후 세션은 정상인데 monitored item마다 Bad_NodeIdUnknown이 돌아옵니다. namespace index와 identifier, 클라이언트 캐시가 실제로 어떻게 바뀌는지, 정지 시간이 끝나기 전에 무엇을 확인해야 하는지 정리했습니다.
알람 합리화 워크숍에서 알람을 줄이는 기준, 우선순위 조정, 조치 문구 정리 방법을 다룹니다.
MES 비가동 사유 코드를 현장에서 제대로 선택되게 만드는 법. 입력 프롬프트 타이밍, PackML 상태 기반 자동 분류, 리포트에 실제로 필요한 필드까지 정리했습니다.
MQTT Last Will, Birth, retain 메시지로 SCADA 화면에서 오프라인·데이터 정지·정상을 서로 다른 상태로 표시하는 방법입니다.
히스토리언 데드밴드와 압축을 HMI 소수점이 아니라 계기 정확도와 공정 기준으로 정해, 노이즈는 저장하지 않으면서 실제 움직임은 트렌드에 남기는 방법.
모드는 누가 명령할 수 있는가, 상태는 지금 뭘 하고 있는가다. SEMI E30 GEM 제어 상태 모델에 맞춰 HMI 표시 칸을 나누는 방법과 커미셔닝 확인 항목.
HMI/SCADA 프로젝트에서 반복해서 문제가 되는 태그, 알람, 화면, 문서화 기준을 정리합니다.
group_id·edge_node_id·device_id를 어떻게 잡아야 이름 변경 하나로 모든 구독과 히스토리언 포인트가 깨지지 않는지, 그리고 birth 인증서·alias·STATE를 실무 기준으로 정리합니다.
모터, 밸브, 인버터 같은 반복 장비를 일관된 방식으로 조작하기 위한 페이스플레이트 설계 기준입니다.
산업용 이더넷 스위치 시운전에서 IP, 포트, VLAN, 링 이중화, 로그를 확인하는 순서입니다.
SCADA 시운전에서 태그, 화면, 알람, 트렌드, 권한, 장애 상황을 확인하는 실무 체크리스트입니다.
SCADA 태그 이름을 설비, 신호 의미, 데이터 성격이 드러나도록 정리하는 실무 기준입니다.