영문화완료
This commit is contained in:
@@ -20,9 +20,9 @@ namespace Project
|
||||
if (free < 3.0)
|
||||
{
|
||||
string msg = "FREE SPACE ERROR\n" +
|
||||
"디스크 공간(3%)이 부족하여 작업을 진행할 수 없습니다\n" +
|
||||
"저장경로 : {0}\n" +
|
||||
"데이터를 삭제하거나 설정의 삭제주기를 확인하세요";
|
||||
"Insufficient disk space (3%) to proceed with the work\n" +
|
||||
"Storage path: {0}\n" +
|
||||
"Please delete data or check the deletion cycle in settings";
|
||||
msg = string.Format(msg, AR.SETTING.Data.GetDataPath());
|
||||
PUB.popup.setMessage(msg);
|
||||
DIO.SetBuzzer(true);
|
||||
@@ -34,7 +34,7 @@ namespace Project
|
||||
|
||||
if (PUB.Result.isSetmModel == false)
|
||||
{
|
||||
string msg = "모션모델이 선택되지 않았습니다\n작업모델의 'MOTION'항목을 확인하세요";
|
||||
string msg = "Motion model not selected\nPlease check the 'MOTION' item in the work model";
|
||||
PUB.popup.setMessage(msg);
|
||||
DIO.SetBuzzer(true);
|
||||
PUB.sm.SetNewStep(eSMStep.IDLE);
|
||||
@@ -109,11 +109,11 @@ namespace Project
|
||||
if (PUB.flag.get(eVarBool.FG_USERSTEP))
|
||||
{
|
||||
PUB.flag.set(eVarBool.FG_USERSTEP, false, "STACHKSW");
|
||||
PUB.log.AddI("작업 시작으로 인해 H/W검사 무시기능을 해제 함");
|
||||
PUB.log.AddI("H/W inspection ignore function disabled due to work start");
|
||||
}
|
||||
|
||||
//공용변수초기화
|
||||
PUB.log.Add("공용변수(카운트)값 초기화");
|
||||
PUB.log.Add("Common variable (count) values initialized");
|
||||
VAR.I32.Clear((int)eVarInt32.LPickOfCount);
|
||||
VAR.I32.Clear((int)eVarInt32.LPickOnCount);
|
||||
VAR.I32.Clear((int)eVarInt32.RPickOfCount);
|
||||
@@ -136,7 +136,7 @@ namespace Project
|
||||
PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false);
|
||||
PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true);
|
||||
PUB.Result.BCDPrintPattern = PUB.GetPrintPatterns();
|
||||
PUB.log.Add($"모델패턴로딩:{PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
|
||||
PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
|
||||
|
||||
//변환SID SID확인여부데이터 삭제
|
||||
PUB.Result.DTSidConvertEmptyList.Clear();
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace Project
|
||||
//}
|
||||
if (VAR.DBL[eVarDBL.CONVL_RUNTIME] > 15)
|
||||
{
|
||||
PUB.log.AddE($"(L) 컨베이어 15초 초과로 버퍼 클리어");
|
||||
PUB.log.AddE($"(L) Buffer cleared due to conveyor exceeding 15 seconds");
|
||||
VAR.I32[eVarInt32.LEFT_ITEM_COUNT] = 0;
|
||||
}
|
||||
else return false;
|
||||
@@ -144,7 +144,7 @@ namespace Project
|
||||
//}
|
||||
if (VAR.DBL[eVarDBL.CONVR_RUNTIME] > 15)
|
||||
{
|
||||
PUB.log.AddE($"(R) 컨베이어 15초 초과로 버퍼 클리어");
|
||||
PUB.log.AddE($"(R) Buffer cleared due to conveyor exceeding 15 seconds");
|
||||
VAR.I32[eVarInt32.RIGT_ITEM_COUNT] = 0;
|
||||
}
|
||||
else return false;
|
||||
@@ -222,7 +222,7 @@ namespace Project
|
||||
}
|
||||
|
||||
if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false;
|
||||
PUB.log.AddAT($"###### 처음 작업 회피 이동 완료({target})");
|
||||
PUB.log.AddAT($"###### Initial work avoidance movement completed ({target})");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -293,7 +293,7 @@ namespace Project
|
||||
//sPositionData Pos = target == eWorkPort.Left ? MOT.GetPXPos(ePXLoc.READYL) : MOT.GetPXPos(ePXLoc.READYR);
|
||||
if (MOT.getPositionMatch(Pos) == false)
|
||||
{
|
||||
PUB.log.AddAT($"######비젼데이터없으므로 회피이동II({target})");
|
||||
PUB.log.AddAT($"######Avoidance movement II due to no vision data({target})");
|
||||
MOT.Move(Pos);
|
||||
}
|
||||
return false;
|
||||
@@ -315,7 +315,7 @@ namespace Project
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
PUB.log.Add("사용자 선택창(INF)을 호출 합니다");
|
||||
PUB.log.Add("Calling user selection window (INF)");
|
||||
var f = new Dialog.fSelectSIDInformation();
|
||||
f.Show();
|
||||
}));
|
||||
@@ -337,19 +337,19 @@ namespace Project
|
||||
bool ShowUserFormBCD = false;
|
||||
if (AR.SETTING.Data.RetryPickOnMaxCount == 0)
|
||||
{
|
||||
PUB.log.Add($"픽온 재시작 횟수가 없어 사용자 확인창을 띄웁니다");
|
||||
PUB.log.Add($"Showing user confirmation window due to no pick-on retry count");
|
||||
ShowUserFormBCD = true;
|
||||
}
|
||||
else if (AR.VAR.I32[AR.eVarInt32.PickOnRetry] >= AR.SETTING.Data.RetryPickOnMaxCount)
|
||||
{
|
||||
PUB.log.Add($"픽온 재시도 횟수가 초과됨 (최대:{AR.SETTING.Data.RetryPickOnMaxCount})");
|
||||
PUB.log.Add($"Pick-on retry count exceeded (Max: {AR.SETTING.Data.RetryPickOnMaxCount})");
|
||||
ShowUserFormBCD = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (VAR.BOOL[eVarBool.Need_UserConfirm_Data])
|
||||
{
|
||||
PUB.log.Add($"사용자확인창을 띄워야함");
|
||||
PUB.log.Add($"Need to show user confirmation window");
|
||||
ShowUserFormBCD = true;
|
||||
}
|
||||
else
|
||||
@@ -357,12 +357,12 @@ namespace Project
|
||||
//읽은데이터가 atkstandard라면 바로 팝업을 띄운다
|
||||
if (PUB.Result.ItemDataC.VisionData.SID.isEmpty() || PUB.Result.ItemDataC.VisionData.SID_Trust == false)
|
||||
{
|
||||
PUB.log.Add($"픽온을 재시도 합니다 ({AR.VAR.I32[AR.eVarInt32.PickOnRetry]}/{AR.SETTING.Data.RetryPickOnMaxCount})");
|
||||
PUB.log.Add($"Retrying pick-on ({AR.VAR.I32[AR.eVarInt32.PickOnRetry]}/{AR.SETTING.Data.RetryPickOnMaxCount})");
|
||||
ShowUserFormBCD = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB.log.Add($"SID값이 있으니 재시도하지 않고 사용자확인창을 띄웁니다");
|
||||
PUB.log.Add($"SID value exists, showing user confirmation window instead of retrying");
|
||||
ShowUserFormBCD = true;
|
||||
}
|
||||
}
|
||||
@@ -372,7 +372,7 @@ namespace Project
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
var itemC = PUB.Result.ItemDataC;
|
||||
PUB.log.Add("사용자 확인창을 호출 합니다");
|
||||
PUB.log.Add("Calling user confirmation window");
|
||||
var f = new Dialog.fLoaderInfo(itemC.VisionData.bcdMessage);
|
||||
f.Show();
|
||||
}));
|
||||
@@ -384,7 +384,7 @@ namespace Project
|
||||
VAR.I32[eVarInt32.PickOnRetry] += 1;//, 1);
|
||||
VAR.BOOL[eVarBool.JOB_PickON_Retry] = true;
|
||||
|
||||
PUB.log.Add($"픽온재시도 ({VAR.I32[eVarInt32.PickOnRetry]})");
|
||||
PUB.log.Add($"Pick-on retry ({VAR.I32[eVarInt32.PickOnRetry]})");
|
||||
PUB.sm.seq.Update(cmdIndex, -2);
|
||||
}
|
||||
}
|
||||
@@ -397,7 +397,7 @@ namespace Project
|
||||
else VAR.BOOL[eVarBool.wait_for_keyenceR] = false;
|
||||
|
||||
PUB.Result.ItemDataC.VisionData.ReelSize = DIO.getCartSize(1);
|
||||
PUB.log.AddI($"[{target}] 키엔스 확인 완료(크기:{PUB.Result.ItemDataC.VisionData.ReelSize})");
|
||||
PUB.log.AddI($"[{target}] Keyence verification completed (Size: {PUB.Result.ItemDataC.VisionData.ReelSize})");
|
||||
PUB.log.AddI($"[{target}] Print Position:{PUB.Result.ItemDataC.VisionData.PrintPositionData}");
|
||||
|
||||
|
||||
@@ -412,7 +412,7 @@ namespace Project
|
||||
PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_F);
|
||||
//PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_F);
|
||||
PUB.Result.ItemDataC.CopyTo(ref PUB.Result.ItemDataL);
|
||||
PUB.log.Add($"[{target}] 비젼데이터 카피 (C->L) ID:{PUB.Result.ItemDataL.VisionData.RID}");
|
||||
PUB.log.Add($"[{target}] Vision data copy (C->L) ID:{PUB.Result.ItemDataL.VisionData.RID}");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -423,7 +423,7 @@ namespace Project
|
||||
PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_R);
|
||||
//PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_R);
|
||||
PUB.Result.ItemDataC.CopyTo(ref PUB.Result.ItemDataR);
|
||||
PUB.log.Add($"[{target}] 비젼데이터 카피 (C->R) ID:{PUB.Result.ItemDataR.VisionData.RID}");
|
||||
PUB.log.Add($"[{target}] Vision data copy (C->R) ID:{PUB.Result.ItemDataR.VisionData.RID}");
|
||||
}
|
||||
|
||||
//트리거 OFF
|
||||
@@ -454,7 +454,7 @@ namespace Project
|
||||
|
||||
if (OPT_BYPASS)
|
||||
{
|
||||
PUB.log.Add($"바이패스이므로 이전 릴아이디 검사 안함");
|
||||
PUB.log.Add($"Bypass mode - skipping previous reel ID check");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -471,7 +471,7 @@ namespace Project
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB.log.Add($"신규아이디 사용체크 OK PRE={pre_ridN},NEW={cur_ridN}");
|
||||
PUB.log.Add($"New ID usage check OK PRE={pre_ridN},NEW={cur_ridN}");
|
||||
|
||||
if (pre_ridO.isEmpty() == false && cur_ridO.isEmpty() == false) //구형아이디는 둘다 값이 있을때 처리한다.
|
||||
{
|
||||
@@ -482,24 +482,24 @@ namespace Project
|
||||
else
|
||||
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.PRE_USE_REELID_R, eNextStep.ERROR, target, pre_ridO, cur_ridO);
|
||||
}
|
||||
else PUB.log.Add($"신규아이디 사용체크(ORG) OK PRE={pre_ridO},NEW={cur_ridO}");
|
||||
else PUB.log.Add($"New ID usage check (ORG) OK PRE={pre_ridO},NEW={cur_ridO}");
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB.log.Add($"신규아이디 사용체크(ORG) SKIP(NODATA) PRE={pre_ridO},NEW={cur_ridO}");
|
||||
PUB.log.Add($"New ID usage check (ORG) SKIP (NO DATA) PRE={pre_ridO},NEW={cur_ridO}");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB.log.Add($"처음작업하므로 이전 릴아이디 검사 안함");
|
||||
PUB.log.Add($"First work - skipping previous reel ID check");
|
||||
}
|
||||
|
||||
VAR.STR[eVarString.PrePick_ReelIDNew] = cur_ridN;
|
||||
VAR.STR[eVarString.PrePick_ReelIDOld] = cur_ridO;
|
||||
VAR.STR[eVarString.PrePick_ReelIDTarget] = target.ToString();
|
||||
|
||||
PUB.log.Add($"이전작업릴ID설정 값 N={cur_ridN},O={cur_ridO}");
|
||||
PUB.log.Add($"Previous work reel ID set values N={cur_ridN},O={cur_ridO}");
|
||||
}
|
||||
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
@@ -536,7 +536,7 @@ namespace Project
|
||||
// if (cvrun < 6) return false;
|
||||
//}
|
||||
}
|
||||
PUB.log.Add($"CVMODE에서 컨베이어 비어있음(SEQ)");
|
||||
PUB.log.Add($"Conveyor empty in CV MODE (SEQ)");
|
||||
}
|
||||
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
@@ -571,7 +571,7 @@ namespace Project
|
||||
{
|
||||
PUB.sm.seq.Clear(eSMStep.RUN_PICKER_OFF_L);
|
||||
//PUB.Result.ItemData[1].CopyTo(ref PUB.Result.ItemData[0]);
|
||||
PUB.log.Add($"바코드데이터 복제(LEFT)");
|
||||
PUB.log.Add($"Barcode data copy (LEFT)");
|
||||
|
||||
PUB.flag.set(eVarBool.FG_BUSY_LEFT, true, funcName);
|
||||
//프린터용 AIR처리해준다.
|
||||
@@ -583,7 +583,7 @@ namespace Project
|
||||
{
|
||||
PUB.sm.seq.Clear(eSMStep.RUN_PICKER_OFF_R);
|
||||
//PUB.Result.ItemData[1].CopyTo(ref PUB.Result.ItemData[0]);
|
||||
PUB.log.Add($"바코드데이터 복제(RIGHT)");
|
||||
PUB.log.Add($"Barcode data copy (RIGHT)");
|
||||
|
||||
PUB.flag.set(eVarBool.FG_BUSY_RIGHT, true, funcName);
|
||||
//프린터용 AIR처리해준다.
|
||||
@@ -592,7 +592,7 @@ namespace Project
|
||||
//PUB.Result.ItemData[1].UpdateTo(ref PUB.Result.ItemData[2]);
|
||||
}
|
||||
|
||||
PUB.Result.ItemDataC.Clear($"[{target}] 픽온완료"); //전송했으니 지운다
|
||||
PUB.Result.ItemDataC.Clear($"[{target}] Pick-on completed"); //Clear after transmission
|
||||
|
||||
KeyenceBarcodeDataF = string.Empty;
|
||||
KeyenceBarcodeDataR = string.Empty;
|
||||
@@ -626,14 +626,14 @@ namespace Project
|
||||
if (PUB.Result.PrintPostionList.ContainsKey(sid) == false)
|
||||
{
|
||||
PUB.Result.PrintPostionList.Add(sid, prn);
|
||||
PUB.log.AddAT($"프린트위치저장 SID:{sid} = {prn}");
|
||||
PUB.log.AddAT($"Print position saved SID:{sid} = {prn}");
|
||||
}
|
||||
else
|
||||
{
|
||||
var predata = PUB.Result.PrintPostionList[sid];
|
||||
if (predata != prn)
|
||||
{
|
||||
PUB.log.AddAT($"프린트위치저장값 변경 SID:{sid} = {predata} -> {prn}");
|
||||
PUB.log.AddAT($"Print position save value changed SID:{sid} = {predata} -> {prn}");
|
||||
PUB.Result.PrintPostionList[sid] = prn;
|
||||
}
|
||||
}
|
||||
@@ -964,7 +964,7 @@ namespace Project
|
||||
if (SETTING.Data.SystemBypass == false)
|
||||
{
|
||||
rlt = PUB.UpdateWMS(item.VisionData); //rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out errmsg);
|
||||
PUB.log.AddE("WMS전송" + (rlt ? "성공" : "실패") + $":{errmsg}");
|
||||
PUB.log.AddE("WMS transmission " + (rlt ? "success" : "failed") + $": {errmsg}");
|
||||
if (rlt == false) //230927 - 오류발생시
|
||||
{
|
||||
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INBOUNDWEBAPIERROR, eNextStep.PAUSE, target, errmsg);
|
||||
@@ -975,7 +975,7 @@ namespace Project
|
||||
{
|
||||
errmsg = "bypass";
|
||||
rlt = false;
|
||||
PUB.log.AddAT($"System bytpass 로 인해 WMS 저장 안함");
|
||||
PUB.log.AddAT($"WMS save disabled due to System bypass");
|
||||
}
|
||||
if (errmsg.Length > 190) errmsg = errmsg.Substring(0, 190); //230810 maxlength error
|
||||
SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), (rlt ? "OK" : errmsg), "root_sequence");
|
||||
@@ -1004,7 +1004,7 @@ namespace Project
|
||||
}
|
||||
|
||||
VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now;
|
||||
PUB.log.AddI($"[{target}] 작업완료");
|
||||
PUB.log.AddI($"[{target}] Work completed");
|
||||
PUB.sm.seq.Clear(cmdIndex);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace Project
|
||||
//데이터가 완료되었는지 확인
|
||||
if (itemC.VisionData.Confirm)
|
||||
{
|
||||
PUB.log.AddAT("비젼 데이터 완료로 인해 바코드 메세지를 제거 합니다");
|
||||
PUB.log.AddAT("Removing barcode messages due to vision data completion");
|
||||
itemC.VisionData.bcdMessage.Clear();
|
||||
return EResultKeyence.Complete;
|
||||
}
|
||||
@@ -58,12 +58,12 @@ namespace Project
|
||||
{
|
||||
if (PUB.Result.DryRun)
|
||||
{
|
||||
PUB.log.Add($"[{target}] DRY-RUN 으로 인한 완료");
|
||||
PUB.log.Add($"[{target}] Completed due to DRY-RUN");
|
||||
SetDryrunData();
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB.logDbg.Add($"[{target}] 키엔스 읽기 시작");
|
||||
PUB.logDbg.Add($"[{target}] Keyence reading started");
|
||||
if (PUB.keyenceF != null) PUB.keyenceF.Trigger(true);
|
||||
if (PUB.keyenceR != null) PUB.keyenceR.Trigger(true);
|
||||
}
|
||||
@@ -535,7 +535,7 @@ namespace Project
|
||||
//이미 수량업데이트된 경우이므로 복원시켜준다
|
||||
if (itemC.VisionData.QTY0.isEmpty() == false)
|
||||
{
|
||||
PUB.log.AddAT($"릴아이디 변경으로 인해 수량을 복원합니다({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})");
|
||||
PUB.log.AddAT($"Restoring quantity due to reel ID change ({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})");
|
||||
itemC.VisionData.QTY = itemC.VisionData.QTY0;
|
||||
itemC.VisionData.QTY0 = string.Empty;
|
||||
}
|
||||
@@ -546,7 +546,7 @@ namespace Project
|
||||
var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR);
|
||||
if (logtime.TotalSeconds >= 3000)
|
||||
{
|
||||
PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}");
|
||||
PUB.log.AddAT($"Reel_ID generation failed : {newid.message}");
|
||||
VAR.TIME.Update(eVarTime.LOG_NEWIDERROR);
|
||||
}
|
||||
}
|
||||
@@ -558,11 +558,11 @@ namespace Project
|
||||
{
|
||||
//이미 완료된 데이터
|
||||
if (itemC.VisionData.ConfirmAuto)
|
||||
PUB.log.AddI($"데이터확정완료(자동)로 인한 진행");
|
||||
PUB.log.AddI($"Proceeding due to data confirmation completion (automatic)");
|
||||
else if (itemC.VisionData.ConfirmUser)
|
||||
PUB.log.AddI($"데이터확정완료(수동)로 인한 진행");
|
||||
PUB.log.AddI($"Proceeding due to data confirmation completion (manual)");
|
||||
else
|
||||
PUB.log.AddI($"데이터확정완료(BYPASS)로 인한 진행");
|
||||
PUB.log.AddI($"Proceeding due to data confirmation completion (BYPASS)");
|
||||
}
|
||||
else if (itemC.VisionData.QRInputRaw.isEmpty() == false && itemC.VisionData.BATCH.isEmpty() == false)
|
||||
{
|
||||
@@ -646,24 +646,24 @@ namespace Project
|
||||
//수량원본이 없는 경우
|
||||
if (item.VisionData.QTY0.isEmpty())
|
||||
{
|
||||
string msg = "서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택";
|
||||
string msg = "Server quantity update feature is not applicable to WMS, contact developer if needed";
|
||||
var cnt = 0;// (int)(Amkor.RestfulService.get_stock_count(item.VisionData.RID, out msg));
|
||||
if (mainjob)
|
||||
{
|
||||
PUB.log.AddE("서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택");
|
||||
PUB.log.AddE("Server quantity update feature is not applicable to WMS, contact developer if needed");
|
||||
}
|
||||
if (cnt > 0)
|
||||
{
|
||||
//새로받은 데이터를 실제 수량에 추가한다
|
||||
item.VisionData.QTY0 = item.VisionData.QTY;
|
||||
item.VisionData.QTY = cnt.ToString();
|
||||
if (mainjob) PUB.log.Add($"서버수량업데이트 RID:{item.VisionData.RID} 구:{item.VisionData.QTY},신:{cnt}");
|
||||
if (mainjob) PUB.log.Add($"Server quantity update RID:{item.VisionData.RID} Old:{item.VisionData.QTY}, New:{cnt}");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mainjob) PUB.log.AddE($"수량업데이트 실패 rID:{item.VisionData.RID},Message={msg}");
|
||||
if (mainjob) PUB.log.AddE($"Quantity update failed rID:{item.VisionData.RID}, Message={msg}");
|
||||
NeedConfirm = true;
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("수량 업데이트 실패");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("Quantity update failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -678,19 +678,19 @@ namespace Project
|
||||
if (rqBcd.Value != null)
|
||||
{
|
||||
var newqty = rqBcd.Value.Data.Substring(2).Trim();
|
||||
if (mainjob) PUB.log.Add($"수량업데이트(01) {item.VisionData.QTY}->{newqty}");
|
||||
if (mainjob) PUB.log.Add($"Quantity update (01) {item.VisionData.QTY}->{newqty}");
|
||||
item.VisionData.QTY = newqty;
|
||||
if (mainjob) PUB.log.AddI("수량수동입력상태이나 RQ값이 확인되어 사용자 확인을 하지 않음");
|
||||
if (mainjob) PUB.log.AddI("Manual quantity input mode but RQ value confirmed, no user confirmation required");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("RQ값 오류 (자동불가)");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("RQ value error (auto mode not possible)");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("수량 수동 입력 필요");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("Manual quantity input required");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -752,7 +752,7 @@ namespace Project
|
||||
{
|
||||
if (NeedConfirm == false)
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("사용자 확인 필요");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("User confirmation required");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -766,7 +766,7 @@ namespace Project
|
||||
//프린트를 하지 않는다면 처리하지 않는다.
|
||||
if (VAR.BOOL[eVarBool.Opt_DisablePrinter] == false)
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("첫번째 릴 확인 필요");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("First reel confirmation required");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -778,7 +778,7 @@ namespace Project
|
||||
{
|
||||
if (NeedConfirm == false)
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("SID변환값 확인 필요");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("SID conversion value confirmation required");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -793,7 +793,7 @@ namespace Project
|
||||
{
|
||||
item.VisionData.PrintPositionData = "1";
|
||||
item.VisionData.PrintPositionCheck = true;
|
||||
PUB.log.AddI($"바이패스SID({item.VisionData.SID})로 인해 인쇄위치 임의지정");
|
||||
PUB.log.AddI($"Print position arbitrarily set due to bypass SID ({item.VisionData.SID})");
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -804,12 +804,12 @@ namespace Project
|
||||
var preprnpos = PUB.Result.PrintPostionList[item.VisionData.SID];
|
||||
item.VisionData.PrintPositionData = preprnpos;
|
||||
item.VisionData.PrintPositionCheck = true;
|
||||
PUB.log.AddI($"현 작업정보에서 프린트위치 찾음 SID:{item.VisionData.SID},값={preprnpos}");
|
||||
PUB.log.AddI($"Print position found in current job info SID:{item.VisionData.SID}, Value={preprnpos}");
|
||||
}
|
||||
else if (NeedConfirm == false)
|
||||
{
|
||||
//현작업내에서의 정보를 찾아서 적용한다 231005
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("부착위치 없음");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("Attachment position not found");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -839,13 +839,13 @@ namespace Project
|
||||
{
|
||||
if (OPT_BYPASS)
|
||||
{
|
||||
PUB.log.Add("데이터가 모두 확인되어 자동 확정을 진행 합니다(bypassmode)");
|
||||
PUB.log.Add("All data confirmed, proceeding with automatic confirmation (bypass mode)");
|
||||
if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear();
|
||||
item.VisionData.ConfirmBypass = true;
|
||||
}
|
||||
else if (item.VisionData.ConfirmAuto == false)
|
||||
{
|
||||
PUB.log.Add("데이터가 모두 확인되어 자동 확정을 진행 합니다");
|
||||
PUB.log.Add("All data confirmed, proceeding with automatic confirmation");
|
||||
if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear();
|
||||
item.VisionData.ConfirmAuto = true;
|
||||
}
|
||||
@@ -858,7 +858,7 @@ namespace Project
|
||||
if (mainjob)
|
||||
{
|
||||
NeedConfirm = true;
|
||||
PUB.log.AddAT($"데이터가 완료되지 않았으나 QR을 읽은 상태이므로 바로 확인창을 띄운다");
|
||||
PUB.log.AddAT($"Data incomplete but QR has been read, showing confirmation window immediately");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -875,7 +875,7 @@ namespace Project
|
||||
}
|
||||
else if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false)
|
||||
{
|
||||
PUB.logDbg.Add($"비젼 자동 확정 처리 {Source}");
|
||||
PUB.logDbg.Add($"Vision automatic confirmation processing {Source}");
|
||||
PUB.Result.ItemDataC.VisionData.ConfirmAuto = true;
|
||||
}
|
||||
|
||||
@@ -885,7 +885,7 @@ namespace Project
|
||||
private void SetDryrunData()
|
||||
{
|
||||
var item = PUB.Result.ItemDataC;
|
||||
PUB.log.AddAT("드라이런 기본 데이터 입력");
|
||||
PUB.log.AddAT("Dry run basic data input");
|
||||
if (item.VisionData.QTY.isEmpty()) item.VisionData.QTY = DateTime.Now.ToString("HHmm");
|
||||
if (item.VisionData.MFGDATE.isEmpty()) item.VisionData.MFGDATE = DateTime.Now.ToString("yy-MM-dd");
|
||||
if (item.VisionData.SID.isEmpty()) item.VisionData.SID = "108" + "0" + DateTime.Now.ToString("HH").PadLeft(2, '0') + DateTime.Now.ToString("fff").PadLeft(3, '0');
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace Project
|
||||
//####################################################
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
PUB.log.Add($"[{target}] 피커 ON 작업시작");
|
||||
PUB.log.Add($"[{target}] Picker ON work started");
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ namespace Project
|
||||
var PosZ = MOT.GetPZPos(ePZLoc.READY);
|
||||
if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false;
|
||||
if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false;
|
||||
PUB.log.Add($"[{target}] 피커 ON X,Y 준비위치 확인");
|
||||
PUB.log.Add($"[{target}] Picker ON X,Y ready position confirmed");
|
||||
DIO.SetPickerVac(true);
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
@@ -205,11 +205,11 @@ namespace Project
|
||||
{
|
||||
baseAngle = bcd.Angle;
|
||||
baseSource = bcd.barcodeSource; //230504 각도
|
||||
PUB.log.AddI($"[{target}] 각도산출내용:{msg},바코드:{bcd.Data},ID:{vdata.RID}"); //210602
|
||||
PUB.log.AddI($"[{target}] Angle calculation: {msg}, Barcode: {bcd.Data}, ID: {vdata.RID}"); //210602
|
||||
}
|
||||
else if (PUB.Result.DryRun)
|
||||
{
|
||||
PUB.log.AddAT($"[{target}] 드라이런으로 인해 각도를 적용하지 않음");
|
||||
PUB.log.AddAT($"[{target}] Angle not applied due to dry run");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -218,7 +218,7 @@ namespace Project
|
||||
|
||||
var addangle = baseSource == "R" ? SETTING.Data.RearBarcodeRotate : SETTING.Data.FrontBarcodeRotate;
|
||||
var rotAngle = baseAngle + addangle + vdata.PositionAngle;
|
||||
PUB.log.AddI($"[{target}]-소스:{baseSource} 회전값(Base:{baseAngle}+추가:{addangle}+비젼:{vdata.PositionAngle}={rotAngle})");
|
||||
PUB.log.AddI($"[{target}] Source: {baseSource} Rotation value (Base: {baseAngle} + Additional: {addangle} + Vision: {vdata.PositionAngle} = {rotAngle})");
|
||||
|
||||
int dir = -1;
|
||||
while (true)
|
||||
@@ -234,7 +234,7 @@ namespace Project
|
||||
dir = 1;
|
||||
}
|
||||
|
||||
PUB.log.AddI($"[{target}] 회전(최종) [{rotAngle}도,방향:{dir}],RID:{vdata.RID}");
|
||||
PUB.log.AddI($"[{target}] Rotation (Final) [{rotAngle} degrees, Direction: {dir}], RID: {vdata.RID}");
|
||||
|
||||
if (target == eWorkPort.Left)
|
||||
PUB.Result.ItemDataL.VisionData.ApplyAngle = rotAngle; //회전각도를 넣는다
|
||||
@@ -243,7 +243,7 @@ namespace Project
|
||||
|
||||
var curtheta = PUB.mot.GetActPos((int)eAxis.Z_THETA);
|
||||
var newPos = curtheta + (dir * rotAngle);
|
||||
PUB.log.Add($"회전전 모터 위치 : {curtheta}, 대상위치:{newPos},속도:{thpos.Speed},가속:{thpos.Acc}");
|
||||
PUB.log.Add($"Motor position before rotation: {curtheta}, Target position: {newPos}, Speed: {thpos.Speed}, Acceleration: {thpos.Acc}");
|
||||
|
||||
if (target == eWorkPort.Left)
|
||||
VAR.DBL[(int)eVarDBL.ThetaPositionL] = newPos;
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace Project
|
||||
//####################################################
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
PUB.log.Add($"[{target}] 피커 RETRY 작업시작({PickerRetryCount}/{AR.SETTING.Data.RetryPickOnMaxCount})");
|
||||
PUB.log.Add($"[{target}] Picker RETRY work started ({PickerRetryCount}/{AR.SETTING.Data.RetryPickOnMaxCount})");
|
||||
|
||||
//기존자료를 모두 삭제 한다 221102
|
||||
if (PUB.Result.ItemDataC != null && PUB.Result.ItemDataC.VisionData != null && PUB.Result.ItemDataC.VisionData.barcodelist != null)
|
||||
@@ -218,7 +218,7 @@ namespace Project
|
||||
PUB.mot.ClearPosition((int)eAxis.Z_THETA);
|
||||
|
||||
if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false;
|
||||
PUB.log.AddAT($"###### 재시도 작업 회피 이동 완료({target})");
|
||||
PUB.log.AddAT($"###### Retry work avoidance movement completed ({target})");
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
}
|
||||
@@ -228,7 +228,7 @@ namespace Project
|
||||
//####################################################
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
PUB.log.Add($"retry 완료로 비젼데이터를 삭제 합니다");
|
||||
PUB.log.Add($"Deleting vision data due to retry completion");
|
||||
PUB.Result.ItemDataC.VisionData.Clear(funcName, true);
|
||||
AR.VAR.BOOL[eVarBool.JOB_PickON_Retry] = false;
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
|
||||
@@ -70,10 +70,10 @@ namespace Project
|
||||
if (DIO.GetIOInput(eDIName.R_CONV1)) return false;
|
||||
if (VAR.I32[eVarInt32.RIGT_ITEM_COUNT] > 0) return false;
|
||||
}
|
||||
PUB.log.Add($"CVMODE에서 컨베이어 비어있음");
|
||||
PUB.log.Add($"Conveyor is empty in CV MODE");
|
||||
}
|
||||
|
||||
PUB.log.Add($"[{target}] 피커 OFF 작업시작");
|
||||
PUB.log.Add($"[{target}] Picker OFF work started");
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
}
|
||||
@@ -87,7 +87,7 @@ namespace Project
|
||||
var Pos = target == eWorkPort.Left ? MOT.GetLMPos(eLMLoc.READY) : MOT.GetRMPos(eRMLoc.READY);
|
||||
if (MOT.getPositionMatch(Pos) == false)
|
||||
{
|
||||
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.POSITION_ERROR, eNextStep.PAUSE, "프린터 Y축이 준비위치에 있지 않습니다");
|
||||
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.POSITION_ERROR, eNextStep.PAUSE, "Printer Y-axis is not at ready position");
|
||||
return false;
|
||||
}
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
@@ -265,7 +265,7 @@ namespace Project
|
||||
{
|
||||
if (OPT_BYPASS == true || OPT_PrinterOff)
|
||||
{
|
||||
PUB.log.AddAT($"bypass 로 인해 추가 회전을 하지 않습니다");
|
||||
PUB.log.AddAT($"Additional rotation not performed due to bypass");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -285,7 +285,7 @@ namespace Project
|
||||
else VAR.DBL[(int)eVarDBL.ThetaPositionR] = theta + OffsetAngle;
|
||||
|
||||
if (AR.SETTING.Data.Log_Debug)
|
||||
PUB.logDbg.Add($"[{target}] 모션 추가회전 :{OffsetAngle}");
|
||||
PUB.logDbg.Add($"[{target}] Motor additional rotation: {OffsetAngle}");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -307,7 +307,7 @@ namespace Project
|
||||
var Pos = MOT.GetPTPos(ePTLoc.READY);
|
||||
Pos.Position = Theta;
|
||||
if (MOT.CheckMotionPos(seqTime, Pos, funcName, false) == false) return false;
|
||||
PUB.log.Add($"[{target}] 회전축 확인 완료 위치:{Theta},모터값:{PUB.mot.GetActPos((int)eAxis.Z_THETA)} => 위치초기화함");
|
||||
PUB.log.Add($"[{target}] Rotation axis verification complete Position: {Theta}, Motor value: {PUB.mot.GetActPos((int)eAxis.Z_THETA)} => Position initialized");
|
||||
PUB.mot.ClearPosition((int)eAxis.Z_THETA);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Project
|
||||
//####################################################
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
PUB.log.Add($"[{target}] 프린트 작업 시작");
|
||||
PUB.log.Add($"[{target}] Print operation started");
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ namespace Project
|
||||
item.VisionData.ZPL = zpl;
|
||||
item.VisionData.PrintQRData = qrdata;
|
||||
|
||||
PUB.log.Add("PRINT", $"[{target}] 프린트");//QR=" + item.VisionData.QRData);
|
||||
PUB.log.Add("PRINT", $"[{target}] Printing");//QR=" + item.VisionData.QRData);
|
||||
|
||||
if (target == eWorkPort.Left)
|
||||
{
|
||||
@@ -141,7 +141,7 @@ namespace Project
|
||||
}
|
||||
}
|
||||
}
|
||||
else PUB.log.AddAT($"[{target}] 프린터 기능 OFF(bypass or model or setting)");
|
||||
else PUB.log.AddAT($"[{target}] Printer function OFF (bypass or model or setting)");
|
||||
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace Project
|
||||
if (용지감지기능 == false)
|
||||
{
|
||||
if (seqTime.TotalMilliseconds < 100) return false;
|
||||
PUB.log.AddAT($"[{target}] 용지감지기능 OFF(3초후 진행)");
|
||||
PUB.log.AddAT($"[{target}] Paper detection function OFF(proceed after 3 seconds)");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -148,7 +148,7 @@ namespace Project
|
||||
if (용지감지기능 == false)
|
||||
{
|
||||
if (seqTime.TotalMilliseconds < 100) return false;
|
||||
PUB.log.AddAT($"[{target}] 용지감지기능 OFF(3초후 진행)");
|
||||
PUB.log.AddAT($"[{target}] Paper detection function OFF(proceed after 3 seconds)");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Project
|
||||
var retval = false;
|
||||
if (AR.SETTING.Data.OnlineMode == false)
|
||||
{
|
||||
PUB.log.AddAT($"[SAVE-EE] 오프라인으로 저장 하지 않음");
|
||||
PUB.log.AddAT($"[SAVE-EE] Not saving in offline mode");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace Project
|
||||
{
|
||||
//카메라 트리거 전송
|
||||
var sendok = WS_Send(target, WS, item.guid, "TRIG", item.VisionData.PrintQRData);
|
||||
PUB.log.Add($"바코드트리거전송({target}) = {sendok}");
|
||||
PUB.log.Add($"Barcode trigger transmission ({target}) = {sendok}");
|
||||
if(sendok==false) //230512 전송실패시 오류로 한다
|
||||
{
|
||||
PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.VISION_TRIGERROR, eNextStep.PAUSE);
|
||||
@@ -73,7 +73,7 @@ namespace Project
|
||||
{
|
||||
if (VAR.BOOL[eVarBool.VisionL_Retry] == false)
|
||||
{
|
||||
PUB.log.AddAT("비젼(L) 1회 실패로 재 시도 합니다");
|
||||
PUB.log.AddAT("Vision (L) failed once, retrying");
|
||||
VAR.BOOL[eVarBool.VisionL_Retry] = true;
|
||||
PUB.sm.seq.Update(cmdIndex, -1);
|
||||
return false;
|
||||
@@ -92,7 +92,7 @@ namespace Project
|
||||
{
|
||||
if (VAR.BOOL[eVarBool.VisionR_Retry] == false)
|
||||
{
|
||||
PUB.log.AddAT("비젼(R) 1회 실패로 재 시도 합니다");
|
||||
PUB.log.AddAT("Vision (R) failed once, retrying");
|
||||
VAR.BOOL[eVarBool.VisionR_Retry] = true;
|
||||
PUB.sm.seq.Update(cmdIndex, -1);
|
||||
return false;
|
||||
@@ -121,12 +121,12 @@ namespace Project
|
||||
{
|
||||
if (PUB.flag.get(eVarBool.FG_END_VISIONL)) //종료신호가 설정되어있다면 완료된 경우다
|
||||
{
|
||||
PUB.log.AddI($"{target} 비젼 종료 신호로 인해 완료 처리 합니다");
|
||||
PUB.log.AddI($"{target} Completed processing due to vision end signal");
|
||||
item.PrintQRValid = true;
|
||||
}
|
||||
else if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false) //사용자가 취소했다면 넘어간다
|
||||
{
|
||||
PUB.log.AddAT($"{target} 사용자 취소로 QR검증을 넘김");
|
||||
PUB.log.AddAT($"{target} Skip QR verification due to user cancellation");
|
||||
item.PrintQRValid = false;
|
||||
}
|
||||
else return false; //아직 완료전이므로 리턴한다
|
||||
@@ -135,12 +135,12 @@ namespace Project
|
||||
{
|
||||
if (PUB.flag.get(eVarBool.FG_END_VISIONR))
|
||||
{
|
||||
PUB.log.AddI($"{target} 비젼 종료 신호로 인해 완료 처리 합니다");
|
||||
PUB.log.AddI($"{target} Completed processing due to vision end signal");
|
||||
item.PrintQRValid = true;
|
||||
}
|
||||
else if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false) //사용자가 취소했다면 넘어간다
|
||||
{
|
||||
PUB.log.AddAT($"{target} 사용자 취소로 QR검증을 넘김");
|
||||
PUB.log.AddAT($"{target} Skip QR verification due to user cancellation");
|
||||
item.PrintQRValid = false;
|
||||
}
|
||||
else return false; //아직 완료전이므로 리턴한다
|
||||
@@ -157,7 +157,7 @@ namespace Project
|
||||
//####################################################
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
PUB.log.Add($"{target} 비젼 검증 완료(결과:{item.PrintQRValid})");
|
||||
PUB.log.Add($"{target} Vision verification completed (Result: {item.PrintQRValid})");
|
||||
|
||||
if (target == eWorkPort.Left)
|
||||
PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, funcName);
|
||||
|
||||
Reference in New Issue
Block a user