78 lines
3.4 KiB
C#
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;
|
|
|
|
}
|
|
}
|
|
}
|