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) 기록
|
// Scout Complete 비트(PC→PLC) 고정 펄스: ON → SCOUT_COMPLETE_PULSE_MS 유지 → OFF.
|
||||||
private void WriteScoutCompleteBit(eBitOutput completeBit, bool on, string phase)
|
// (CheckCycleStop이 항상 CheckPageNo로 루프백 → WriteCompletionPLCBit 미도달이므로 여기서 직접 OFF까지 처리)
|
||||||
|
private const int SCOUT_COMPLETE_PULSE_MS = 400;
|
||||||
|
private void PulseScoutCompleteBit(eBitOutput completeBit, string phase)
|
||||||
{
|
{
|
||||||
_PLC.WriteBit((int)completeBit, on);
|
_PLC.WriteBit((int)completeBit, true);
|
||||||
Log.I($"[{phase}Scout] {completeBit} = {on}");
|
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 ───────────────────────────────────────────
|
// ── 용접 전 Scout ───────────────────────────────────────────
|
||||||
@ -948,7 +953,7 @@ namespace ILSOS_PrismaticRD_PTOP.Sequences
|
|||||||
Log.E("[PreScout] Scout 실패 → 시퀀스 중단");
|
Log.E("[PreScout] Scout 실패 → 시퀀스 중단");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
WriteScoutCompleteBit(eBitOutput.PC_PRE_WELD_SCOUT_COMPLETE, true, "Pre");
|
PulseScoutCompleteBit(eBitOutput.PC_PRE_WELD_SCOUT_COMPLETE, "Pre");
|
||||||
Log.I("[PreScout] 완료 → UploadWeldingList 이동");
|
Log.I("[PreScout] 완료 → UploadWeldingList 이동");
|
||||||
return SequenceAction.Ok();
|
return SequenceAction.Ok();
|
||||||
}
|
}
|
||||||
@ -973,7 +978,7 @@ namespace ILSOS_PrismaticRD_PTOP.Sequences
|
|||||||
Log.E("[PostScout] Scout 실패 → 시퀀스 중단");
|
Log.E("[PostScout] Scout 실패 → 시퀀스 중단");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
WriteScoutCompleteBit(eBitOutput.PC_POST_WELD_SCOUT_COMPLETE, true, "Post");
|
PulseScoutCompleteBit(eBitOutput.PC_POST_WELD_SCOUT_COMPLETE, "Post");
|
||||||
Log.I("[PostScout] 완료 → CheckCycleStop 이동");
|
Log.I("[PostScout] 완료 → CheckCycleStop 이동");
|
||||||
return SequenceAction.Ok();
|
return SequenceAction.Ok();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user