S2F23에 S2F0이 돌아왔다 — 기능 미구현인지 통신 게이트인지 바이트로는 못 가린다
같은 세션에서 S2F23이 두 번 S2F0으로 돌아온 캡처. 원인은 E30 통신 게이트와 기능 미구현으로 서로 다른데 응답 바이트는 SystemBytes만 빼고 같다.
글
HMI/SCADA, 산업 통신, 알람, 태그, 히스토리언을 현장 업무 흐름에 맞춰 정리한 노트입니다.
같은 세션에서 S2F23이 두 번 S2F0으로 돌아온 캡처. 원인은 E30 통신 게이트와 기능 미구현으로 서로 다른데 응답 바이트는 SystemBytes만 빼고 같다.
Select.rsp와 Linktest.rsp는 장비가 고른 Session ID로 온다. 데이터 메시지 응답만 보낸 값을 그대로 돌려준다. 캡처 세 판.
알람 연동 테스트는 통과하는데 현장에서 알람이 안 온다. 호스트가 보낸 S5F1에 ACKC5 0이 왔고, 정작 호스트 몫인 S10F3은 abort였다.
한 소켓에 S1F13, S3F17, S14F1, S16F11을 던진 캡처. GEM은 답하고 GEM300이 쓰는 stream 셋은 SxF0으로 끊겼다.
씹힌 Linktest.req로 T6가 만료돼도 같은 소켓의 S1F1은 0.3 ms 만에 S1F2로 답했지만, 장비가 SELECTED여도 host는 E37대로 끊는 게 맞다.
S1F4 body에는 SVID가 없다. SVID 번호와 이름을 S1F11/S1F12로 먼저 받아오는 실제 byte, 그리고 S2F29와 갈리는 지점.
SELECTED는 E37, COMMUNICATING은 E30이다. S1F13/S1F14 전에 보낸 S1F3이 S1F0 abort로 돌아오는 과정을 실제 byte로 본다.
S2F29로 ECID 목록을 받고 S2F13으로 값을 읽는다. 요청과 응답이 위치로만 묶이는 구조와 없는 ECID, S2F0이 오는 두 경우를 실제 byte로 확인한다.
정의하지 않은 RPTID를 link하면 설비마다 답이 다르다. S2F33/35/37 순서와 LRACK 5, DRACK 3, ERACK 0을 실제 byte로 본다.
설비 시계가 밀리면 link는 멀쩡한데 MES의 run 재구성이 어긋난다. S2F17로 읽고 S2F31로 맞추는 절차와 TIACK 0의 함정을 실제 capture로 본다.
화면은 ONLINE인데 S2F41 START가 HCACK 2로 거절된다. E30 통신 상태와 제어 상태를 나누고 HCACK이 0이 되는 자리를 capture로 짚는다.
설비 없이 host driver 검증: S1F13부터 S2F31까지 E30 startup 10단계를 npx 한 줄로 돌린다. PASS가 증명하는 것과 wire capture.
없는 Stream, 없는 Function, 깨진 본문을 리스너에 보낸 캡처. 돌아온 건 S9 하나와 SxF0 abort다. E5 stream 9와 MHEAD 읽기.
장비는 SystemBytes를 검사하지 않고 그대로 돌려준다. 같은 값으로 요청 두 개를 동시에 띄운 실제 캡처와, 호스트가 지켜야 할 SystemBytes 할당 규칙.
호스트 로그에 timeout 한 줄만 있을 때 T3와 T6를 실제 캡처로 가른다. E37 기본값(T3 45초, T6 5초, T7 10초, T8 5초)까지.
PPBODY 300바이트가 와이어에서는 330바이트가 된다. S7F1/S7F2 승인 단계를 건너뛴 호스트가 무엇을 잃는지 실제 S7F1·S7F3 캡처로 본다.
3ms 만에 떨어지는 connection refused와, TCP는 붙었는데 아무도 Select를 걸지 않는 경우. HSMS Active/Passive 짝을 실제 캡처로 구분한다.
HSMS는 SELECTED인데 S1F13은 조용히 T3만 태운다. 같은 소켓에서 Linktest는 0ms에 답하는 실제 캡처와, 상태 기계가 두 개인 이유.
S1F3 본문을 실제 소켓에 실어 본 캡처. 아이템 헤더 한 바이트가 포맷 코드와 길이 바이트 수를 어떻게 나눠 갖는지, 길이가 1 틀리면 무슨 일이 나는지.
HSMS 리스너에 Deselect.req, Reject.req, 미할당 SType 두 개를 보낸 캡처. 전부 무응답인데 Linktest는 돌아오고 세션은 SELECTED다.
패시브 HSMS 리스너 하나에 호스트 둘을 붙인 실제 캡처. 둘 다 Select Status 0을 받고, 먼저 붙은 쪽은 두 번째가 붙은 걸 끝까지 모른다.
S1F1에 S1F2가 안 오고 T3만 터진다면 헤더 바이트 2를 먼저 본다. W-bit과 Stream이 한 바이트에 같이 사는 탓에 생기는 두 가지 버그를 실제 캡처로.
부하 때만 응답을 놓치는 호스트는 TCP 읽기를 메시지로 착각한 파서다. 합쳐진 write, 쪼개진 write, 모자란 바디, 1 MiB 길이 접두어 캡처.
호스트를 내렸는데 장비는 아직 SELECTED다. Separate.req로 끝낸 세션과 소켓만 닫은 세션을 실제 캡처로 나란히 놓고 무엇이 다른지 본다.
HSMS에서 살아 있음과 연결됨은 다르다. Select 전에 Linktest와 S1F13을 보낸 캡처, E37의 Reject.req reason 4, 먼저 터지는 타이머.
실제 소켓에서 받은 Select.rsp 캡처. 수락, E37 Select Status 1·2·3 거절, 다른 SessionID 응답. select failed가 버리는 바이트.
Select 타임아웃 한 줄 뒤에는 무응답, SystemBytes 불일치, SessionID 불일치가 섞여 있다. 실제 패킷과 E37 T5·T6·T7로 구분한다.
장비는 응답했는데 호스트는 타임아웃을 낸다. 실제 캡처로 SystemBytes 불일치를 바이트 단위로 맞춰 보고, 프레임이 버려지는 이유와 T3가 아니라 T6인 이유까지.
WirelessHART 게이트웨이 데이터를 SCADA에 올리는 법. 업데이트 주기와 폴링, stale 값 검출, Modbus 매핑 함정, join 문제, 네트워크 점검.
원격 알람 통보는 전달 경로일 뿐 알람 시스템이 아니다. 무엇을 호출로 내보낼지, 사람의 반응 속도에 맞는 에스컬레이션 시간, 그리고 전달 여부를 증명하는 방법.
SCADA에서 가스 유량의 압력·온도 보정을 다룹니다. 어떤 유량계에 필요한지, 절대압 함정, 계산을 어디에 둘지, 압력 트랜스미터가 죽으면 어떻게 할지.
strapping table을 SCADA에 넣는 실무 — 원형 세그먼트 기하, 보간 간격, 계산을 어느 계층에 둘지, 그리고 정수압 레벨이 재고를 속이는 밀도 함정까지.
두 번 재튜닝하고도 계속 사이클링하는 레벨 루프는 대개 튜닝이 아니라 밸브 문제다. PV/OP 트렌드에서 스틱션을 읽어내고, 스텝 테스트로 증명하고, SCADA에서 감시하는 방법.
리밋 스위치 두 개와 이송 타이머로 SCADA에서 정직한 밸브 상태를 만드는 법 — 이동 중 처리, 불일치 알람, 그리고 느려지는 액추에이터를 몇 달 먼저 잡아내는 방법.
LTE 위 SCADA의 poll 주기·timeout·keepalive 정하기. 바이트 계산, 통신사 NAT timeout, report-by-exception.
비율 제어는 한 스트림이 속도를 정하고 다른 하나가 따라간다. 곱셈기 위치, 비율이 벗어나는 이유, 규격 이탈 없이 기동하는 법.
PID 하나로 가열·냉각 밸브를 구동하면 전환점 근처에서 루프가 멈추거나 헌팅한다. 스플릿 지점, 오버랩 제거, 구간 간 게인 점프.
캐스케이드 제어는 튜닝 순서가 틀리거나 슬레이브 한계를 마스터가 모르면 실패한다. 두 PID 루프가 싸우지 않게 시운전하는 법.
IEC 62439-3 PRP와 HSR이 무손실 이중화를 주는 원리, 한쪽 LAN 장애가 조용히 지나가는 이유, 시운전 때 감시할 것.
오리피스 DP는 유량의 제곱에 비례하므로 누군가는 제곱근을 취해야 한다 — 트랜스미터, PLC, 아니면 SCADA. 두 번 취하거나 저유량 컷오프를 빼먹으면 값이 거짓말을 한다.
NTP는 SCADA 시계를 몇 ms 안에 맞추고 대개 그걸로 충분하다. 변전소 간 1 ms SOE가 필요할 때 PTP가 값을 하는 곳과 과잉인 곳.
센서와 SCADA 태그 사이 어디에서 온도 선형화와 냉접점 보상이 실제로 일어나는지, 그리고 엉뚱한 곳에서 처리하면 왜 믿고 쓰는 값이 조용히 편향되는지.
떨리는 4-20 mA 값을 1차 필터와 이동 평균으로 다듬는 법, 필터를 어디에 둘지, 그리고 엉뚱한 태그를 필터링하면 왜 정작 필요한 알람이 늦어지는지.
Rate-of-rise, rate-of-fall 알람 설계: window 길이, 노이즈 필터, 공학 단위, comms 복구 때 알람 폭주를 막는 quality gating.
가동 중인 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 input(group 3·4)은 52a/52b 접점을 네 상태로 인코딩해 동작 중 OPEN/CLOSED 깜빡임을 없앤다. 매핑·시운전·경보 설정.
DNP3 SAv5 시운전: critical 기능 지정, 느린 회선의 challenge-response와 aggressive mode, update·session key.
포화, 수동→자동 전환, 기동 램프 뒤 오버슈트는 reset windup이다. anti-windup, external reset, bumpless transfer로 잡는다.
OPC Classic(DA/HDA)이 DCOM에서 깨지는 이유. 포트 135 endpoint mapper, 동적 포트, 서버 identity, 방화벽, 가장 빠른 연결법.
PLC UDT가 OPC UA 클라이언트에서 ByteString으로 보인다. ExtensionObject 안에 든 것과 구조화 DataType 디코딩법.
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로 끌어오는 방법.
SCADA에서 lead/lag/standby 펌프 순환 구성: 듀티 분배, standby failover, 역할 교체가 예측 가능하고 운전자 눈에 보이게.
VFD control word나 status word를 하나만 잘못 매핑해도 기동이 안 되거나 고장이 latch된다. bit 단위 해석과 전이 증명법.
데드밴드는 아날로그 변화를 이벤트로 만들지 정하고, Group 32 변형은 형식을 정한다. 이벤트 버퍼 넘침과 쓸모없는 타임스탬프를 막는 튜닝.
Hot-standby PLC는 전환이 증명되고 동기화 상실에 알람이 있어야 값을 한다. CPU 이중화가 막는 것과 못 막는 것, 양방향 전환 시험.
Modbus RTU용 디바이스 서버 시운전: 동작 모드, packing timer, TCP framing, idle timeout, half-duplex 제어.
현장 계기에서 PLC를 거쳐 SCADA까지 모든 4-20 mA 포인트를 처음부터 끝까지 검증하고, 뒤바뀐 두 트랜스미터를 시운전 후가 아니라 전에 잡아내는 방법.
랩어라운드 카운터에서 가짜 유량 없이 사용량을 계산하는 법. 레지스터 폭, 델타 보정 한 곳에 두기, 롤오버와 리셋 구분, 음수 적산 막기.
SCADA 드라이버가 Modbus 레지스터를 블록으로 묶는 방식, gap tolerance와 블록 크기, 매핑 안 된 주소 하나가 블록 전체를 무너뜨리는 이유.
OPC UA Republish는 놓친 notification을 되살린다. 단, 클라이언트가 sequence number를 감시하고 재전송 큐가 맞을 때만 그렇다.
단선, 포화, 얼어붙은 입력도 그럴듯한 숫자가 된다. 과범위·저범위·정지된 4-20 mA 신호를 운전원과 제어 루프 전에 감지하는 법.
DNP3 Class 0/1/2/3 배정, 아날로그 데드밴드, 비요청 응답, 이벤트 버퍼, 통신 두절 때 마스터 판단을 바꾸는 IIN 비트까지.
멈추는 DNP3 회선, 흘린 프레임, CRC 오류는 데이터 링크 계층에서 잡는다. 주소, 확인 서비스, 재시도·타임아웃, keep-alive 튜닝.
DNP3 제어 시운전: SBO와 direct operate 선택, CROB 코드 읽기, 느린 회선의 select 타임아웃, 피드백으로 검증하는 법.
DNP3 outstation이 이벤트에 직접 타임스탬프를 찍는 이유, Need Time(IIN1.4)과 지연 보정 시각 쓰기, 시각 동기 불량이 SOE를 망치는 과정.
PLC나 HMI가 재시작된 뒤 오래된 명령이 다시 실행되지 않도록 command bit, 응답, startup 복구를 설계하고 시험하는 방법.
Report-by-exception 쓰는 법: DNP3 이벤트, deadband, heartbeat, integrity poll로 짧은 이벤트와 stale 값을 잡는다.
Alarm help text는 한 번 쓰이고 안 읽힌다. 야간 운전원이 바로 행동할 cause/consequence/response 쓰는 법과 빠지기 쉬운 ISA-18.2 항목.
최신순 정렬과 숨은 Area Filter가 Alarm Summary에서 알람을 지운다. ISA-18.2 상태와 flood 기준으로 정렬, 필터, 숨김 개수 정하기.
HMI 화면에서 색상, 형태, 텍스트, 상태 우선순위를 정해 비정상 상태를 현장에서 잘 보이게 만드는 실무 기준.
마지막 값 유지, 버려진 quality code, 도착 시간에 찍힌 지연 샘플. 장애 후 트렌드가 거짓말하는 세 가지 원인과 어느 쪽인지 가려내는 방법.
간헐적 bad quality는 대개 스위치 포트에서 시작된다. polling할 SNMP object, counter를 증가율로 보는 이유, trap이 조용히 실패하는 곳.
Modbus TCP-RTU 게이트웨이는 Ping이 되면서도 요청을 버릴 수 있다. Stale 값 뒤에 숨은 큐 포화를 찾고, 배선 탓 대신 SCADA 드라이버를 먼저 손보는 방법.
Browse는 성공했는데 태그 일부만 들어온다. Part 4의 continuation point 규칙과 MaxBrowseContinuationPoints로 원인을 잡는다.
OPC UA PubSub(UADP/UDP) 시운전: Dataset 계약, Multicast·VLAN, Subscriber 진단, Timing, Reboot 때만 보이는 장애.
운전원이 지금 어느 설비를 조작하는지 화면이 스스로 밝히게 만드는 방법. ISA-101.01 display hierarchy, 범위가 보이는 버튼 label, 복사 화면 검증까지.
시퀀스 화면에 step number만 있으면 운전원은 화면 네 개를 뒤진다. State, step, hold reason을 나누고 hold reason을 latch한다.
느린 시리얼 장비가 응답할 수 있게 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으로 막기.
쓰기 가능해 보이는 setpoint가 BadUserAccessDenied로 거부되는 이유. UserAccessLevel, WriteMask, 운영 계정 시험.
정비 Bypass는 Comment가 아니라 운전 상태다. Tag 이름, ISA-18.2 Out of Service, 만료 규칙, 임시 우회가 영구가 되지 않게 막는 Audit.
SCADA 히스토리언이 통신 공백을 보간선과 마지막 값으로 감추는 방식, 그리고 bad 데이터가 교대조 리포트까지 흘러가지 않게 막는 품질 규칙.
혼 정지를 ack 태그에 묶으면 이벤트 로그가 첫날부터 틀린다. 혼 정지, ack, 리셋, shelve를 ISA-18.2 상태로 나누고 시험하는 법.
HMI 버튼 조건을 권한, 모드, 퍼미시브, 인터록, 품질로 나누고 실제 차단 사유를 운전원에게 보여주는 설계 방법.
재사용 페이스플레이트 팝업의 컨텍스트 전달 설계. 설비 키, 명령 바인딩 검증, OPC UA StatusCode로 본 품질 처리, ISA-101 화면 계층 기준으로 정리했다.
NodeId는 재생성되고 browse path는 깨지고 DisplayName은 라벨이다. 펌웨어 업데이트에도 버티는 참조를 HMI·히스토리언에 고르는 기준.
OPC UA DataChangeFilter 정하기: 절대와 퍼센트 데드밴드, DataChangeTrigger, 큐 크기로 노이즈만 거르고 공정 변화는 남긴다.
OPC UA HistoryRead로 누락 구간 복구: 구간 지정, returnBounds 경계 샘플, Bad 품질 보존, continuation point 페이징.
트렌드 축을 0~100%로 clamp하면 NAMUR NE 43 고장 전류(−2.5%, 106.25%)가 사라진다. EURange, 알람선, 다중 축, 시운전 확인.
Calibration, manual 전환, bypass를 sampled stream과 분리된 event record로 남기고 asset ID와 시간 구간으로 잇는 법.
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 중 볼 곳이 나온다.
값만 보는 HMI가 숨기는 frozen data, gateway cache, clock drift를 StatusCode와 Source/ServerTimestamp로 잡는다.
일괄 1초 scan이 PLC와 gateway를 누르는 이유. 부하 때도 판단에 쓰는 데이터는 빠르게 두는 scan class와 load shedding 설계.
알람 priority를 결과 영향과 운전자 대응 시간으로 매기는 법. High priority를 드물게 지키는 EEMUA 191, ISA-18.2 목표치까지.
Exception과 periodic 수집은 서로 다른 사실을 저장한다. 300 ms interlock을 잃지 않게 tag별로 고르고 시운전에서 증명하는 법.
Rework loop가 들어가면 WIP와 수율이 틀어진다. Visit number, disposition, 설비 event를 맞는 step instance에 묶는 법.
Modbus는 32-bit 값의 endianness를 정하지 않아 register 두 개가 엉뚱하게 디코딩된다. byte/word order를 현장에서 증명하는 법.
MQTT 페이로드를 바꿀 때 HMI, 히스토리언, MES connector가 조용히 깨지지 않게 schema version을 관리하는 법.
ping도 되고 4840도 열렸는데 OPC UA 접속이 실패하면 대개 endpoint URL, SAN, ApplicationUri 불일치다. status code로 고친다.
Standing alarm은 ack됐지만 아직 active인 알람이다. ISA-18.2 stale alarm 기준으로 검토해 alarm summary의 소음을 없애는 법.
히스토리언이 point ID와 이름 중 무엇으로 이력을 잡는지, rename 한 번에 이력이 쪼개지는 이유, cutover에서 확인할 것.
HMI, PLC, OPC UA, Modbus TCP 통신이 끊겼다가 아무도 못 보는 사이 복구될 때, 어디서 잡고 무엇을 필터하고 첫 30초를 어떻게 읽을 것인가.
EC 쓰기에 EAC 0이 왔는데 아홉 lot이 이전 값으로 돌았다. E5 EAC code, S2F13 readback, S2F29 namelist, SAT용 EC 시험표.
계기 고장으로 태그가 11시간 full scale에 붙었다. 품질 검토를 통과하는 audit trail로 구간을 보정하는 법과 raw sample을 남기는 이유.
20 ms reject pulse는 250 ms 폴링으로 못 잡는다. PLC scan time, driver, historian에 맞춰 polling rate를 정하는 법.
E30 spooling은 S2F43으로 허용한 stream만 대상이다. SPOOL LOAD/UNLOAD, S2F44 RSPACK/STRACK, S6F24 RSDA 캡처.
HMI, historian, PLC log, alarm list는 같은 사건을 몇 초씩 다르게 찍는다. Source/ServerTimestamp, NTP·PTP, UTC 확인법.
야간 교대 report의 good count가 4개 어긋난다. PLC counter, historian delta, S6F11 시각, spool drain 중 먼저 볼 곳.
Register map보다 먼저 극성, 종단, bias, grounding을 증명하는 Modbus RTU over RS-485 시운전. 실제로 중요한 숫자까지.
OPC UA Alarm & Condition 시운전: event filter, Retain, ConditionRefresh, ack 경로, timestamp, reconnect.
녹색 redundancy 아이콘은 heartbeat만 증명한다. 서버 전환 때 client, alarm, historian, background job에서 확인할 것.
오래된 데이터를 평균 내면 trip이 사라지고 peak와 적산값이 틀어진다. 태그 분류, 종류별 다운샘플, 품질 보존, purge 전 시험.
HMI setpoint는 입력이 아니라 응답 경로에서 깨진다. 표시 범위와 PLC hard limit 분리, 조용한 반올림과 무시된 write 잡는 시험 10가지.
SCADA edge에서 broker, client, CA 인증서를 단계적으로 교체해 publish, store-and-forward, Sparkplug birth를 지키는 절차.
OPC UA 인증서 신뢰, 사용자 identity, Part 18 role mapping을 나누고 엉뚱한 session의 setpoint write를 막는 시운전.
Valve 강제 개방과 유량값 대체는 다른 override인데 `Manual` bit 하나로 못 가른다. 표시, 권한, 시간 제한, 로그를 설계하는 법.
TCP에서 쓸모없다는 unit ID가 gateway 뒤에서는 routing을 정한다. Serial gateway의 unit ID 동작과, 엉뚱한 slave가 대답할 때 원인 찾기.
OPC UA reverse connect가 cell 방화벽을 통과하도록 TCP 방향을 뒤집는 원리와, 그 뒤에 여전히 발목을 잡는 certificate·endpoint·진단 함정.
OPC DA quality, OPC UA StatusCode, DNP3 flag가 실제로 하는 일과, 죽은 신호가 정상 값처럼 보이지 않게 표시·알람·저장하는 법.
레시피 다운로드에서 선택값·다운로드값·운전값을 태그로 나누고, PLC가 인정한 값을 echo로 대조하는 방법. 거부 사유를 파라미터 단위로 남기는 설계까지.
HMI/SCADA 복원 리허설: 백업에서 빠지는 항목, OPC UA 인증서와 service account 함정, 항목별 RPO, 합격 기준, 실측 RTO.
OPC UA monitored item queue, discard policy, Overflow 비트가 클라이언트가 모든 변화를 받을지 최신 값만 받을지 정한다.
사람이 안 외우는 계정에 90일 주기는 맞지 않다. IEC 62443-3-3 SR 1.2의 service account 위치, 숨은 credential, 교체가 깨지는 곳.
ack와 reset이 비트 하나를 쓰면 고장이 남아도 알람이 사라진다. active, latch, ack, return-to-normal, reset을 나누는 법.
faceplate가 5초 걸려 열리는 화면. first-load와 update 지연을 나눠 재고 태그 수·scan class·trend 조회·PLC 부하 순으로 좁힌다.
WAN 장애 때 MQTT edge가 데이터를 잃는 이유. source timestamp, sequence number, replay 정책으로 historian 공백을 막는다.
E5 HCACK/CPACK을 실제 S2F41 capture로 읽는다. HCACK=4, E30 control state, T3 만료 후 START 중복을 막는 retry.
Event frame과 batch segment는 경계가 맞아야 쓸모 있다. 시작·종료 트리거 위치, 캡처할 속성, 닫히지 않은 frame 처리.
설비 event로 lot 이력을 만들 때 깨지는 곳: lot context, GEM clock, spool replay 순서, split/merge, correction.
Modbus write 응답은 접수일 뿐 설비 동작이 아니다. Function code, permissive, readback, retry 함정으로 write를 명령답게 다룬다.
OPC UA method call은 Good을 돌려주고도 장비가 안 움직일 수 있다. HMI에 접수, 실행, 실패 사유를 보여주는 method call 설계.
Calculated tag는 어느 순간 공식 숫자가 된다. 리포트와 MES가 쓰기 전에 수식, quality, 기간 경계, counter reset을 실제 sample로 확인한다.
Alarm banner filter는 suppression이 아니다. ISA-18.2가 둘을 나누는 이유, 기본 view, hidden alarm count, flood 시험.
IEC 62443-3-3 SR 5.2와 SR 1.13 기준으로 SCADA 원격 지원 경로를 설계하고, 시운전에서 막히는 쪽까지 시험하는 방법. 포트와 timeout 숫자 포함.
한 화면은 stopped, 다른 리포트는 faulted라고 한다. Raw signal을 하나의 derived status tag로 정리하고 판정 순서를 문서에 남기는 방법.
알람 on-delay, off-delay, debounce, deadband를 공정 시간과 ISA-18.2로 정한다. 첫 실제 경고는 살리고 nuisance alarm만 거른다.
알람 flood는 시작 원인을 묻어 버린다. First-out을 지키고, SOE timestamp를 신뢰하고, 통신 장애가 nuisance flood로 번지지 않게 하는 방법.
화면 상태를 command bit가 아닌 feedback으로 몰고, timeout을 실제 actuator 행정으로 잡고, 왜 reject됐는지 운전자에게 보여주는 방법.
S2F33/S2F35/S2F37로 collection event를 define, link, enable하는 순서, restart 후 report가 비는 이유, S6F11 검증법.
SCADA 방화벽 룰을 데이터 흐름에서 시작해 시운전하는 법. 커트오버 때 터지는 보조 서비스 경로를 잡고 룰마다 실제 앱으로 시험한다.
OPC UA 이중화 서버 failover 시운전 절차: ServiceLevel, subscription 복구, 인증서, 그리고 운전자보다 먼저 stale 데이터를 잡아내는 방법.
보안을 끄면 되고 켜면 끊기는 OPC UA 연결을 trust store, 인증서 이름, endpoint 순서로 잡는 법.
범위, 공학 단위, word order, NAMUR 고장 임계값, quality를 확인해 PLC·SCADA·히스토리언이 같은 값을 보게 하는 스케일링 시운전.
SCADA 히스토리언 타임스탬프가 틀어지는 원인 — 클록 드리프트, NTP와 PTP, OPC UA 소스 시간, 지연 데이터, 서머타임 — 을 보고서 분쟁 전에 잡는 법.
장치 한 대가 멈추거나 RTU 게이트웨이가 포화돼도 SCADA 드라이버 전체가 같이 느려지지 않도록 Modbus TCP 폴링 주기, 타임아웃, 재시도, 스캔 그룹을 정하는 법.
SCADA와 산업용 텔레메트리에서 MQTT QoS, retained message, 세션, 중복 메시지, 명령 토픽을 어떻게 나눠 볼지 정리한 현장 노트.
OPC UA 샘플링·퍼블리싱 주기, 큐 크기, deadband, KeepAlive/Lifetime이 SCADA와 히스토리언이 공정을 제대로 보는지 정한다.
회선이 살아나면 store-and-forward 버퍼가 몇 시간 전 값을 밀어 넣는다. 기준 타임스탬프, 덮어쓰기 규칙, 표시, 배포한 숫자의 수정 여부.
HMI에서 퍼미시브, 인터록, inhibit, bypass, 명령 가능 상태, first-out 원인을 현장 운전에 맞게 보여주는 방법입니다.
Modbus 예외 응답을 프레임 단위로 읽고, 통신 불량과 요청 거절을 구분하며, 잘못된 주소·게이트웨이·폴링 부하 원인을 좁히는 방법.
PLC 다운로드나 서버 교체 후 세션은 정상인데 Bad_NodeIdUnknown이 온다. namespace index, identifier, 클라이언트 캐시를 본다.
알람 합리화 워크숍에서 알람을 줄이는 기준, 우선순위 조정, 조치 문구 정리 방법을 다룹니다.
MES 비가동 사유 코드를 현장에서 제대로 선택되게 만드는 법. 입력 프롬프트 타이밍, PackML 상태 기반 자동 분류, 리포트에 실제로 필요한 필드까지 정리했습니다.
MQTT Last Will, Birth, retain 메시지로 SCADA 화면에서 오프라인·데이터 정지·정상을 서로 다른 상태로 표시하는 방법입니다.
OPC UA 인증서 만료로 통신이 끊기지 않도록 갱신 절차와 확인 항목을 정리합니다.
히스토리언 데드밴드와 압축을 HMI 소수점이 아니라 계기 정확도와 공정 기준으로 정해, 노이즈는 저장하지 않으면서 실제 움직임은 트렌드에 남기는 방법.
모드는 누가 명령할 수 있는가, 상태는 지금 뭘 하고 있는가다. SEMI E30 GEM 제어 상태 모델에 맞춰 HMI 표시 칸을 나누는 방법과 커미셔닝 확인 항목.
소켓은 열리고 unit ID도 응답하고 폴도 정상인데 화면 값만 틀린 경우. SCADA와 히스토리안이 신뢰하기 전에 레지스터 맵을 검증하는 방법.
장비가 멈춰도 SCADA 화면은 그럴듯한 숫자를 보여준다. 하트비트, 와치독, stale-data 태그로 데이터 신선도를 보이게 하는 법과 시운전.
태그 이름, 알람 개수, 화면 계층, 단선 처리, 재시작 후 명령 상태. 프로젝트 후반에 고치면 비싼 다섯 가지 결정과 ISA-18.2, ISA-101.01, NAMUR NE 43이 정해 놓은 기준.
이름 변경 하나로 구독과 히스토리언 포인트가 깨지지 않게 group_id·edge_node_id·device_id를 잡는 법. birth, alias, STATE까지.
SCADA 네트워크 장애를 장비, 케이블, IP, 포트, 프로토콜 순서로 좁혀 가는 점검 절차입니다.
S5F1은 ALCD, ALID, ALTX다. ALCD 8번 비트가 set/clear를 정하고, 놓치면 MES 알람이 안 꺼진다. 재시작 후 S5F5/S5F6 복구까지.
히스토리언을 단순 저장소가 아니라 문제 추적과 운전 개선을 위한 시간 데이터 기반으로 설명합니다.
OPC UA 클라이언트 시운전에서 엔드포인트, 보안 정책, 인증서, 구독 품질을 확인하는 절차입니다.
이상 상황의 운전자 질문에 답하는 트렌드 화면. 루프 단위 묶기, 스케일 선택, 통신 끊김을 매끄러운 선으로 덮지 않기.
개별 태그 값을 작업자가 이해할 수 있는 설비 운영 상태로 묶는 방법을 설명합니다.
모터, 밸브, 인버터 같은 반복 장비를 일관된 방식으로 조작하기 위한 페이스플레이트 설계 기준입니다.
산업용 이더넷 스위치 시운전에서 숫자로 확인할 것. IGMP querier와 260초, auto-negotiation 반이중 함정, RSTP 20초와 IEC 62439-2 링 복구 등급, 프로토콜별 실제 포트 번호.
ISA-18.2가 나누는 보류·설계 억제·운영 제외·인터록 바이패스의 차이와, 숨긴 알람마다 담당자와 기록이 남게 설정하는 방법.
SCADA 시운전에서 태그, 화면, 알람, 트렌드, 권한, 장애 상황을 확인하는 실무 체크리스트입니다.
SCADA 태그 이름을 설비, 신호 의미, 데이터 성격이 드러나도록 정리하는 실무 기준입니다.
태그 값이 화면의 운영 상태로 바뀌는 과정을 직접 따라가며 확인하는 튜토리얼입니다.
알람을 많이 만드는 것보다 작업자가 조치할 수 있는 알람만 남기는 것이 왜 중요한지 설명합니다.
OPC UA와 MQTT를 어느 쪽이 더 좋은가가 아니라, 현장 통합 목적에 따라 어떻게 나눠 쓸지 설명합니다.
Modbus TCP를 처음 붙일 때 주소, 레지스터 타입, 워드 순서, 폴링 주기에서 자주 틀리는 지점을 정리합니다.
SCADA 태그가 단순 변수명이 아니라 통신 주소, 단위, 품질, 알람, 이력 설정을 연결하는 기준점임을 설명합니다.
HMI, SCADA, MES, 히스토리언을 역할 기준으로 구분하고 현장 아키텍처에서 어디까지 책임져야 하는지 정리합니다.
SCADA를 PLC 위의 단순 화면이 아니라, 설비 상태를 모으고 작업자가 판단할 수 있게 만드는 운영 계층으로 설명합니다.