using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AR; using COMM; using Project.StateMachine; namespace Project { public partial class fMain { public Boolean _SM_RUN_READY(bool isFirst, TimeSpan stepTime) { ////이동 불가 조건이 걸려있다면 충전을 하지 못하게 한다. //Boolean bAutoChageOn = true; //if (PUB.AGV.system1.stop_by_front_detect) bAutoChageOn = false; //else if (PUB.AGV.error.Emergency) bAutoChageOn = false; //else if (VAR.BOOL[eVarBool.FLAG_CHARGEONA]) bAutoChageOn = false; //else if (VAR.BOOL[eVarBool.FLAG_CHARGEONM]) bAutoChageOn = false; //자동 충전 중이라면 최대 충전시간과 레벨을 체크한다 if (VAR.BOOL[eVarBool.FLAG_CHARGEONA] == true) { if (VAR.TIME.IsSet(eVarTime.ChargeStart) == false) VAR.TIME.Update(eVarTime.ChargeStart); //충전중이라면 최대 충전 시간을 체크한다. var tsChargeRunTime = VAR.TIME.RUN(eVarTime.ChargeStart); if (PUB.BMS.BMSInformation.rsoc >= PUB.setting.ChargeMaxLevel) { PUB.AGV.AGVCharge(PUB.setting.ChargerID, false); PUB.sm.ClearRunStep(); PUB.sm.SetNewRunStep(ERunStep.CHARGEOFF); PUB.sm.SetNewStep(eSMStep.RUN); PUB.log.Add($"최대충전레벨 OVER로 인한 자동 해제(레벨:{PUB.setting.ChargeMaxLevel})"); PUB.AddEEDB($"최대충전레벨 OVER로 인한 자동 해제(레벨:{PUB.setting.ChargeMaxLevel})"); PUB.Speak(Lang.충전완료로해제합니다); } else if (PUB.setting.ChargeMaxTime > 1 && tsChargeRunTime.TotalSeconds >= PUB.setting.ChargeMaxTime) { PUB.AGV.AGVCharge(PUB.setting.ChargerID, false); PUB.sm.ClearRunStep(); PUB.sm.SetNewRunStep(ERunStep.CHARGEOFF); PUB.sm.SetNewStep(eSMStep.RUN); PUB.log.Add($"최대충전시간 OVER로 인한 자동 해제(시간:{PUB.setting.ChargeMaxTime})"); PUB.AddEEDB($"최대충전시간 OVER로 인한 자동 해제(시간:{PUB.setting.ChargeMaxTime})"); PUB.Speak(Lang.충전완료로해제합니다); } VAR.STR[eVarString.ChargeCheckMsg] = "자동 충전 중"; } else if (VAR.BOOL[eVarBool.FLAG_CHARGEONM] == true) { if (VAR.TIME.IsSet(eVarTime.ChargeStart) == false) VAR.TIME.Update(eVarTime.ChargeStart); VAR.STR[eVarString.ChargeCheckMsg] = "수동 충전"; } //대기모드에서는 움직이지 않게 한다 //if(PUB.AGV.system1.agv_run) //{ // var ts = VAR.TIME.RUN(eVarTime.IdleStopTime); // if(ts.TotalSeconds > 1) // { // PUB.log.Add($"대기상태에서는 정차"); // PUB.AGV.AGVMoveStop("대기상태에서는 정차"); // VAR.TIME.Update(eVarTime.IdleStopTime); // } //} return false; } } }