변경 내용: - CellInfoScheduler: ReportSlot 추가, 4단계 Shift() pending 슬롯을 _pendingFromReportSlot / _pendingFromComplete로 분리 TrySetLbadAvg(cellId, avg) 추가 — Complete→ReportSlot 순 폴백 탐색 - JigInfo: LbadAvg 필드 추가 (Clear/CopyFrom 포함) - StreamLightLBAD: MesReportReceived 이벤트 추가, 수신 시 발화 - ProcessManager: RegisterLbadStream() / OnLbadMesReportReceived() 추가 LBAD 콜백 처리를 시퀀스가 아닌 ProcessManager에서 담당 - SeqAutoRunCCWH52A: RegisterLbadStream 호출, ReportCellResult에서 report.LbadAvg 직접 사용
131 lines
4.6 KiB
C#
131 lines
4.6 KiB
C#
using AuroraLaserScanner;
|
|
using System;
|
|
using WeldingCommon.Data;
|
|
|
|
namespace ILSOS_CCW_H52A.Data
|
|
{
|
|
public class JigInfo
|
|
{
|
|
// --- 지그 식별 ---
|
|
public int JigNo; // 물리 지그 번호 (1-based, -1: 미설정)
|
|
|
|
// --- 스캐너 리스트 파라미터 (ReadyScannerList에서 채워짐) ---
|
|
public eListNo ListNo;
|
|
public DateTime WriteTime;
|
|
public double StartAngle;
|
|
public int WeldingCount;
|
|
|
|
// --- 캔 유무 / 용접 상태 ---
|
|
public bool IsCanExist;
|
|
public bool IsWelding;
|
|
public bool WeldComplete;
|
|
public DateTime WeldStartTime;
|
|
public DateTime WeldEndTime;
|
|
public TimeSpan WeldingSpanTime; // 스캐너 리스트 실행 시간 (GetTime() 결과)
|
|
|
|
// CellTracker 수신 정보
|
|
public string LotId;
|
|
public string CellId;
|
|
|
|
// LBAD MES Report 수신 값 — Complete 단계에서 콜백으로 채워짐, ReportSlot 단계에서 보고에 사용
|
|
public double LbadAvg;
|
|
|
|
// --- 플래그 ---
|
|
public bool CheckSendCellinfo;
|
|
public bool ReportComplete;
|
|
|
|
// --- 리포팅/뷰 용 상세 정보 ---
|
|
public WeldingData InnerCellInfo;
|
|
|
|
public JigInfo()
|
|
{
|
|
InnerCellInfo = new WeldingData();
|
|
Clear();
|
|
}
|
|
|
|
public void SetReportComplete(bool comp) => ReportComplete = comp;
|
|
|
|
/// <summary>
|
|
/// 다른 JigInfo의 모든 필드를 이 슬롯에 복사 (재시작 보존용 pendingSlot에 사용)
|
|
/// </summary>
|
|
public void CopyFrom(JigInfo src)
|
|
{
|
|
JigNo = src.JigNo;
|
|
ListNo = src.ListNo;
|
|
WriteTime = src.WriteTime;
|
|
StartAngle = src.StartAngle;
|
|
WeldingCount = src.WeldingCount;
|
|
IsCanExist = src.IsCanExist;
|
|
IsWelding = src.IsWelding;
|
|
WeldComplete = src.WeldComplete;
|
|
WeldStartTime = src.WeldStartTime;
|
|
WeldEndTime = src.WeldEndTime;
|
|
WeldingSpanTime = src.WeldingSpanTime;
|
|
LotId = src.LotId;
|
|
CellId = src.CellId;
|
|
LbadAvg = src.LbadAvg;
|
|
CheckSendCellinfo = src.CheckSendCellinfo;
|
|
ReportComplete = src.ReportComplete;
|
|
UpdateCellInfo(src.InnerCellInfo);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 슬롯 전체 초기화 (Shift 시 새 Prefetch2 슬롯에 자동 호출됨)
|
|
/// </summary>
|
|
public void Clear()
|
|
{
|
|
JigNo = -1;
|
|
ListNo = 0;
|
|
WriteTime = DateTime.MinValue;
|
|
StartAngle = 0.0;
|
|
WeldingCount = -1;
|
|
|
|
IsCanExist = false;
|
|
IsWelding = false;
|
|
WeldComplete = false;
|
|
WeldStartTime = DateTime.MinValue;
|
|
WeldEndTime = DateTime.MinValue;
|
|
WeldingSpanTime = TimeSpan.Zero;
|
|
|
|
LotId = string.Empty;
|
|
CellId = string.Empty;
|
|
LbadAvg = 0.0;
|
|
|
|
CheckSendCellinfo = false;
|
|
ReportComplete = false;
|
|
|
|
InnerCellInfo.Clear();
|
|
}
|
|
|
|
/// <summary>
|
|
/// InnerCellInfo를 WeldingData 로부터 필드 단위로 복사 (GC 할당 없음)
|
|
/// </summary>
|
|
public void UpdateCellInfo(WeldingData data)
|
|
{
|
|
InnerCellInfo.CellId = data.CellId;
|
|
InnerCellInfo.LotId = data.LotId;
|
|
InnerCellInfo.AutoRunStartTime = data.AutoRunStartTime;
|
|
InnerCellInfo.WeldingStartTime = data.WeldingStartTime;
|
|
InnerCellInfo.WeldingEndTime = data.WeldingEndTime;
|
|
InnerCellInfo.WeldingSpanTimeMilliseconds = data.WeldingSpanTimeMilliseconds;
|
|
InnerCellInfo.TodayProduct = data.TodayProduct;
|
|
InnerCellInfo.TotalProduct = data.TotalProduct;
|
|
InnerCellInfo.RecipeNo = data.RecipeNo;
|
|
InnerCellInfo.WeldStartTime = data.WeldStartTime;
|
|
InnerCellInfo.WeldTime = data.WeldTime;
|
|
InnerCellInfo.WorkCellId = data.WorkCellId;
|
|
InnerCellInfo.WorkLotId = data.WorkLotId;
|
|
InnerCellInfo.LBAD_Judge = data.LBAD_Judge;
|
|
InnerCellInfo.LDD_Judge = data.LDD_Judge;
|
|
InnerCellInfo.LaserPowerCore = data.LaserPowerCore;
|
|
InnerCellInfo.LaserPowerRing = data.LaserPowerRing;
|
|
InnerCellInfo.MarkSpeed = data.MarkSpeed;
|
|
InnerCellInfo.FocalLength = data.FocalLength;
|
|
InnerCellInfo.WeldingJigNo = data.WeldingJigNo;
|
|
InnerCellInfo.LaserPowerByLBAD = data.LaserPowerByLBAD;
|
|
InnerCellInfo.CheckCanExist = data.CheckCanExist;
|
|
InnerCellInfo.CheckScannerListEnd = data.CheckScannerListEnd;
|
|
}
|
|
}
|
|
}
|