Files
WebUITest-RealProjecT/Handler/Project/RunCode/RunSequence/0_RUN_STARTCHK_SW.cs
2025-11-25 20:14:41 +09:00

168 lines
6.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AR;
namespace Project
{
public partial class FMain
{
async public Task<bool> _SM_RUN_STARTCHKSW(bool isFirst, TimeSpan stepTime)
{
var mc = PUB.Result.mModel;
var mv = PUB.Result.vModel;
double free = 0;
var savepath = PUB.getSavePath(out free);
if (free < 3.0)
{
string msg = "FREE SPACE ERROR\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);
PUB.sm.SetNewStep(eSMStep.IDLE);
return false;
}
if (PUB.Result.isSetmModel == false)
{
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);
return false;
}
//모션의 모든 위치가 원점이 아니라면 홈 초기화를 요청한다.
var initMsg = "";
if (initMsg != "")
{
PUB.popup.setMessage(initMsg);
DIO.SetBuzzer(true);
PUB.sm.SetNewStep(eSMStep.IDLE);
return false;
}
//모델정보가 설정되어있는지 확인
if (PUB.Result == null ||
PUB.Result.vModel == null ||
PUB.Result.vModel.Title.isEmpty())
{
PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELV, eNextStep.ERROR);
return false;
}
//모션모델자동선택 230823
var motionmode = VAR.BOOL[eVarBool.Use_Conveyor] ? "Conveyor" : "Default";
if (PUB.SelectModelM(motionmode) == false)
{
PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELM, eNextStep.ERROR);
return false;
}
//모델정보가 설정되어있는지 확인
if (PUB.Result == null ||
PUB.Result.mModel == null ||
PUB.Result.mModel.Title.isEmpty())
{
PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELM, eNextStep.ERROR);
return false;
}
//ECS데이터확인 230823
var conv = VAR.BOOL[eVarBool.Use_Conveyor];
if (conv)
{
var sidinfo = await PUB.UpdateSIDInfo();
var systembypass = SETTING.Data.SystemBypass;
if (systembypass == false && sidinfo.Item1 == false)
{
PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOECSDATA, eNextStep.ERROR, sidinfo.Item2);
return false;
}
//else if (systembypass == false && sidinfo.Item3 < 1)
//{
// PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOECSDATAACTIVE, eNextStep.ERROR, sidinfo.Item2);
// return false;
//}
}
//SID변환정보 필요 230823
//이값도 테이블에서 실시간으로 조회되므로 미리 불러올 필요 없다
//사용자추가정보 필요 230823
//기존에 사용하던 사용자 추가 정보
//ECS정보가 수신되면 기존 TABLE 을 삭제하는 구조이므로 병행할수 없음
//데이터는 테이블에서 실시간으로 조 회됨
//사용자스텝실행
if (PUB.flag.get(eVarBool.FG_USERSTEP))
{
PUB.flag.set(eVarBool.FG_USERSTEP, false, "STACHKSW");
PUB.log.AddI("H/W inspection ignore function disabled due to work start");
}
//Auto Reel Out 250926
PUB.Result.AutoReelOut = PUB.Result.vModel.AutoOutConveyor > 0;
//공용변수초기화
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);
VAR.I32.Clear((int)eVarInt32.RPickOnCount);
VAR.I32.Clear((int)eVarInt32.PickOfCount);
VAR.I32.Clear((int)eVarInt32.PickOnCount);
VAR.I32.Clear((int)eVarInt32.PickOnRetry); //221102
PUB.flag.set(eVarBool.FG_RUN_LEFT, false, "POSREST");
PUB.flag.set(eVarBool.FG_RUN_RIGHT, false, "POSREST");
VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] = false;
VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] = false;
VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] = false;
AutoConvOutTimeL = new DateTime(1982, 11, 23);
AutoConvOutTimeR = new DateTime(1982, 11, 23);
PUB.Result.ItemDataL.Clear("START_CHKSW");
PUB.Result.ItemDataC.Clear("START_CHKSW");
PUB.Result.ItemDataR.Clear("START_CHKSW");
var modelName = PUB.Result.vModel.Title;
lock (PUB.Result.BCDPatternLock)
{
PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false);
PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true);
PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
}
//변환SID SID확인여부데이터 삭제
PUB.Result.DTSidConvertEmptyList.Clear();
PUB.Result.DTSidConvertMultiList.Clear();
PUB.Result.JobStartTime = DateTime.Now;
warninactivelist.Clear();
//작업락기능해제
LockPK.Set();
LockUserL.Set();
LockUserR.Set();
return true;
}
}
}