레이스컨디션 발생으로 수정함

This commit is contained in:
최이근 2026-03-06 15:27:49 +09:00
parent bdd76349dc
commit cb935e251e
2 changed files with 9 additions and 2 deletions

View File

@ -35,7 +35,14 @@ namespace ILSOS_CCW_H52A.Data
{ {
private readonly Logger _log = new Logger("CellInfoScheduler"); private readonly Logger _log = new Logger("CellInfoScheduler");
public JigInfo Prefetch2 { get; private set; } // 전전 셀: 셀 정보 수신, 업로드 전 public JigInfo Prefetch2 { get; private set; } // 전전 셀: 셀 정보 수신, 업로드 전
public JigInfo Prefetch1 { get; private set; } // 전 셀: 업로드 완료, 실행 중 / 완료 체크 대상
// volatile: Shift()에서 Prefetch1 = Prefetch2 대입이 release fence 역할.
// EncoderMonitor 스레드가 Prefetch1을 읽을 때 acquire fence로 JigNo 등 모든 필드 가시성 보장.
private volatile JigInfo _prefetch1;
public JigInfo Prefetch1 {
get => _prefetch1;
private set => _prefetch1 = value;
}
/// 현재 보고 대상 JigInfo (CheckScannerListComplete에서 지정, 보고 완료 후 null) /// 현재 보고 대상 JigInfo (CheckScannerListComplete에서 지정, 보고 완료 후 null)
public JigInfo ReportTarget { get; set; } public JigInfo ReportTarget { get; set; }

View File

@ -964,7 +964,7 @@ namespace ILSOS_CCW_H52A.Sequences
var executeTarget = _CellScheduler.Prefetch1; var executeTarget = _CellScheduler.Prefetch1;
if (WeldingInPosition) { if (WeldingInPosition) {
if (executeTarget != null && executeTarget.IsCanExist) { if (executeTarget != null && executeTarget.IsCanExist && executeTarget.JigNo > 0) {
Log.I($"Fork Before Min Rotate Encoder X : ({encoderX}), Encoder Y : ({currentAngle}), PLC Rotary : ({CurrentPosPLC}), List {executeTarget.ListNo}, JigNo : ({executeTarget.JigNo})"); Log.I($"Fork Before Min Rotate Encoder X : ({encoderX}), Encoder Y : ({currentAngle}), PLC Rotary : ({CurrentPosPLC}), List {executeTarget.ListNo}, JigNo : ({executeTarget.JigNo})");
if (!_SystemParameter.BypassModeLBAD) { if (!_SystemParameter.BypassModeLBAD) {
if (!executeTarget.CheckSendCellinfo) { if (!executeTarget.CheckSendCellinfo) {