배경: 2026-08-12 현장 로그에 PLC_AUTO_REQ / PLC_MANUAL_REQ 를 직접 찍는 흔적이 없어,
PLC 가 REQ 를 준 것인지 PC 가 자체 버튼으로 움직인 것인지 사후 판별이 불가능했다.
기존 rising edge 분기는 ON 전이만 찍으므로 OFF 전이·상시 ON 여부도 알 수 없다.
추가:
- CheckPLCCommand 진입부에 M70501(AUTO_STATUS) / M70502(AUTO_REQ) / M70503(MANUAL_REQ)
의 ON/OFF 양방향 전이 로그. ChangeChecker 키를 ON/OFF 2개로 분리해 잡는다.
"AUTO/MANUAL 동시 ON -> return" 가드보다 앞에 두어 동시 ON 구간도 남긴다.
- EVENT_AUTO_RUN_START_REQUEST / STOP_REQUEST 발행 지점에 발행 사실 로그 2줄.
변화가 없으면 한 줄도 남지 않으므로 100ms 주기여도 로그 폭주는 없다.
원복: "[진단계측 2026-08-13]" region 통째로 삭제 + rising edge 분기의 Log.W 2줄 삭제.
PLC 측 회신(REQ 선행 문제 확인요청 3문항)으로 판정이 끝나면 제거할 것.
PLCController.DoActivate() 가 PLC 연결을 열기 전에 _monitorPlcInterfaceMap 을
기동해, 연결 확립 전 LiveStatusUpdate() 가 돌면서
ALARM_DEVICE_PLC_DISCONNECT(210002) 오알람이 매 기동마다 발생했다.
원인
- Livetimer 가 초기화되지 않아 DateTime.MinValue 상태 → (Now - MinValue) 가
항상 10000ms 를 초과해 워치독이 오판. 임계값 조정으로는 해결 불가.
- MicroTimer 첫 콜백이 주기(100ms) 뒤가 아니라 Start() 직후(약 1ms)라
경합이 아니라 100% 재현되는 결정적 버그.
실측 (2026-08-10 16:12:25.904)
Livetimer=0001-01-01, elapsed=63921975145904ms,
isLive=False, IsActivated=False, IsConnected=False
조치
- _monitorPlcInterfaceMap.Start() 를 base.DoActivate() 성공 이후로 이동
- Livetimer = DateTime.Now 로 기준시각 확보 후 타이머 기동
- 두 조치는 각각 단독으로는 무효. 반드시 함께 적용해야 한다.
- 수정 전/후를 #region 2개(검색: 260810 기동 오알람)로 기록해 원복 가능
검증: 2026-08-10 현장 재기동 확인 — 기동 시 210002 미발생
미해결(별건): Livetimer 이중 용도, ReadBit .err 무시, ClearAlarm 부재,
SeqAlarmMonitor 의 무지연 루프 및 Laser/Chiller 즉시 알람
상세: docs/분석_PLC210002_기동오알람_260810.md
작업일지: docs/작업일지/2026_08_10.md