Files
ENIG/HMI/Project/StateMachine/Step/_SM_RUN_READY.cs
ChiKyun Kim 58ca67150d 파일정리
2026-01-29 14:03:17 +09:00

78 lines
3.4 KiB
C#

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;
}
}
}