using OrpaonEMS.App.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrpaonEMS.App.Models
{
///
/// 判断是不是夜晚充的电量
/// 判断模型
///
public class NightChargEleModel
{
public NightChargEleModel(ConfigDataService configDataService)
{
MasterCheck = DischargInfo.NoComplete;
SlaveCheck = DischargInfo.NoComplete;
ConfigDataService = configDataService;
}
///
/// 是否开始校验
///
public bool IsStartCheck { get; set; }
///
/// 夜间充的电 主储能箱是否放完
///
public DischargInfo MasterCheck { get; set; }
///
/// 夜间充的电 从储能箱是否放完
///
public DischargInfo SlaveCheck { get; set; }
private double _MasterSoc;
///
/// 主储能柜的SOC
/// 在新的一天中,根据SOC达到阈值决定是否夜间的电放完
///
public double MasterSoc
{
get
{
return _MasterSoc;
}
set
{
if (IsStartCheck)
{
if (_MasterSoc != value && value <= ConfigDataService.energyStorageRunConfig.BMSSocDownSignLimitValue)
{
MasterCheck = DischargInfo.DischargComplete;
_MasterSoc = value;
}
}
else
{
_MasterSoc = value;
}
}
}
private double _SlaveSoc;
///
/// 从储能柜的SOC
/// 在新的一天中,根据SOC达到阈值决定是否夜间的电放完
///
public double SlaveSoc
{
get
{
return _SlaveSoc;
}
set
{
if (IsStartCheck)
{
if (_SlaveSoc != value && value <= ConfigDataService.energyStorageRunConfig.BMSSocDownSignLimitValue)
{
SlaveCheck = DischargInfo.DischargComplete;
_SlaveSoc = value;
}
}
else
{
_SlaveSoc = value;
}
}
}
///
/// 配置数据
///
public ConfigDataService ConfigDataService { get; }
/////
///// 获取状态
/////
/////
//public bool GetCheckState()
//{
// return MasterCheck && SlaveCheck;
//}
///
/// 设置一天的初始状态
///
public void SetDayInitState(double Mastersoc, double Slavesoc)
{
//比如从夜间切换到白天,算是一天的开始,判断此时的SOC是否被充满,如果是充满的话,则是属于夜间低谷的电量,需要标记
IsStartCheck = true;
if (Mastersoc >= ConfigDataService.energyStorageRunConfig.BMSSocUpSignLimitValue * 0.8)
{
MasterCheck = DischargInfo.NoComplete;
}
else
{
MasterCheck = DischargInfo.DischargComplete;
}
//理论是从储能充电60%
if (Slavesoc >= 50)
{
SlaveCheck = DischargInfo.NoComplete;
}
else
{
SlaveCheck = DischargInfo.DischargComplete;
}
}
///
/// 设置白天结束的状态
///
public void SetDayEndState()
{
IsStartCheck = false;
}
}
///
/// 放电信息
///
public enum DischargInfo
{
///
/// 放电放完了
///
DischargComplete = 1,
///
/// 没有完成
///
NoComplete = 2
}
}