fix: Scout Complete 비트 400ms 고정 펄스로 변경
기존: PreScoutDone/PostScoutDone에서 Complete를 ON으로 래치만 함. CheckCycleStop이 항상 CheckPageNo로 루프백 → WriteCompletionPLCBit (RestoreDeviceStatus) 미도달이라 정상 운전 중 OFF되지 않고 정지까지 ON 유지. 변경: PulseScoutCompleteBit로 ON→400ms 유지→OFF 고정 펄스. 시간값은 SCOUT_COMPLETE_PULSE_MS 상수로 관리. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5e01c9a63c
commit
f6da65f9f4
@ -920,11 +920,16 @@ namespace ILSOS_PrismaticRD_PTOP.Sequences
|
||||
};
|
||||
}
|
||||
|
||||
// Scout Complete 비트(PC→PLC) 기록
|
||||
private void WriteScoutCompleteBit(eBitOutput completeBit, bool on, string phase)
|
||||
// Scout Complete 비트(PC→PLC) 고정 펄스: ON → SCOUT_COMPLETE_PULSE_MS 유지 → OFF.
|
||||
// (CheckCycleStop이 항상 CheckPageNo로 루프백 → WriteCompletionPLCBit 미도달이므로 여기서 직접 OFF까지 처리)
|
||||
private const int SCOUT_COMPLETE_PULSE_MS = 400;
|
||||
private void PulseScoutCompleteBit(eBitOutput completeBit, string phase)
|
||||
{
|
||||
_PLC.WriteBit((int)completeBit, on);
|
||||
Log.I($"[{phase}Scout] {completeBit} = {on}");
|
||||
_PLC.WriteBit((int)completeBit, true);
|
||||
Log.I($"[{phase}Scout] {completeBit} = true (펄스 {SCOUT_COMPLETE_PULSE_MS}ms)");
|
||||
Thread.Sleep(SCOUT_COMPLETE_PULSE_MS);
|
||||
_PLC.WriteBit((int)completeBit, false);
|
||||
Log.I($"[{phase}Scout] {completeBit} = false (펄스 종료)");
|
||||
}
|
||||
|
||||
// ── 용접 전 Scout ───────────────────────────────────────────
|
||||
@ -948,7 +953,7 @@ namespace ILSOS_PrismaticRD_PTOP.Sequences
|
||||
Log.E("[PreScout] Scout 실패 → 시퀀스 중단");
|
||||
return null;
|
||||
}
|
||||
WriteScoutCompleteBit(eBitOutput.PC_PRE_WELD_SCOUT_COMPLETE, true, "Pre");
|
||||
PulseScoutCompleteBit(eBitOutput.PC_PRE_WELD_SCOUT_COMPLETE, "Pre");
|
||||
Log.I("[PreScout] 완료 → UploadWeldingList 이동");
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
@ -973,7 +978,7 @@ namespace ILSOS_PrismaticRD_PTOP.Sequences
|
||||
Log.E("[PostScout] Scout 실패 → 시퀀스 중단");
|
||||
return null;
|
||||
}
|
||||
WriteScoutCompleteBit(eBitOutput.PC_POST_WELD_SCOUT_COMPLETE, true, "Post");
|
||||
PulseScoutCompleteBit(eBitOutput.PC_POST_WELD_SCOUT_COMPLETE, "Post");
|
||||
Log.I("[PostScout] 완료 → CheckCycleStop 이동");
|
||||
return SequenceAction.Ok();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user